標籤:http tar com 使用 strong art
2.5.1 AC發現機制
WTP使用AC發現機制來得知哪些AC是可用的,決定最佳的AC來建立CAPWAP串連。
WTP的發現過程是可選的。如果在WTP上靜態配置了AC,那麼WTP並不需要完成AC的發現過程。
WTP首先發送一個 Discovery Request message給受限的廣播位址,或者CAPWAP的多播地址(224.0.1.140),或者是預配置的AC的單播地址。在IPV6網路中,由於廣播並不存在,因此使用"All ACs multicast address" (FF0X:0:0:0:0: 0:0:18C)來代替。
當接收到Discovery Request message訊息,AC發送一個單播Discovery Response message給WTP。
WTP可以通過Discovery Response message中所帶的AC優先順序,支援的CAPWAP binding來選擇與哪個AC建立會話。
除了上面的發現機制,WTP還可以使用DNS或者DHCP來發現AC。
2.5.2 DTLS握手
WTP首先發送一個ClientHello訊息來發起握手,說明它支援的密碼演算法列表、壓縮方法及最高協議版本和其他一些需要的訊息。
AC回複一個HelloVerifyReuqest 訊息,client必須重傳添加了cookie的ClientHello。server然後驗證cookie,如果有效話才開始進行握手。
AC回應一個ServerHello訊息,包含伺服器選擇的串連參數,源自用戶端初期所提供的ClientHello,確定了這次通訊所需要的演算法,然後發過去自己的認證(裡麵包含了身份和自己的公開金鑰)。
Client在收到這個訊息後會產生一個秘密訊息,用SSL伺服器的公開金鑰加密後傳過去,SSL伺服器端用自己的私密金鑰解密後,工作階段金鑰協商成功,雙方可以用同一份工作階段金鑰來通訊了。
2.5.3 DTLS認證和授權
DTLS支援終端認證方式為:認證(certificate)和預先共用金鑰(pre-shared key)。
CAPWAP認證中使用認證支援的演算法是
¢ TLS_RSA_WITH_AES_128_CBC_SHA [RFC5246](MUST SUPPORT)
¢ TLS_DHE_RSA_WITH_AES_128_CBC_SHA [RFC5246](SHOULD SUPPORT)
¢ TLS_RSA_WITH_AES_256_CBC_SHA [RFC5246](MAY SUPPORT)
¢ TLS_DHE_RSA_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
在RFC4279中定義了多種預先共用金鑰的認證方式,CAPWAP中主要關心下面兩種:
¢ Pre-Shared Key (PSK) key exchange algorithm
¢ DHE_PSK key exchange algorithm
同樣,CAPWAP定義了預先共用金鑰支援的演算法
¢ TLS_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)
¢ TLS_DHE_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)
¢ TLS_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
¢ TLS_DHE_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
2.5.4 CAPWAP狀態機器
CAPWAP狀態機器,是被AC和WTP同時使用的。對於每個定義的狀態,只有特定的訊息才被允許收發。
因為WTP只會和單個AC通訊,因此只會有一個CAPWAP的狀態機器。而AC與WTP有很大差別,因為AC同時和許多WTP通訊。
DTLS和CAPWAP的狀態機器由命令和通告的API介面聯絡起來。
DTLS狀態機器的變遷由CAPWAP狀態機器的命令觸發。
CAPWAP狀態機器的變遷由DTLS狀態機器的通告觸發
CAPWAP狀態機器:
2.5.4.1 CAPWAP to DTLS Commands
¢ DTLSStart
開啟DTLS會話的建立
¢ DTLSListen
監聽DTLS會話請求
¢ DTLSAccept
允許DTLS會話建立
¢ DTLSAbortSession
導致進行中中的DTLS會話的中斷
¢ DTLSShutdown
關閉DTLS會話
¢ DTLSMtuUpdate
改變DTLS模組的MTU設定大小。預設大小為1468位元組
2.5.4.2 DTLS to CAPWAP Notifications
¢ DTLSPeerAuthorize
DTLS會話建立過程中,通知CAPWAP模組來認證會話。
¢ DTLSEstablished
通知CAPWAP模組DTLS會話已經成功建立
¢ DTLSEstablishFail
DTLS會話建立失敗
¢ DTLSAuthenticateFail
DTLS會話建立過程由於認證失敗而終止。
¢ DTLSAborted
通知CAPWAP模組它要求的DTLS會話建立過程已經終
¢ DTLSReassemblyFailure
通知CAPWAP模組DTLS分區組裝失敗
¢ DTLSDecapFailure
通知CAPWAP模組發生了一個解碼錯誤
¢ DTLSPeerDisconnect
通知CAPWAP模組DTLS會話已經關閉
2.5.5 AC線程
AC使用了三個“線程”(thread)的概念。
¢ 監聽線程:
通過DTLSlisten命令,AC監聽線程處理DTLS會話建立請求。建立的時候,監聽線程開啟DTLS Setup狀態。當狀態機器進入Authorize狀態,且DTLS會話生效之後,監聽線程建立一個指定的WTP指定會話服務線程和狀態空間。
¢ 發現線程:
AC的發現線程負責接收和響應發現請求訊息。
¢ 服務線程:
AC的服務進程處理每個WTP的狀態和每個WTP串連的線程。這個線程在認證後被監聽線程建立。一旦建立,服務線程會繼承監聽線程的一份狀態機器空間的拷貝。當與WTP之間的通訊完成後,服務線程關閉,所有的資源都會被釋放。
注意,在這裡使用了線程這個術語,但是並不代表實現者就必須使用線程。這隻是一個實現AC狀態機器的可用的方法。