红联Linux门户
Linux帮助

对路由器进行Openflow1.3配置

发布时间:2017-01-09 10:53:27来源:linux网站作者:qq_20448859
1.概述
本篇文章要配置的路由器是已经刷了支持openflow1.3协议的OpenWRT系统的,具体刷机过程可参考http://www.linuxdiyf.com/linux/27645.html。本文要配置的路由器是TL-MR3420 ver1.1。
 
2.配置需知
要配置的文件有三个,分别是network,openflow,以及wireless,它们都位于路由器的/etc/config目录下。openflow文件初始都一样,wireless基本也大同小异,这两个文件非常容易配置,比较困难的是network文件,不同路由器之间可能差别比较大。
首先,一般的家用的无线路由器其实可以理解成是一个真正的路由器加上一个交换机,路由器连着Wan口和交换机,交换机再分成和几个有线Lan口和一个无线Lan口,交换机的所有接口连的终端同属于一个子网。
家用路由器一般会有两块或三块网卡,多数是Wan口单独一块网卡,而Lan口分无线和有线,可能集成在一块网卡上,也可能分成两块。每个网卡有着全球唯一的Mac地址,一般路由器背面给出的Mac地址是无线Lan口的网卡地址。
下面是OpenWRT官网交换机手册(https://wiki.openwrt.org/zh-cn/doc/uci/network/switch)给出的某个型号的路由器内部交换机结构图。
对路由器进行Openflow1.3配置
可以看到该型号的路由设备有三个网卡,分别是eth0,eth1和eth2。eth0集成了有线Lan的四个接入端口和一个Wan口,eth1则是没有被使用,eth2则是无线Lan口。
而我使用的路由器内部交换机结构都和它的差别有点大,MR3420四个有线Lan端口的网卡是eth0,Wan口的网卡是eth1,无线Lan接入口对应的网卡则是eth2。要查看有线Lan端口对应的网卡,可以使用下面的命令。
swconfig list
接下来,为了完成SDN的控制层和转发层分开,我们必须得对Lan划分为几个Vlan,其中一个Vlan连接控制器,其余的Vlan作为openflow交换机端口,用来连接主机。
 
3.文件配置
1]./etc/config/network
在network文件中进行Vlan的划分,下面我将eth0划分为eth0.1,eth0.2,eth0.3,eth0.4,eth0.x代表的是对eth0的划分,x就是对应的vlan号,vlan1对应端口1,用来连接控制器,其余连接主机。
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd84:aa1a:857d::/48'
config interface 'lan'
option ifname 'eth0.1'
option force_link '1'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
config interface 'wan6' 
option ifname 'eth1' 
option proto 'dhcpv6' 
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 switch
option name 'switch0' 
option reset '1' 
option enable_vlan '1'
config switch_vlan
option device 'switch0' 
option vlan '1' 
option vid '1'
option ports '0t 1'
config switch_vlan
option device 'switch0' 
option vlan '2' 
option vid '2' 
option ports '0t 2'
config switch_vlan
option device 'switch0' 
option vlan '3' 
option vid '3'
option ports '0t 3'
config switch_vlan
option device 'switch0' 
option vlan '4'
option vid '4' 
option ports '0t 4' 
Vlan划分的端口中0t代表的是cpu,不同路由之间不同,可以用下面的命令查看,拔掉所有的端口后仍然显示连接的就是cpu端口。
swconfig dev eth0 show
划分完后,重启网络,然后再次查看eth0信息,看是否划分正确。
/etc/init.d/network restart
2]./etc/config/wireless
这个文件没什么要改的地方,把wifi-iface里的option network lan这行去掉就行,这样连接wifi时就不会与eth0,1(lan接口)处于同一个子网,用在转发层而不是控制层。
config wifi-devicewlan0
option type mac80211
option channel11
option hwmode 11g
option path 'pci0000:00/0000:00:00.0'
option htmode HT20
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 0
config wifi-iface
option device wlan0
option mode ap
option ssid MR3420_1
option encryption none
3]./etc/config/openflow
要修改两个地方,第一个是ofctl选项里要填上控制器正确的ip地址,可以用网线连接主机和端口1,在Linux主机上用ifconfig命令来查看分配到的ip地址。第二个是ofports选项,填上所有用作openflow交换机端口。
config 'ofswitch'
option 'dp' 'dp0'
option 'dpid' '000000000001'
option 'ofports' 'wlan0 eth0.2 eth0.3 eth0.4 eth1'
option 'ofctl' 'tcp:192.168.1.114:6633'
option 'mode''outofband'
 
4.测试
重启路由器之后,就可以通过以下命令开启和关闭openflow功能。
/etc/init.d/openflow start
/etc/init.d/openflow stop
在linux主机上开启对应的控制器,我使用的是RYU控制器,运行simple_switch_13.py,如果没有出错会显示连接上控制器,对simple_switch_13.py进行相应的修改或者手动通过REST API下发流表就可以使有线无线各个端口均可通过eth1联网(关闭openflow功能后只有端口1可以),接下来就可以使用控制器做其他想做的事情了。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27646.html