Pantou的任务是把OpenWRT的交换机配成一个支持OpenFlow协议的交换机. 我将Linksys WRT54GS V.3型交换机配成了Pantou, 下面是我的安装过程.

Pantou 官方主页(主页里LinkSys WRT54GL的镜像可直接下载使用, 若使用主页的镜像, 请直接跳至步骤二. 8.):
http://www.openflow.org/wk/index.php/Pantou_:_OpenFlow_1.0_for_OpenWRT

Openwrt_WRT54GS官方主页:
http://wiki.openwrt.org/toh/linksys/wrt54g

一. 添加 OpenWrt

1. 安装OpenWrt Buildsystem所需要的包:

apt-get install build-essential binutils flex bison autoconf gettext texinfo sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk


这里一共有12个包, 如果想避免安装途中出现问题又不好排除是哪个包的问题, 可一个一个安装

2. 建一个文件夹(官方的文件夹名字叫ofwrt)

mkdir ~/ofwrt

3. 将openwrt下载到新建文件夹内并更新

cd ~/ofwrt
svn co svn://svn.openwrt.org/openwrt/branches/backfire cd backfire
./scripts/feeds update -a
./scripts/feeds install -a

如果svn太慢可用git

git clone http://git.mirror.nanl.de/openwrt/branches/backfire.git

4. 配置Backfire(openwrt的一个稳定版本)

make menuconfig


我觉得默认配置就好

5. 若安装的额外的包, 即上一部配置过程中多选中的一些选项, 可检查一下:

make prereq

6. 编译安装backfir

make


成功后,会在ofwrt/bin中生成一大堆镜像(扩展名为.trx或.bin). 没成功就一个都没有

7. 将镜像加载进交换机中.
方法一: 网页 条件: 安装有web GUI的交换机 
1) 将电脑ip设成192.168.1.x, 网关255.255.255.0. 只要2<= x >=255即可, 接上交换机
2) 在电脑浏览器中打开http://192.168.1.1/Upgrade.asp 或http://192.168.1.1 → Administration → Firmware Upgrade
3) 选择镜像所在位置, 开始加载. 等待几分钟后, 就加载成功了(网页上无提示,  稍微等几分钟就好)

方法二: ssh 条件: 可用telnet或putty 连通交换机(连不通可用方法三)
1) 将电脑ip设为和交换机同网段

telnet <port IP>


若未更改交换机端口的ip, 则为192.168.1.1 若打开了ssh(设了密码), 请用命令: putty [交换机端口ip]
2) 在新打开的交换机窗口中:

cd /tmp
wget http://downloads.openwrt.org/backfire/10.03.1/brcm47xx/your_imge.trx
sysupgrade /tmp/your_image.trx

*用上述官方步骤加载镜像我还没成功过, 所以我更改了一些步骤
1) 在windows下安装软件WinSCP, 并把镜像也复制到windows上. WinSCP是一款可在两台主机用ssh复制传输文件的工具
2) 用WinSCP连接交换机, 并将镜像传到交换机的tmp目录下
3) 回到linux下(不想回去的话, 就下个putty.exe来用)

telnet <port IP>


4) 在新打开的交换机窗口中:

sysupgrade /tmp/your_image.trx


搞定!

方法三:
TFTP 条件: 未打开ssh(设了密码后就自动打开ssh, 并禁用了telnet)
1) 将电脑ip设为和交换机同网段

telnet <port IP>
#in the switch
nvram set boot_wait=on
nvram set boot_time=10
nvram commit && reboot


2) linux下的步骤: http://wiki.openwrt.org/doc/howto/generic.flashing.tftp
windows下的步骤:
a) 别忘了改ip和把镜像放到windows下
b) 开始>运行>cmd
c) 输入: ping 192.168.1.1 –t cmd的窗口就那么一直放着
d) 下载打开tftp.exe 路由器ip填入: 192.168.1.1 密码: 空 固件位置: <镜像位置> 然后也放着
e) 将交换机的一个lan口(非Internet口)和电脑相连 几秒后, 当cmd窗口显示的数据开始出现有TTL=100时, 点击tftp.exe的”更新固件” 等TTL=64时就成功了. 至此, 官方(非openflow版)的openwrt已经刷入交换机中了.

二. 添加OpenFlow 扩展包
电脑中操作
1. 下载openflow扩展包

cd ~/ofwrt/backfire/package
git clone git://gitosis.stanford.edu/openflow-openwrt


2. 得到我们这款交换机的分支

cd ~/ofwrt/backfire/package/openflow-openwrt
git checkout -b openflow-1.0/brcm origin/openflow-1.0/brcm


3. 把扩展包添加到backfire目录下(建个快捷方式而已)

cd ~/ofwrt/backfire/package/
ln -s openflow-openwrt/openflow-1.0/


4. 把基本配置文件填到到openwrt中(还是建个快捷方式)

