天天看點

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

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未連接配接狀态。

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

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的屬性。
    SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

openflow檔案

這個檔案相較于network簡單多了,其中dpid就是一個編号,在網絡中隻有一個openflow路由器時不用修改;ofports即是需要用openflow功能管理的vlan;ofctl是SDN控制器的相關資訊;mode是openflow協定的工作方式,有inband模式和outoband模式,在inband模式下,控制器與openflow交換機連接配接的網口既可以有控制流量,又可以有資料流量。而outoband模式下,控制器與openflow交換機連接配接的網口隻能有控制流量。

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

wireless檔案

修改/etc/config/wireless,将option disable 1為關閉路由器無線功能,option disable 0為開啟路由器無線功能

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

3 MR3420對應檔案配置

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

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
           

運作成功後,顯示結果如下

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

接着,需要開啟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功能後,顯示結果如下圖,已成功連接配接上控制器,證明配置成功,接下來即可驗證控制器的各種功能了。祝好運!

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

4.2 POX控制器驗證

POX控制器目前僅支援到OpenFlow1.0版本,而我們的OpenFlow交換機為1.3版本。為驗證POX控制器的不适用,進行實驗結果如下圖所示。

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

4.3 其他驗證

除了使用TL-MR3420型号的OpenFlow交換機進行實驗外,本文還進行了一些其他機器的實驗,和以上内容沒有太大關聯。

RYU控制器與OpenFlow1.0版本的路由器:

SDN(二) 對TP-LINK TL-MR3420型号的OpenFlow交換機進行配置1 引言2 配置須知3 MR3420對應檔案配置4 測試

繼續閱讀