一、 CAPWAP概述
CAPWAP由兩個部分組成:CAPWAP協議和無線BINDING協議。
(1)CAPWAP協議是一個通用的隧道協議,完成AP發現AC等基本協議功能,和具體的無線接入技術無關。即AP自動發現AC,AC對AP進行安全認證,AP從AC獲取軟件映像,AP從AC獲得初始和動態配置等。此外,系統可以支持本地數據轉發和集中數據轉發。瘦AP架構讓AC具有了對整個WLAN網絡的完整視圖,為無線漫游、無線資源管理等業務功能的實現提供了基礎如圖1.1所示。
(2)BINDING協議是提供具體和某個無線接入技術相關的配置管理功能。可以這么解釋,前者規定了各個階段需要干什么事,后者就是具體到在各種接入方式下應該怎么完成這些事。目前工作組只提供了802.11的binding協議(RFC5416,2009年4月發布),以支持802.11網絡的配置管理功能。OpenCapwap也實現了這個協議。
圖1.1 瘦AP架構圖
二、 CAPWAP狀態機分析(重點1)
AC與WTP通過CAPWAP狀態機來建立隧道,CAPWAP狀態機如示意圖2.1所示,由圖上可知,整個CAPWAP隧道建立的狀態有:Idle, Discovery, Sulking, DTLS Setup, Authorize, DTLS Connect, DTLS Teardown, Join, Configure, Image Data, Data Check, Run, Reset。其中 DTLS是CAPWAP報文傳輸安全機制,保障了網絡通信的安全。
CAPWAP狀態機是被AC與WTP同時使用的,WTP系統中只有一個CAPWAP狀態機,AC端有多個狀態機。對於每個定義的狀態,只有特定消息被允許發送和接受,每一個狀態變遷都有AC與WTP的相關動作,詳見RFC5415。CAPWAP狀態機的最終目標是進入到RUN狀態,進行實際的數據傳輸,而之前的過程都是AP發現AC,AP與AC建立CAPWAP隧道的過程。
圖2.1 CAPWAP狀態機流程圖
其中AC和AP建立控制鏈路的過程如圖2.2所示,包含了幾個主要的狀態:
1、 Discovery狀態
該狀態是一個WTP發現可關聯AC的過程,在前期WTP可以通過1)讀取靜態配置文件中AC IP列表2)通過DNS域名解析3)DHCP返回AC IP列表4)廣播等方式發送Discovery request,查找當前可關聯的AC,當AC收到Discovery request,會發送Discovery response作為響應。
圖2.2 AP發現AC的流程圖
2、 Join狀態
該狀態是AC與WTP建立控制通道的交互過程,並在此交互過程中,AC檢查WTP當前版本,如果WTP的版本無法與AC要求的相匹配,WTP和AC會進入Image Data狀態做固件升級,來更新WTP版本;如果WTP版本符合要求,則進入configuration狀態
3、 Image Data狀態
Image Data狀態是AC對WTP升級的過程,以便WTP的版本可正常關聯AC
4、 Configuration狀態
該狀態用於做WTP的現有配置和AC設定配置的匹配檢查,WTP發送configuration request到AC,里面包含現有WTP配置,當WTP當前配置與AC要求不符實,AC會通過configuration response通知WTP,WTP根據response內容對自身配置做重新設置。
5、 Run狀態
當WTP進入Run狀態,說明WTP與AC的控制和數據通道建立已成功,用戶可根據需要,對指定的WTP做配置設置,如創建WLAN、Channel設置、Txpower設置等等,並可實時監控WTP的運行狀態。
三、 CAPWAP報文格式(重點2)
1、CAPWAP報文
CAPWAP報文分為控制和數據兩種消息,除了控制消息的Discovery Request和Discovery Response消息外其余的大部分消息均用DTLS進行加密封裝。
CAPWAP的控制報文格式如下:
+-------------------------------------------+
| IP | UDP | CAPWAP | Control | Message |
| Hdr | Hdr | Header | Header | Element(s) |
+-------------------------------------------+
圖3.1 CAPWAP控制報文幀格式一(Discovery Request/Response)
+------------------------------------------------------------------+
| IP | UDP | CAPWAP | DTLS | CAPWAP | Control| Message | DTLS |
| Hdr | Hdr | DTLS Hdr | Hdr | Header | Header | Element(s)| Trlr |
+------------------------------------------------------------------+
\---------- 認證---------------------/
\------------- 加密------------------/
圖3.2 CAPWAP控制報文幀格式二(經DTLS 安全加密處理的)
CAPWAP的數據報文格式如下:(CAPWAP協議對數據報文的DTLS加密是可選的。)
+-------------------------------+
| IP | UDP | CAPWAP | Wireless |
| Hdr | Hdr | Header | Payload |
+-------------------------------+
圖3.3 CAPWAP數據明文幀格式
+--------------------------------------------------------+
| IP | UDP | CAPWAP | DTLS | CAPWAP | Wireless | DTLS |
| Hdr | Hdr | DTLS Hdr | Hdr | Header| Payload | Trlr |
+--------------------------------------------------------+
\------ 認證---------------/
\------- 加密--------------/
圖3.4 CAPWAP加密數據報文幀格式
2、CAPWAP 協議頭分析
CAPWAP 協議的所有報文都包含 CAPWAP 首部,在控制信道收到則是控制報文,在數據信道收到則是數據報文,其幀格式見下:
具體字段的含義請參加文檔說明。
圖3.5 CAPWAP Header格式
四、 總結
理解CAPWAP狀態機的狀態跳轉過程,弄清了具體的CAPWAP報文格式,就知道它發生什么數據,狀態機從一種狀態跳到另一種狀態,這樣就基本弄清了整個CAPWAP協議基本框架。當然CAPWAP協議還有很多細節去分析,但是在理解了CAPWAP協議基本框架后,再結合OpenCapwap源代碼和網絡抓包,分析細節是比較容易的了。希望本文檔能對你有所幫助。