cd ~/ofwrt/backfire/
ln -s package/openflow-openwrt/openflow-1.0/files


注意: 上面几步的部分目录在官方步骤中是错的, 参照官方步骤时要小心
5. 把关联包添加到配置中

cd ~/ofwrt/backfire
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig


在打开的配置窗口中需要将以下几个包选上: 在Target System和Target Profile中选择合适的平台(我选择默认的) 在network中选择openflow 和 tc 在Kernel Modules->Network Support中选择knomd-tun 保存退出
6. 添加支持给队列

make kernel_menuconfig


在Networking Support->Networking options->QoS中选择Hierarchical Token Bucket (HTB) 保存退出
7. 编译镜像

make V=99


成功后, bin文件夹里又有好多镜像了
8. 将镜像加载进交换机中,方法同步骤: 一. 7. 将镜像加载进交换机中).
9. 配置交换机
在交换机中进行 参考pantou网页和openwrt的网页
/etc/config/openflow

config 'ofswitch'
    option 'dp' 'dp0'
    option 'ofports' 'eth0.0 eth0.1 eth0.2 eth0.3'
    option 'ofctl' 'tcp:192.168.1.10:6633'
    option 'mode' 'outofband'

/etc/config/network

#### VLAN configuration
config switch eth0
    option enable   1
config switch_vlan eth0_0
    option device   "eth0"
    option vlan     0
    option ports    "0 5"
config switch_vlan eth0_1
    option device   "eth0"
    option vlan     1
    option ports    "1 5"
config switch_vlan eth0_2
    option device   "eth0"
    option vlan     2
    option ports    "2 5"
config switch_vlan eth0_3
    option device   "eth0"
    option vlan     3
    option ports    "3 5"
config switch_vlan eth0_4
    option device   "eth0"
    option vlan     4
    option ports    "4 5"
#### Loopback configuration
config interface loopback
    option ifname   "lo"
    option proto    static
    option ipaddr   127.0.0.1
    option netmask  255.0.0.0
#### LAN configuration
config interface
    option ifname   "eth0.0"
    option proto    static
config interface
    option ifname   "eth0.1"
    option proto    static
config interface
    option ifname   "eth0.2"
    option proto    static
config interface
    option ifname    "eth0.3"
    option proto    static
config interface
    option ifname   "eth0.4"
    option proto    static
    option ipaddr   192.168.1.1

lidemin OpenFlow , ,

14 Replies

  1. 您好,我也对OpenWRT+openflow很感兴趣,由于对OpenWRT不是很熟悉,有些问题想请教一下您,能留个邮箱么?谢谢

    1. 我很久没玩openwrt了, 上一次刷还是去年8月. 我只是把以前写的一些东西搬上来. lǐděmǐnǐsmǐně@gmail.com 我尽量吧~

      1. 你给的邮箱显示乱码呀,想请教一下几个简单问题
        1. pantou支持设备列表里的几种在国内可以买到么?
        2.你用的Linksys WRT54GS V.3是在哪里买的?多少钱啊?有几个有线口和无线口?
        3.我看网上有一些卖刷好openwrt的无线路由,有的才几十块钱,那些可以直接拿来用么?
        可否留个QQ号方便交流?非常感谢~!

        1. 你把邮箱的i和e改成英文就好了啊, 我只是不想我的邮箱被搜索引擎搜到而已
          我当时用的是学长买的, 学长是在淘宝买的.
          Pantou看起来只支持指定的交换机. 它的openflow扩展包是针对指定交换机的.
          邮箱联系吧

  2. 我也是北邮的研究SDN的学生,想问一下刷OpenWRT的无线路由器能用其他的常见的路由器吗,必须要指定的那几种吗?

    1. 好久没刷过路由器了, 现在都是用openvswitch做测试. 你可以用git看一下openflow的扩展包都有哪些分支, 能支持那些分支的交换机应该都能装. 不过能刷OpenWRT的交换机确实是有限的, 据说思科发现linksys wrt路由器可以被刷以后都停产了

  3. 楼主用刷过的openwrt路由器做过什么openflow的实验测试么?做过的话可否传授一下经验呢?

  4. 同学你好,我最近在看pantou和openwrt这方面的东西,请问你之前有用控制器测试过吗?我用wrt54g v2.2试了一下,没办法和控制器连接,你知道是哪方面的原因吗? 非常感谢!!!

      1. 谢谢你的回复!我这边用的是floodlight,在握手成功后总会被重置,一直无法正常建立连接。你用的是什么控制器,控制器和路由器可以连接上吗?

        1. POX。连接得上。如果是我,我可能会抓一下hello包,看看是不是哪里配置错了。如果看不出来,那可能还是路由器的问题,控制器出问题的可能性比路由器小很多。

Leave a Reply

Your email address will not be published. Required fields are marked *