OpenFlow硬件交换机制作及刷机教程
1、目的
将普通路由器升级成为一台支持OpenFlow的交换机。
具体哪些路由器可以刷OpenFlow可以参考:OpenWRT:http://wiki.openwrt.org/toh/start#supported.hardware.-.router.type 或DD-WRT:http://www.dd-wrt.com/site/support/router-database
2、环境
- Cisco Valet Plus M20
- Ubuntu Linux 16.04(64 bit)
- Window 7(64 bit)
3、安装编译环境
在Ubuntu上安装相关编译环境:
$ sudo apt-get update
$ sudo apt-get install build-essential binutils flex \
bison autoconf gettext texinfo sharutils subversion \
libncurses5-dev ncurses-term zlib1g-dev gawk git-core unzip
4、下载源码编译
4.1方法一:从OpenWRT源码编译生成固件
(1)下载OpenWRT源码:
$ cd /home
$ git clone http://git.openwrt.org/15.05/openwrt.git
$ cd openwrt
(2)更新feeds:
$ mv feeds.conf.default feeds.conf
$ ./scripts/feeds update –a
$ ./scripts/feeds install –a
$ ./scripts/feeds install –a luci
(3)添加Openflow:
$ cd /home
$ git clone https://github.com/CPqD/openflow-openwrt.git
$ cd /home/openwrt/package/
$ ln –s /home/openflow-openwrt/openflow-1.3/
$ cd /home/openwrt/
$ ln –s /home/openflow-openwrt/openflow-1.3/files
(4)配置编译套件:
$ make menuconfig
四个重要配置如下:
选择CPU型号:Target System—Broadcom BCM47xx/53xx(MIPS)

选择系列号:Subtarget—MIPS 74K

选择路由器版本:Target Profile—Broadcom Soc,BCM43xx WiFi(b43)

添加OpenFlow:Network -> <*>openflow

其他配置如下:
添加luci:LuCI—>Collections—– <*> luci
添加ddns:LuCI—>Applications —> <*>luci-app-ddns
添加utf8:Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
注:CPU具体型号可以参考:https://wiki.openwrt.org/toh/start#supported.hardware.-.router.type
例如:Cisco Valet Plus M20 打开ViewEditdata具体信息如图所示

(5)编译
$ make V=99
执行完后:
在bin/brcm47xx/packges/base下生成openflow_1.0.0-1_brcm47xx.ipk
在bin/brcm47xx/下生成openwrt-15.05-brcm47xx-mips74k-squashfs.trx固件
4.2方法二:从OpenWRT ImageBuilder编译生成固件
Cisco M20相关资源下载网址:
http://downloads.openwrt.org/chaos_calmer/15.05/brcm47xx/mips74k/

(1)下载OpenWrt-ImageBuilder并解压到/home/ImageBuilder目录下
将openflow_1.0.0-1_brcm47xx.ipk拷贝到/packges/base/目录下
$ cp /home/openwrt/bin/brcm47xx/packges/base/openflow_1.0.0-1_brcm47xx.ipk /home/ImageBuilder/packges/base/
$ cd /home/ImageBuilder/
可以查看当前已有的预定义的型号信息(profile)
$ make info
可以查看命令格式
$ make help
(2)将openflow.ipk编译进固件
$ make image PROFILE="TLWR740" PACKAGES="luci-app-firewall luci-base luci-lib-ip luci-lib-nixio luci-mod-admin-full luci-proto-ppp luci-theme-bootstrap luci openflow“
(3)编译完成
生成固件:bin/brcm47XX/openwrt-15.05-brcm47xx-mips74k-squashfs.trx
5、刷机
5.1方法一:从网页直接刷入固件
打开浏览器,输入路由器地址:192.168.1.1

可以在Flash new fiemware image 选项编译好的固件刷入,等待路由器重启页面刷新,至此刷机完成。(注:从原厂刷入固件时,一般选择升级固件即可)
5.2方法二:登录路由器输入固件
Ubuntu系统下:
(1)将固件拷贝的路由器/tmp目录下
$ scp xxx.bin(文件名) root@192.168.1.1:/tmp(刷固件)
(2)ssh登入路由器
$ ssh root@192.168.1.1
(3)刷入固件
$ cd /tmp
$ mtd -r write xxx.bin(文件名) firmware(firmware或linux、OS1,这里是firmware)
Windows系统下:
(1)用HFS建立路由器固件文件的本地服务器
打开HFS,进入主菜单“Menu”的“IP address”子菜单;勾选内网IP,一般内网IP是“192.168.X.X”的形式,即路由分配给当前网卡的IP;在“Virtual File System”(虚拟文件系统)树状目录框中点鼠标右键弹出快捷菜单;选择“添加文件”,打开本地存储器路由器固件“xxx.bin”,看到“xxx.bin”出现在“Virtual File System”(虚拟文件系统)树状目录框中即表示已添加;可以在“Virtual File System”(虚拟文件系统)树状目录框中的“xxx.bin”上点鼠标右键弹出快捷菜单,选择“浏览”,如果网络浏览器弹出窗口显示下载“rf.bin”文件,即表示本地固件文件服务器成功运行。
(2)telnet 或 SSH 登录
$ telnet 192.168.1.1
$ cd /tmp
$ wget http://192.168.1.143/xxx.bin(192.168.1.143 地址为路由器给电脑分配的ip)
$ mtd -r write xxx.bin firmware
6部署配置OpenFlow
(1)与openflow相关的脚本
/etc/config/network
/etc/config/wireless
/etc/config/openflow
/lib/openflow/ofswitch.sh
(2)拷贝functions.sh
$ cp /lib/functions.sh /etc/
(3)配置openflow并设置远程控制器IP
$ vim /etc/config/openflow
config 'ofswitch'
option 'dp' 'dp0'
option 'dpid' '000000000001'
option 'ofports' 'eth0.1 eth0.2'
option 'ofctl' 'tcp:192.168.1.136:6633'
option 'mode' 'outofband'
(4)启动openflow:
$/etc/init.d/openflow start
(5)在远程控制器OpenDaylight web界面,可以看到openflow:1交换机连接上控制器。

