在这一篇博客中,我将详细介绍如何在OpenWrt系统中搭建Open VSwitch,从而让AP适用于SDN系统。
AP有“瘦AP”(Fit AP)和“胖AP”(Fat AP)之分,Fat AP是与Fit AP相对来讲的,Fat AP将WLAN的物理层、用户数据加密认证、QoS、网络管理、漫游技术以及其他应用层的功能集于一身。Fat AP无线网络解决方案可由由Fat AP直接在有线网的基础上构成,设备结构复杂,且难于集中管理,比较常用于家庭无线接入,即所谓的“无线路由器”。Fit AP是一个只有加密、射频功能的AP,功能单一,不能独立工作。整个Fit AP无线网络解决方案由无线控制器和Fit AP在有线网的基础上构成。Fit AP上“零配置”,所有配置都集中到无线控制器上。这也促成了Fit AP解决方案更加便于集中管理,并由此具有三层漫游、基于用户下发权限等Fat AP不具备的功能。
本文的解决方案为Fat AP的SDN适配方案,解决思路为Fat AP + Openwrt + OVS。我将介绍三种在Openwrt下安装OVS的方法。
方法一 编译一个带Open VSwitch版本的OpenWrt固件
这种方法是在Linux系统下直接编译一个带有Open VSwitch的固件,并将固件刷入AP中。
此方法操作步骤简单,但容易出错,编译过程常伴随各种未知错误。本人尝试过多次,编译过多种版本下的固件,失败多过成功。但这种方法还是推荐大家学习,方便日后进一步学习扩展。
升级软件安装包,安装编译时需要的组件。
1
2sudo apt-get update
sudo apt-get install gccg++binutilspatchbzip2flexbison make autoconf gettext texinfo unzip sharutils subversion libncurses5-devncurses-term zlib1g-dev subversion git gawk asciidoc libz-dev获取OpenWrt源码并添加OVS
1
2
3
4
5
6
7
8
9
10
11
12git clone git://git.openwrt.org/openwrt.git #获取Openwrt源码
cd openwrt
./scripts/feeds update –a #更新最新代码
./scripts/feeds install –a #安装最新组件
svn up #更新版本号
#添加openwrt代码连接
echo 'src-git openvswitch git://github.com/pichuang/openvwrt.git' >> feeds.conf
#或者(建立代码连接)
echo 'src-git openvswitch git://github.com/ttsubo/openvswitch.git' >> feeds.conf
./scripts/feeds update openvswitch
./scripts/feeds install -a -p openvswitch编译固件
1
make menuconfig
1 选择CPU型号(根据AP硬件选择,可参见openwrt的wiki页面)
1
Target System—–Atheros AR71xx/AR7240/AR913x/AR934x
2 选择路由型号(根据路由器型号选择)
1
TargetProfile—-xxxx
3 添加 Luci 及相关组件(语言包+DNNS)
1
2
3LuCI—>Collections—–<*> luci
LuCI—>Translations—-<*> luci-i18n-chinese
LuCI—>Applications —> <*>luci-app-ddns.4 添加UTF8编码
1
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
5 添加复位键支持
1
Utilities —> <*> restorefactory
6 添加 openvswitch
1
Network -> openvswitch-switch, openvswitch-switch, openvswitch-ipsec (Optional)
7 save
1
make V=99
固件编译成功后将在 target 文件夹中找到 .bin 文件,然后将镜像文件刷进系统,就得到了一个有Open VSwitch的AP。
方法二 通过opkg安装Open Vswitch
这种方法是利用Openwrt系统本身的opkg(Open PacKaGe management)管理器直接从互联网下载OVS的安装文件和相关依赖。
此方法有个前提是必须保证AP本身可以上网。
####AP连入互联网
Openwrt系统的官方固件中的WAN是默认DPCH上网的,最简单的上网方式是连接到上级网络的路由器:用网线连接此AP的WAN口和可上网的路由器的LAN口。这样Openwrt可以直接通过DPCH方式上网,不需要任何配置。
如果没有一个正常上网的路由器,AP联网的方式和其他商用路由器类似。首先将AP的WAN口连接到墙上的网口,打开luci界面:192.168.1.1,选择接口(interfaces),编辑WAN,然后按照运营商的上网方式设置相对的上网协议,输入账号密码等。
安装步骤
打开SecureCRT用SSH协议连接到Openwrt(ip地址:192.168.1.1,具体方式可参见上一篇博客)。
更新安装包并安装
1
2
3opkg update -a
opkg install kmod-openvswitch
opkg install openvswitch
我在使用这个方法安装时,一直出现无法连接到官方下载网站的问题。无法完成更新,也无法安装。
方法三 使用ipk安装包安装
第三种方法是我自己发现的方法,优点是简单而且不容易出错,但缺点就是太麻烦。如果走投无路了,也可以尝试一下这个方法。
此方法就是在Openwrt的软件库上下载相对应的安装包,放入Openwrt的 /tmp/文件夹内,利用opkg install命令安装。
在openwrt的archive网站找到对应的Openwrt固件版本
attitude_adjustment v12.09
backfire v10.03 / v10.03.1
barrier_breaker v14.07
chaos_calmer v15.05 / v15.05.1
releases v17.01.0 - v17.01.4
snapshots trunk
进入分类和版本内,选择相应文件系统,普遍是ar71xx。
选择 genetic/文件夹
选择Supplementary Files中的packages。
packages文件夹中有六个文件夹,所有的ipk文件都在这六个文件夹中。
base/ Openwrt系统工具(大部分工具安装包可在其中找到)
luci/ luci相关
management/ 管理包(不常用)
packages/ 工具和其他依赖文件
routing/ 不常用
telephony/ 不常用
大部分的基础工具都可以在 base/ 文件夹中找到,所需的依赖文件可在 packages/ 中找到。
在packages/文件夹中,用ctrl+F搜索 openvswitch ,下载以下ipk文件:
openvswitch_xx.xx.xx (xx是版本号)
openvswitch-benchmark_xx.xx.xx
kmod_openvswitch_xx.xx.xx
打开SecureCRT软件和WinSCP软件,连接到AP。
用WinSCP将ipk文件导入到 Openwrt 系统的 /tmp/ 文件夹下。
在SecureCRT中输入
1
2cd /tmp/
opkg install openvswitch_xx.xx.xx.ipk #正确文件名安装一定会失败,并提示缺少以下依赖,此时,在archive文件夹中根据错误提示逐个寻找依赖的ipk文件包,用同样的方式进行安装。
安装完所有缺省再次安装openvswitch的ipk。
安装ovs时,如果出现内核版本不对的错误提示,但又确实是安装了同一个CPU版本下的ovs包,可以尝试强制安装,如果安装之后可以使用ovs,就没有问题。
1
opkg --force-depends install openvswitch_xx.xx.xx.ipk
这个方法确实非常麻烦,但是成功率很高,同时也适用于安装其他类型的工具包,所以比较推荐。
以上是我总结的三种在openwrt上安装openvswitch的方法,下一篇我讲继续介绍ovs的相关配置和使用。