zoukankan      html  css  js  c++  java
  • 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交换机连接上控制器。

     

  • 相关阅读:
    java中Calendar类里面的月份是月份数减一。
    hdu oj
    存在重复元素
    杨辉三角
    删除链表的倒数第n个结点
    相交链表
    环形链表 II
    环形链表
    至少是其他数字两倍的最大数
    寻找数组的中心索引
  • 原文地址:https://www.cnblogs.com/spjy/p/6538281.html
Copyright © 2011-2022 走看看