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地址与网关;其余端口用于连接主机。

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' 

config switch_vlan为配置局域网Vlan端口。Vlan划分的端口中0t代表MR3420型号的cpu,不同路由之间不同,可以用swconfig命令查看,拔掉所有的端口后仍然显示连接的就是cpu端口。

划分完后,重启网络,然后再次查看eth0信息,看是否划分正确。

/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。

config wifi-device  wlan0

        option type     mac80211

        option channel  11

        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_OpenWRT

        option encryption none

3.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.10:6633'

        option 'mode'  'outofband'

4 测试

4.1 RYU控制器验证

在Ubuntu上使用RYU控制器进行验证,若运行控制器后没有出错,则证明已连接上控制器。首先随机选择一个控制器的脚本进行运行

ryu-manager simple_switch_13.py

运行成功后,显示结果如下

在这里插入图片描述

接着,需要开启OpenFlow功能,但开启时时需要运行/etc/functions.sh文件,而/etc下没有该文件,所以要将/lib/functions.sh复制到/etc下,运行如下命令:

cp /lib/functions.sh /etc

重启路由器后,通过以下命令开和关闭openflow功能

/etc/init.d/openflow start

/etc/init.d/openflow stop

开启路由器的OpenFlow功能后,显示结果如下图,已成功连接上控制器,证明配置成功,接下来即可验证控制器的各种功能了。祝好运!

在这里插入图片描述

4.2 POX控制器验证

POX控制器当前仅支持到OpenFlow1.0版本,而我们的OpenFlow交换机为1.3版本。为验证POX控制器的不适用,进行实验结果如下图所示。

在这里插入图片描述

4.3 其他验证

除了使用TL-MR3420型号的OpenFlow交换机进行实验外,本文还进行了一些其他机器的实验,和以上内容没有太大关联。
RYU控制器与OpenFlow1.0版本的路由器:

在这里插入图片描述

转自:https://blog.csdn.net/weixin_42094589/article/details/102600013