- para a versão de hardware até a 1.11 (só testei com a 1.8): Openflow 1.3
- para a versão de hardware 2.0 e 2.1 (não testei): Openflow 1.3
Fiz a compilação com a versão "trunk" do OpenWRT (Barrier Breaker) e tudo funcionou muito bem.
Alternativamente, tenho estas versões compiladas com o branch estável (Attitude Adjustment 12.09) para a versão de hardware até 1.11 ( a versão 2 não é suportada):
- Firmware Openflow 1.3 e o OpenFlow 1.0 (Pantou)
Para compilá-las, utilizei uma imagem padrão do Ubuntu 12.04 para o Virtualbox, com 1,5 G de memória e 20 GB de disco, em um laptop I3 com 4 Gb de RAM, Win7 64 bits.
É imprescindível ter acesso Internet de dentro da máquina virtual. Pingue o www.google.com antes de tudo.
A "receita de bolo" exata é a seguinte:
sudo su -
Digite o seguinte na mesma linha: apt-get install git quilt build-essential binutils flex bison autoconf gettext texinfo sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk
exit
mkdir ~/openwrt
cd ~/openwrt
svn co svn://svn.openwrt.org/openwrt/trunk/
cd trunk
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
Select Target Profile (TP-LINK TL-WR1043N/ND)
make prereq
make
cd ~/openwrt
git clone https://github.com/CPqD/openflow-openwrt.git
cd ~/openwrt/trunk/package/
ln -s ~/openwrt/openflow-openwrt/openflow-1.3/
cd ~/openwrt/trunk/
ln -s ~/openwrt/openflow-openwrt/openflow-1.3/files
make menuconfig
Select (*) OpenFlow package under network
Select (*) tc package under network
Select kmod-tun under Kernel Modules->Network Support
Save and Exit
make kernel_menuconfig
Under Networking Support->Networking options->QoS and/or fair queueing select Hierarchical Token Bucket (HTB)
Save and Exit
Dica opcional: se quiser gravar os arquivos de configuração para que eles fiquem na imagem compilada, os grave em ~/openwrt/trunk/files/etc/configAgora faça a compilação final:
make
E voilá, a sua imagem estará em ~/openwrt/trunk/bin/ar71xx/openwrt-ar71xx-generic-tl-wr1043nd-v1-jffs2-factory.bin, após a longa compilação. A copie para o seu Windows utilizando o WinSCP ou similar. Faça o upgrade do firmware pela tela de gerência web do TP-link.
Caso o roteador já esteja com o OpenWRT instalado, copie com o WinSCP (modo SCP) o arquivo para o /tmp do TP-Link e utilize o seguinte comando para fazer o upgrade:
Primeiramente crie o seguinte vínculo estático. Sem ele, os processos do openflow não "sobem":
Altere todos os arquivos abaixo para não se incomodar.
Caso o roteador já esteja com o OpenWRT instalado, copie com o WinSCP (modo SCP) o arquivo para o /tmp do TP-Link e utilize o seguinte comando para fazer o upgrade:
mtd -r write /tmp/openwrt-ar71xx-generic-tl-wr1043nd-v1-jffs2-factory.bin firmware
Depois do upgrade feito, conecte o seu micro em uma das portas LAN do roteador e acesse por telnet (ou Putty) o endereço 192.168.1.1.Primeiramente crie o seguinte vínculo estático. Sem ele, os processos do openflow não "sobem":
cd /etc
ln -s /lib/functions.sh
cd /sbin
ln -s /usr/sbin/tc
Faça uma cópia dos arquivos originais e edite os seguintes arquivos, para que fiquem exatamente como o modelo a seguir. O endereço de gerência será alterado para 192.168.1.111, agora na porta WAN, com o endereço do controlador definido para 192.168.1.130, mas podem ser modificados (e devem ser para os demais roteadores) com a alteração dos valores em vermelho. Para ficar mais divertido, habilitei dois SSID, um WAN na a rede ligada ao plano de controle e outro na rede do plano de dados.Altere todos os arquivos abaixo para não se incomodar.
cp /etc/config/network /etc/config/network.ori cp /etc/config/firewall /etc/config/firewall.ori cp /etc/config/wireless /etc/config/wireless.ori cp /etc/config/openflow /etc/config/openflow.ori
Utilizo o "cat" para sobrescrever os arquivos originais, mas podem ser editados com o "vi".
cat > /etc/config/network
config switch
option name 'rtl8366rb'
option reset '1'
option enable_vlan '1'
option enable_learning '0'
config switch_vlan
option device 'rtl8366rb'
option vlan '1'
option ports '1 5t'
config switch_vlan
option device 'rtl8366rb'
option vlan '2'
option ports '2 5t'
config switch_vlan
option device 'rtl8366rb'
option vlan '3'
option ports '3 5t'
config switch_vlan
option device 'rtl8366rb'
option vlan '4'
option ports '4 5t'
config switch_vlan
option device 'rtl8366rb'
option vlan '5'
option ports '0 5t'
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
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'
config interface 'wan'
option ifname 'eth0.5'
option proto 'static'
option ipaddr '192.168.1.111'
option netmask '255.255.255.0'
option type 'bridge'
tecle <ctrl-d>
cat > /etc/config/wireless
config wifi-device radio0
option type mac80211
option channel 11
option hwmode 11ng
option path 'platform/ath9k'
option htmode HT20
list ht_capab SHORT-GI-40
list ht_capab DSSS_CCK-40
# REMOVE THIS LINE TO ENABLE WIFI:
#option disabled 1
config wifi-iface wlan0
option device radio0
# option network lan
option mode ap
option ssid OpenFlow-111-lan
option encryption none
config wifi-iface wlan1
option device radio0
option network wan
option mode ap
option ssid OpenFlow-111-wan
option encryption none
cat > /etc/config/openflow
config 'ofswitch'
option 'dp' 'dp0'
option 'dpid' '000000000111'
option 'ofports' 'eth0.1 eth0.2 eth0.3 eth0.4 wlan0'
option 'ofctl' 'tcp:192.168.1.130'
option 'mode' 'outofband'
<ctrl-d>
cat > /etc/config/firewall config defaults option syn_flood 1 option input ACCEPT option output ACCEPT option forward ACCEPT
<ctrl-d>
cat > /etc/config/system config system option hostname 'OpenWrt' option timezone 'UTC' config timeserver 'ntp' list server '0.openwrt.pool.ntp.org' list server '1.openwrt.pool.ntp.org' list server '2.openwrt.pool.ntp.org' list server '3.openwrt.pool.ntp.org' option enable_server '0' config led 'led_usb' option name 'USB' option sysfs 'tp-link:green:usb' option trigger 'usbdev' option dev '1-1' option interval '50' config led 'led_wlan' option name 'WLAN' option sysfs 'tp-link:green:wlan' option trigger 'phy0tpt'
<ctrl-d>
O comando "ps" deve mostrar duas linhas similares a estas:
ofdatapath ptcp:6634 -i eth0.1 eth0.2 eth0.3 eth0.4 wlan0 --no-slicing --no-local-port --pidfile -d 000000000011
ofprotocol tcp:127.0.0.1:6634 tcp:192.168.1.130 --fail=closed -D --pidfile=/var/run/ofprotocol.pid --out-of-band
Se algo der errado, há a possibilidade do System Rescue, como explicado em http://wiki.openwrt.org/doc/howto/generic.failsafe#in.failsafe.mode . A pagina do Wiki do OpenWRT para o TP-link WR-1043nd é muito útil, no caso de problemas.
Update:
O desempenho medido com o Iperf, entre dois micros ligados em dois switches separados está abaixo:
Nenhum comentário:
Postar um comentário