1 引言
积跬步以至千里,积怠情以至深渊。
在本人博客SDN(一)中已经详细介绍了如何将TP-LINK TL-MR3420路由器刷成OpenFlow交换机,该无线路由器已具备支持SDN功能。本文将继续介绍并记录近期开展SDN实验的总结,本文主要介绍对OpenFlow交换机进行的相关配置,包括局域网端口配置、VLAN划分、无线端口配置、OpenFlow协议配置等。
2 配置须知
2.1 路由器接口介绍
官网给出了路由器设备内部构造图,介绍了基本接口。常见的无线路由器一般都有一个WAN口,也就是连接到外部网络的接口,其余2-4个口为LAN口,用来连接普通局域网,内部有一个网络交换机芯片,专门处理LAN接口之间的信息交换。通常无线路由的WAN口和LAN之间的路由工作模式一般都采用NAT方式。
这里简单介绍什么是NAT,NAT为私有网络服务,该网络中的主机使用私有IP地址,当私有网络内部的主机与外部Internet通信时,网关路由器负责将私有IP地址转换为全球IP地址,以便取得通信。
要了解交换机接口相关信息,需要使用到swconfig配置命令,使用该命令查看TL-MR3420接口信息如下图所示,eth0一共有5个接口,Port 0为CPU所用,当前状态为up开启状态;其余四个接口用于连接外部设备,为有线接口Port1~Port4。其中由于正在连接测试,Port1状态为up开启状态,其余三个接口为down未连接状态。
2.2 待配置文件介绍
要配置的文件有三个,分别是network,openflow,以及wireless,它们都位于路由器的/etc/config目录下。openflow文件初始都一样,wireless基本也大同小异,这两个文件非常容易配置(若需要用OpenFlow管理无线网络的话,还需要配置/etc/config/wireless)。比较困难的是network文件,不同路由器之间可能差别比较大。
network文件
network文件内容如下图所示,其中各个部分表示为:
- 7表示创建一个vlan,option vlan ‘1’和option ports ‘0 1 2 3 4’
这两句,是说创建的vlan编号为1,路由器的端口0、1、2、3、4这个vlan中; - 3中的option ifname ‘eth0’ 即是说,当前eth0网卡下的几个端口处于同一个vlan配置的属性,所以目前每一个端口1、2、3、4任意一个接口接上网线都可以访问内网192.168.1.1。可用eth0.X表示vlanX,即端口X;
- 4中的option ifname ‘eth1’是说4这一部分配置的是wan的属性。
openflow文件
这个文件相较于network简单多了,其中dpid就是一个编号,在网络中只有一个openflow路由器时不用修改;ofports即是需要用openflow功能管理的vlan;ofctl是SDN控制器的相关信息;mode是openflow协议的工作方式,有inband模式和outoband模式,在inband模式下,控制器与openflow交换机连接的网口既可以有控制流量,又可以有数据流量。而outoband模式下,控制器与openflow交换机连接的网口只能有控制流量。wireless文件
修改/etc/config/wireless,将option disable 1为关闭路由器无线功能,option disable 0为开启路由器无线功能3 MR3420对应文件配置
3.1 /etc/config/network文件
config interface 用来配置局域网端口。eth0.1用来连接内网,也可以用来连接控制器,只要设置控制器IP地址与网关;其余端口用于连接主机。
1 | config interface 'loopback' |
config switch_vlan为配置局域网Vlan端口。Vlan划分的端口中0t代表MR3420型号的cpu,不同路由之间不同,可以用swconfig命令查看,拔掉所有的端口后仍然显示连接的就是cpu端口。
划分完后,重启网络,然后再次查看eth0信息,看是否划分正确。
1 | /etc/init.d/network restart |
3.2 /etc/config/wireless文件
把wifi-iface里的option network lan这行去掉就行,这样连接wifi时就不会与eth0,1(lan接口)处于同一个子网,用在转发层而不是控制层。wifi-device的名字原本为radio0,有些型号的路由器这里必须为wlan0否则无法用OpenFlow管理wifi。
1 | config wifi-device wlan0 |
3.3 /etc/config/openflow文件
要修改两个地方,第一个是ofctl选项里要填上控制器正确的ip地址,可以用网线连接主机和端口1,在linux主机上用ifconfig命令来查看分配到的ip地址。第二个是ofports选项,填上所有用作openflow交换机端口。
1 | config 'ofswitch' |
4 测试
4.1 RYU控制器验证
在Ubuntu上使用RYU控制器进行验证,若运行控制器后没有出错,则证明已连接上控制器。首先随机选择一个控制器的脚本进行运行
1 | ryu-manager simple_switch_13.py |
运行成功后,显示结果如下
接着,需要开启OpenFlow功能,但开启时时需要运行/etc/functions.sh文件,而/etc下没有该文件,所以要将/lib/functions.sh复制到/etc下,运行如下命令:
1 | cp /lib/functions.sh /etc |
重启路由器后,通过以下命令开和关闭openflow功能
1 | /etc/init.d/openflow start |
开启路由器的OpenFlow功能后,显示结果如下图,已成功连接上控制器,证明配置成功,接下来即可验证控制器的各种功能了。祝好运!
4.2 POX控制器验证
POX控制器当前仅支持到OpenFlow1.0版本,而我们的OpenFlow交换机为1.3版本。为验证POX控制器的不适用,进行实验结果如下图所示。
4.3 其他验证
除了使用TL-MR3420型号的OpenFlow交换机进行实验外,本文还进行了一些其他机器的实验,和以上内容没有太大关联。
RYU控制器与OpenFlow1.0版本的路由器: