OpenDaylight与Mininet应用实战之基本环境搭建一
简要介绍在没有OpenFlow硬件设备下如何搭建一个OpenFlow环境。控制器使用OpenDaylight(以下简写为ODL),是现在主流的控制器项目,功能比较完善。模拟OpenFlow设备使用Mininet,远比基于KVM的虚拟机应用更高效、更简洁,且更容易理解。
1 环境准备
主要的最简单的环境准备是:一台PC及安装VMware station(或VirtualBox)工作站用来承载VM。
2 ODL获取安装
可直接通过地址链接下载ODL的VM镜像: http://archive.openflow.org/wk/index.php?title=OpenDayLight_Tutorial,下载此镜像后,可用VMware station直接打开此VM,使用并启动ODL。如想具体了解ODL的安装详情,可搜索有关ODL的文档,会在技术文档中更新ODL的具体安装。
打开VM后,先进入OpenDaylight目录:
cd opendaylight/opendaylight/distribution/opendaylight/
再进入OpenDaylight启动目录:
cd target/distribution.opendaylight-package/opendaylight
执行:
run.sh
在浏览器中(VM环境或本地环境)输入http://[VM_IP]:8080可转到如下登录界面,其中[VM_IP]替换为控制器IP。登录用户名:admin,密码:admin,登录进入ODL的Web界面查看并可对ODL操作。
3 Mininet获取安装
Mininet主要是虚拟出OpenFlow交换机以及host主机节点,并且能通过自定义来构造用户想要的拓扑。虚拟OpenFlow交换机主要是使用基于Open vSwitch的应用。
从http://mininet.org/download/下载Mininet的VM镜像,打开此镜像后,用户名为mininet,密码为mininet。登录进入Mininet虚拟机,之后即可通过 mn命令来创建拓扑。后续也会提供Mininet的源码编译安装方法。
4 支持OpenFlow的wireshark插件安装
建议wireshark安装在ODL的VM上,因为ODL的VM是桌面版,可直接显示wireshark的抓包数据。1.6版本的wireshark要支持OpenFlow,需要做如下操作(注:此文档配置只支持1.6版本)。
4.1下载安装OpenFlow
$ sudo apt-get install git-core automake m4 pkg-config libtool
$ git clone git://openflow.org/openflow.git或git clone git://gitosis.stanford.edu/openflow.git
$ cd openflow
$ ./boot.sh
4.2 安装编译命令
在openflow目录下执行
$ sudo apt-get install gcc
$ ./configure
$ make
$ sudo make install
4.3 安装Wireshark Dissector(扫描器)
在openflow目录下,获取wireshark
$ sudo apt-get install wireshark libgtk2.0-dev
安装并编译:
$ cd utilities/wireshark_dissectors/openflow
修改utilities/wireshark_dissectors/openflow/packet-openflow.c文件的769行(注:“:set nu” 命令可显示行数)
dissector_add(TCP_PORT_FILTER, global_openflow_proto, openflow_handle) 改为: dissector_add_uint(TCP_PORT_FILTER,global_openflow_proto,openflow_handle)
修改保存后编译:
$ make
$ sudo make install
将编译好的库packet-openflow.so放入wireshark插件目录,命令如下:
$ scp packet-openflow.so /usr/lib/wireshark/libwireshark1/plugins/
查看目录/usr/lib/wireshark/libwireshark1/plugins/的文件,含有packet-openflow.so文件。
在root用户权限下执行命令,打开wireshark:
$ wireshark &
进入wireshark界面,在Help菜单下的“About Wireshark”中查看插件里是否有packet-openflow,下图表示插件添加成功。
在Filter中输入of可被识别(注:绿色表示输入正确),即可支持OpenFlow协议!
由于SDN的快速发展,wireshark官网更新的wireshark已有专门的版本(Stable Release (1.12.1)版本)支持OpenFlow协议,且支持of协议的多个版本,包括of1.0、1.1、1.2、1.3,有助于后续的多版本协议研究,所以可直接下载,进行安装使用,链接地址为:https://www.wireshark.org/download.html。
注意:
(1)其实ODL的VM中有支持OpenFlow协议的wireshark,但是,经测试,VM中自带的wireshark解析器抓包有问题,所以重新安装支持OpenFlow协议的wireshark。
(2)也可在Mininet所在的VM中安装wireshark,因Mininet虚拟机是server版,所以使用wireshark时,可使用Xming与Putty相结合,将X11中的转发功能勾选,远程登录此VM,通过执行wireshark抓包获取数据,使用putty如下图所示。
5 总结
本文主要是为后续了解ODL及Mininet做准备,通过ODL和Mininet的安装获取熟悉它们的基本概念。
- Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
- CodeSmith 创建Ado.Net自定义模版(四)
- TensorFlow图像分类教程
- Enterprise Library Policy Injection Application Block 之一: PIAB Overview
- Python教学——第七天
- 大数据将带来电视媒体生态式变革!大数据如何深度融合电视媒体?
- Silverlight SEO优化
- Silverlight性能优化
- WCF后续之旅(6): 通过WCF Extension实现Context信息的传递
- WCF后续之旅(6): 通过WCF Extension实现Context信息的传递
- 理性的相亲方法!精品课:《决策树》
- Asp.Net无刷新分页( jquery.pagination.js)
- 为什么网站需要用CDN来加速?
- Jmeter常用获取数据的几种方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel5.1框架路由分组用法实例分析
- PHP的HTTP客户端Guzzle简单使用方法分析
- laravel 框架实现无限级分类的方法示例
- 详解Laravel5.6通过路由进行API版本控制的简单方法
- php+layui数据表格实现数据分页渲染代码
- thinkPHP框架乐观锁和悲观锁实例分析
- PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
- laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
- Laravel框架实现即点即改功能的方法分析
- PHP使用PDO实现mysql防注入功能详解
- laravel接管Dingo-api和默认的错误处理方式
- PHP接入微信H5支付的方法示例
- PHP中用Trait封装单例模式的实现
- laravel 解决Validator使用中出现的问题
- php文件上传原理与实现方法详解