在組建企業級無線局域網(WLAN)時,往往采用無線控制器AC+無線接入點AP的方式,便于實現無線設備集中統一管理和維護。AC和各AP之間一般運行CAPWAP(無線接入點控制和配置)協議。
CAPWAP是基于UDP端口的應用層協議,AC與AP的數據交互,需要先通過控制報文(基于UDP 5246)建立CAPWAP隧道,再發送數據報文(基 于 UDP 5247)。 數據報文可以選擇經由CAPWAP隧 道 封 裝,也可以選擇直接發送。CAPWAP隧道建立過程比較復雜,如圖1所示。
由于AP和AC交互過程多,又采用UDP協議,而實際的WLAN組網中,經常會碰到所選用的WLAN產品廠商與原有有線局域網產品廠商不同的情況,此時CAPWAP隧道的建立可能會遇到一些問題。

圖1 CAPWAP隧道建立過程
比如筆者單位在CISCO有線局域網環境中,部署華為WLAN時就發生了AC和AP建立CAPWAP隧道失敗的情況。有線網絡采用的核心層、接入層的兩層架構,核心交換機為CISCO6504-E,接入層為C2960;WLAN部分采用華為 AC6605和 AP6050DN,由于AP數量為130臺,只需一臺AC即可,且為了不改變有線網絡的結構,AC采用旁掛式部署,二層組網,即AC地址和AP的管理地址在同一VLAN,另外再為AP劃分幾個業務VLAN,總體拓撲如圖2。
為便于說明多廠商設備組建無線局域網時CAPWAP管理隧道建立時所遇到的問題,本文使用了GNS3和ENSP兩種模擬器來進行組合實驗。用GNS3模擬CISCO的匯聚層C6504-E和接入層C2960交換機,即有線網絡部分,用華為的ENSP模擬器來模擬華為AC6605和AP6050DN等無線設備,并用環回網卡來互聯兩個模擬器的網絡設備,有線側拓撲如圖3。

圖2 總體拓撲
GNS3版 本 為 2.1.3,R3為7200路由器,用于代替防火墻,配置f0/0.100、f0/0.101等子接口,并封裝802.1q,設置子接口IP地址。R1為3640路由器,配NM-16ESW交換板卡來模擬C6504-E核心交換機,創 建 VLAN 100、101,均設置VLAN接口地址,創建2個DHCP地址池,VLAN 100為管理VLAN,為所有AP提 供 IP地 址,f0/0、f0/1、f0/2接口均設為TRUNK即可,不設Native VLAN。R2為3640路由器,配NM-16ESW交換板卡來模擬C2960接入交換機,創建 VLAN 100、101,不設置VLAN接口地址,f0/0、f0/1接口均設為TRUNK即可,不設Native VLAN。

圖3 GNS3的拓撲
在Windows設備管理器中添加過時硬件、網絡適配 器、廠 商 Microsoft、型號Microsoft KM-TEST環回 適 配 器(Windows 10系統下),添加2塊環回網卡,重啟電腦,為防止實驗過程中AP通過DHCP獲取IP時,環回網卡的IP突然發生變化,手動指定2塊環回網卡的 IP,如 169.254.X.X/16即可。添加2個Cloud,其中Cloud-1使用環回網卡用來橋接ENSP中的華為AC,Cloud-2使用環回網卡2用來橋接ENSP中的華為AP,為盡量簡化實驗設計,實驗中只接入一個AP,若要接入更多AP,可再添加幾個環回網卡,無線側拓撲如圖4。
AC上創建VLANIF 100、101,為 VLANIF 100接口指定IP地址為172.16.100.100,g0/0/1接口配置TRUNK,允許VLAN 100、101 通過,不指定 PVID,設置 CAPWAP源接 口 為 VLANIF 100,AP零配置即可。添加2個Cloud,Cloud1添加 1個UDP接口,添加1個環回接口(綁定環回網卡),并將2個接口做雙向通道端口映射,用來橋接GNS3中的C6504-E核心(或稱匯聚)交換機。Cloud2添加1個UDP接口,添加1個環回接口(綁定環回網卡2),并將2個接口做雙向通道端口映射,用來橋接GNS3中的C2960接入交換機。
GNS3中CISCO設備配置如下。

圖4 ENSP的拓撲




R1和R3進行連通性測試,正常。
ENSP中AC配置如下。

配置說明:由于AP采用默認的直接轉發方式,業務VLAN不經CAPWAP隧道封裝,而是本地轉發,在AP與AC通信所經過的每臺CISCO交換機的相應接口上,均必須設置為TRUNK。
進行上述配置后,分別在AP上聯接口ge0/0/0和AC接口ge0/0/1進行Wireshark抓包,觀察CAPWAP隧道建立是否正常,進行到哪個階段。發現第一階段的DHCP過程中,AP發送DHCP Discover廣播包,而始終無法收到DHCP Offer報文。
分析:AP通過Cloud2橋接在R2的f0/1接口,而該接口設置為TRUNK模式,默認的Natrive VLAN是VLAN 1,與 作 為 DHCP Server的R1上VLAN 100間因為VLAN tag的原因無法進行L2廣播,因此DHCP Server根本無法收到DHCP Discover廣播包,也就無法做出響應。
在R2的f0/1接口設置Native VLAN 100,對 VLAN 100不打tag標記,即在R2上添加如下配置:
interface fast Ethernet 0/1
switchport trunk native vlan 100

圖5 wireshark抓包分析
exit
此時Wireshark顯示DHCP過程正常,且WAPCAP過程已啟動。但到控制通道維護的Run階段,AC響應Echo Response后,出現了不應有的組播包,隧道發生故障,可能是VLAN tag原因,導致無法正確解包。在AC上用“display ap all”命令查看AP狀態,發現AP狀態會經歷idle、cfg、cfgfa、fault,WAPCAP隧道建立失敗。將vap-profile改為隧道轉發模式時故障依舊,因為此時CAPWAP管理隧道尚未完全建立,無法建立數據隧道來下發射頻、業務VLAN等配置。Wireshark抓包如圖5所示。
經過對各設備接口TRUNK配置的不斷調整,最終發現只有在將R1的f0/0口、AC的g0/0/1口、R2的f0/1口同時對VLAN 100不打tag標記時,CAPWAP才完全正常,此時AP處于normal狀態,AP能夠發射2.4G射頻信號,STA可以連接SSID,通過DHCP獲取業務VLAN 101的地址,并與R1、R3等設備通信。即在R1上需添加命令:
interface fast Ethernet 0/0
switchport trunk native vlan 100
exit
在AC上添加命令:
interface Gigabit Ethernet 0/0/1
port trunk pvid vlan 100
exit