OpenFlow硬件交换机制作及刷机教程的更多相关文章
- 小米刷机教程和GAE for android
小米上的刷机教程:http://www.miui.com/getrom.php?r=2gae for android :https://github.com/madeye/gaeproxy/wiki
- 努比亚Z7 mini刷机教程_recovery卡刷机教程
之前小编分享努比亚Z7 mini电话访问Root权限.recovery刷机教程. 所以对于朋友谁搞机整机的爱,左边是写第三方手机刷包.那么下面刷的家小编与您分享努比亚Z7 mini刷机教程手机. 一. ...
- 三星N8000/N8010通用刷机教程
前面已经讲到过如何给三星n8000/n8010 Galaxy Note 10.1获取ROOT权限了.接下来就顺便告诉大家怎么给三星n8000/n8010刷机吧.其实给三星n8000/n8010刷机过程 ...
- Jetson tk1 刷机教程
前期准备: 1. Jetson TK1开发板. 2. 安装有ubuntu系统的PC(或者ubuntu虚拟机)切记:不管是PC还是虚拟机,务必确保有大于5G的存储空间,之后安装过程会作详细解释. 3 ...
- 三星GT-N8010刷机教程
本刷机教程只针对三星GT-N8010机器(以下简称GT-N8010),以下操作本人已在GT-N8010机器上亲测,且都成功,其它机器没有测试不能保证成功. 刷机有风险,请谨慎使用!请先备份资料和信息. ...
- Android刷机教程
我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线,将手机关机 2. 关机后同时按住[音量减小键]和[开关机键]即可进入Fastboot模式 开启usb调试 - ...
- OpenWrt简要刷机教程
准备工作 1. 下载openwrt中文固件到PC.(当然其他英文固件也可) 2 找到路由器的RST键. 3 找到路由器刷机口---姑且称之为“WAN口” 4. 关闭路由器的电源. 5. 将PC网口 ...
- Essential Phone刷机教程
安装fastboot驱动(Essential-PH1-WindowsDrivers) 下载ADB刷机指令工具:platform-tools(ADB): 进入开发者选项,打开 USB 调试,OEM解锁选 ...
- K2路由器刷机教程
http://blog.sina.com.cn/s/blog_dc642faa0102x1on.html 方法:先降价——刷入breed——刷入固件 1.K2路由固件版本为V22.4.5.39 / V ...
随机推荐
- [ Android 五种数据存储方式之三 ] —— SQLite存储数据
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 ...
- gcd-函数
在网上看到了这个函数 int gcd(int a,int b){if(a==0) return b; if(b==0) return a; return gcd(b,a%b);} 是求最大公约数的 有 ...
- iOS多线程NSThread和GCD
在iOS中啊 其实有多种方法实现多线程 这里只记录两个比较常用的 或者说我比较常用的 一个就是BSThread 另一个就是一听名字就比较霸气的妇孺皆知的GCD 先说一下NSThread吧 这个方式 ...
- TTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
解决办法一: 控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能. 勾选上“.net扩展性”和“ASP.NET”,保存后,重 ...
- loadrunner:参数类型及其取值机制
参数类型 参数名随意取,建议取通俗易懂的名字,下面我们重点介绍一下参数的类型. ●DateTime: 很简单, 在需要输入日期/时间的地方, 可以用DateTime 类型来替代. 其属性设置也很简单, ...
- Java连接数据库(mysql,sqlserver)
犹记当年为了使用java程序连接mysql数据库花费一天时间,最后发现是没有导入外包,如今看来真的发现自己那时有点二,也怪我使用的教科书上没有说明这点(强行甩锅,哈哈).今天分享出来,,希望后者不因为 ...
- [html5] 学习笔记-编辑 API 之 Range 对象(一)
1.Range对象的基本概念 一个Range对象代表页面上的一段连续区域,通过Range对象,可以获取或修改网页上的任何区域. <!DOCTYPE html> <html> & ...
- 【java设计模式】之 模板方法(Template Method)模式
1. 模板方法的一个实例 这一节主要来学习一下设计模式中的模板方法模式.我们先来看一个例子:假如现在老板让你做一个汽车的模型,要求只要完成基本功能即可,不考虑扩展性,那你会怎么做呢?我们首先会根据经验 ...
- java系列笔记---正则表达式(2)
正则表达式 说真的正则表达式真不好写,当我收集资料准备开始写的时候,发现收集的东西越来越多范围也越来越广,我文章的前提就是文章要清晰, 在缕清自己思路之后,我从先简后难的方式来写有关正表达式,你们如果 ...
- java静态初始化代码块
/* * 为什么Java中为什么没有静态构造函数.其实Java中不叫静态构造函数,称作静态初始化,或者静态代码块. * 可以通过这样的代码实现相同的功能: */ public class test { ...