Các bước chuyển trạng thái của giao thức CAPWAP

Một phần của tài liệu Nghiên cứu giải pháp phân chia tần số trong mạng Wifi sử dụng giao thức CAPWAP (Trang 27)

Phần này sẽ mô tả chi tiết các bước chuyển trạng thái trong máy trạng thái của giao thức CAPWAP, đã được trình bày tại Hình 8. Các con số và ký tự được lấy tương ứng từ Hình 8, nhằm mục đích dễ theo dõi.

(0) Start  Idle: Xảy ra khi quá trình khởi động thiết bị hoàn tất

WTP: Bước chuyển này được sử dụng để khởi động máy trạng thái CAPWAP trên WTP.

AC: Trong bước chuyển này, AC tạo ra Discovery Thread và Listener Thread, cũng như khởi động máy trạng thái.

(1) Idle  Discovery: Bước chuyển này nhằm hỗ trợ quá trình tìm kiếm của CAPWAP

WTP: chuyển đi thông điệp Discovery Request đầu tiên. Đồng thời, WTP sẽ khởi tạo DiscoveryInternalTimer, dùng để xác định khoảng thời gian time-out cho các kết nối tới AC. WTP cũng khởi tạo biến DiscoveryCount về giá trị 0, biến này được dùng để đếm số lần cố gắng kết nối của WTP.

AC: Bước chuyển này được thực hiện bởi Discovery Thread, khi Discovery Thread nhận được một thông điệp Discovery Request. AC sẽ phản hồi lại Request này.

(#) Discovery  Discovery: WTP xác định AC để kết nối

WTP: Nếu DiscoveryInternalTimer được khởi tạo tại bước (1) kết thúc, WTP sẽ gửi lại các Discovery Request cho các AC. Mỗi một lần gửi lại các Discovery Request này, biến DiscoveryCount sẽ được tăng thêm 1 đơn vị.

AC: Không tồn tại bước chuyển này.

(2) Discovery  Idle: Xảy ra trên AC khi quá trình tìm kiếm kết thúc WTP: Không tồn tại

AC:Sau khi Discovery Thread nhận được Discovery Request và gửi phàn hổi bằng Discovery Respone, bước chuyển trạng thái này xảy ra.

(!) Discovery  Sulking: Xảy ra trên WTP khi quá trình tìm kiếm AC thất bại WTP: Khi biến đếm DiscoveryCount đạt tới giá trị MaxDiscoveries, WTP sẽ thực hiện bước chuyển này. WTP phải khởi động SilentIntervalTimer. Khi ở trạng thái Sulking, tất cả các gói tin CAPWAP tới WTP đều không được xử lý.

AC: Không tồn tại bước chuyển này.

(@) Sulking  Idle: Xảy ra khi WTP tái khởi động tiến trình tìm kiếm WTP: Khi SilentTimerInterval tới hạn, WTP sẽ thực hiện bước chuyển này. AC: Không tồn tại bước chuyển này.

(&) Sulking  Sulking: Trạng thái Sulking được thiết kế nhằm làm giảm các cuộc tấn công từ chối dịch vụ

WTP: Không hoạt động

AC: Không tồn tại bước chuyển này.

(3) Idle  DTLS Setup: Thiết lập phiên làm việc bảo mật DTLS

WTP: Gọi tới lệnh DTLSStart, đồng thời khởi động WaitDTLSTimer. Do quá trình tìm kiếm được bỏ qua, ta hiểu rằng WTP đã được cấu hình các AC từ trước.

AC: Sau khi chuyển từ trạng thái Start sang trạng thái Idle, Listener Thread sẽ tự động chuyển AC qua trạng thái DTLS Setup, và gọi lệnh DTLSListen, đồng thời khởi động WaitDTLSTimer.

WTP: Tương tự bước (3), tuy nhiên việc thực hiện bước chuyển này là kết quả của quá trình tìm kiếm.

AC: Không tồn tại bước chuyển này.

($) DTLS Setup  Idle: Xảy ra khi quá trình thiết lập kết nối DTLS thất bại

WTP: WTP thực hiện bước chuyển này khi nhận được cảnh báo DTLSEstablishFail từ DTLS, và 2 biến đếm FailedDTLSSessionCount hoặc FailedDTLSAuthFailCount chưa đạt tới giá trị MaxFailedDTLSSessionRetry. WTP cũng thực hiện bước chuyển này khi WaitDTLSTimer tới hạn.

AC: Không tồn tại bước chuyển này.

(*) Sulking  Sulking: Khi các nỗ lực kết nối DTLS của WTP thất bại vượt quá số lần cho phép

WTP: WTP thực hiện bước chuyển này khi 1 trong 2 biến đếm FailedDTLSSessionCount hoặc FailedDTLSAuthFailCount đạt tới giá trị MaxFailedDTLSSessionRetry. Khi bước vào trạng thái Sulking, WTP khởi động SilentIntervalTimer.

AC: Không tồn tại bước chuyển này.

(4) DTLS Setup  DTLS Setup: Khi việc thiết lập phiên làm việc DTLS thất bại WTP: Không tồn tại bước chuyển này.

AC:Listener Thread thực hiện bước chuyển này khi nhận được cảnh báo DTLSEstablishFail từ DTLS. Listener Thread tăng biến đếm FailedDTLSSessionCount lên 1, và gọi tới lệnh DTLSListen. (adsbygoogle = window.adsbygoogle || []).push({});

(5) DTLS Setup  Authorize: Bước chuyển này xảy ra khi một phiên làm việc DTLS được khởi tạo, và cần được xác thực.

WTP: Bước chuyển này xảy ra khi WTP nhận được thông báo DTLSPeerAuthorize. Chi tiết về quá trình xác thực sẽ được trình bày ở các mục sau.

AC: Module DTLS trên AC sẽ khởi tạo thông báo DTLSPeerAuthorize, và sau đó bước chuyển này sẽ được kiểm soát bởi Listener Thread. Listener Thread sẽ sử dụng hàm fork để tạo ra 1 bản copy của Service Thread, sau đó Service Thread mới tạo này sẽ tiến hành việc xác thực với WTP.

(6) Authorize  DTLS Setup: Listener Thread sẽ thực hiện bước chuyển này để kích hoạt chức năng lắng nghe các phiên làm việc mới.

AC: Bước chuyển này xảy ra khi Listener Thread tạo ra Service Thread, sau đó gọi lệnh DTLSListen.

(a) Authorize  DTLS Connect: Bước chuyển này diễn ra để thông báo cho stack DTLS rằng phiên làm việc đã được khởi tạo.

WTP: Bước chuyển này diễn ra khi WTP đã xác thực thành công AC. WTP sẽ gọi lệnh DTLSAccept để kết thúc bước chuyển.

AC: Bước chuyển này diễn ra khi AC xác thực WTP thành công. AC cũng gọi lệnh DTLSAccept để kết thúc bước chuyển.

(b) Authorize  DTLS Teardown: Bước chuyển này diễn ra để thông báo cho stack DTLS biết rằng phiên làm việc đã bị hủy bỏ.

WTP: Bước chuyển này diễn ra khi WTP không thể xác thực AC. WTP sẽ gọi lệnh DTLSAbortSession. Bước chuyển này cũng có thể diễn ra khi WaitDTLSTimer tới hạn. WTP sẽ khởi động DTLSSessionDeleteTimer.

AC: Tương tự, bước chuyển này diễn ra khi AC không thể xác thực WTP, hoặc WaitDTLSTimer tới hạn. AC cũng gọi lệnh DTLSAbortSession và sau đó khởi động DTLSSessionDeleteTimer.

(c) DTLS Connect  DTLS Teardown: Bước chuyển này xảy ra khi việc khởi tạo phiên làm việc DTLS thất bại.

WTP: Xảy ra khi WTP nhận được thông báo DTLSAborted hoặc DTLSAuthenticateFail, hoặc WaitDTLSTimer tới hạn. Tương ứng, WTP sẽ tăng các biến đếm FailedDTLSSessioncount hoặc FailedDTLSAuthFailCount, và khởi động DTLSSessionDeleteTimer.

AC: Xảy ra khi AC nhận được thông báo DTLSAborted hoặc DTLSAuthenticateFail, và 2 biến đếm FailedDTLSSessionCount và FailedDTLSAuthFailCount chưa đạt tới giá trị MaxFailedDTLSSessionRetry. Bước chuyển này cũng xảy ra trên AC khi WaitDTLSTimer tới hạn, và AC khởi động DTLSSessionDeleteTimer.

(d) DTLS Connect  Join: Bước chuyển này xảy ra khi phiên làm việc DTLS được khởi tạo thành công.

WTP: Bước chuyển này xảy ra khi WTP nhận được thông báo DTLSEstablished. Khi đó, biến đếm FailedDTLSSessionCount được xác định giá trị về 0. WTP chuyển vào trạng thái Join bằng cách truyền đi Join Request tới AC. WTP ngừng WaitDTLSTimer.

AC: Bước chuyển này xảy ra khi AC nhận được thông báo DTLSEstablished. AC xác định lại FailedDTLSSessionCount về 0, dừng WaitDTLSTimer, và khởi động WaitJoinTimer.

(e) Join  DTLS Teardown: Bước chuyển này xảy ra khi tiến trình Join thất bại. WTP: Bước chuyển này xảy ra khi WTP nhận được thông điệp Join Response với Result Code chứa lỗi, hoặc WTP nhận được một trong các thông báo: DTLSAborted, DTLSReassemblyFailure, hoặc DTLSPeerDisconnect. WTP sẽ gọi lệnh DTLSShutdown, và khởi động DTLSSessionDeleteTimer.

AC: Bước chuyển này xảy ra khi WaitJoinTimer tới hạn, hoặc AC trả về thông điệp JoinRespone với mã lỗi cho WTP. AC gọi lệnh DTLSShutdown. AC cũng thực hiện bước chuyển khi nhận được một trong các thông báo: DTLSAborted, DTLSReassemblyFailure, hoặc DTLSPeerDisconnect, và sau đó sẽ khởi động DTLSSessionDeleteTimer.

(f) Join  Image Data: Bước chuyển này được sử dụng bởi WTP và AC để download firmware.

WTP: WTP bước vào trạng thái Image Data khi nó nhận được một thông điệp Join Respone với trạng thái thành công, và xác định được phiên bản của firmware trong thông điệp khác với phiên bản mà WTP đang có, cũng như trong các bộ nhớ khác mà WTP có thể truy cập. WTP khởi tạo EchoIntervaltimer, và gửi ImageDataRequest tới AC, để yêu cầu bắt đầu việc download firmware.

AC: Khi AC nhận được ImageDataRequest từ WTP thì AC sẽ thực hiện bước chuyển này. AC bắt buộc phải trả lời bằng ImageDataRespone cho WTP.

(g) Join  Configure: WTP và AC sử dụng bước chuyển này để trao đổi các thông tin cấu hình.

WTP: WTP bước vào trạng thái Configure khi nó nhận được JoinRespone với mã thành công, và xác định được rằng nó không cần cập nhật firmware. WTP sẽ gửi thông điệp ConfigurationStatusRequest tới AC trong đó mô tả chi tiết cấu hình hiện tại của WTP.

AC: Bước chuyển này xảy ra khi AC nhận được ConfigurationStatusRequest từ WTP. AC ngừng WaitJoinTimer. AC sẽ gửi đi ConfigurationStatusRespone, và khởi động ChangeStatePendingTimer.

(h) Configure  Reset: Bước chuyển này được sử dụng để reset kết nối giữa WTP và AC, có thể bởi vì xuất hiện lỗi trong quá trình kết nối, cũng có thể vì WTP cần khởi động lại để các cấu hình mới có hiệu lực.

WTP: WTP thực hiện bước chuyển này khi nó nhận được một ConfigurationStatusRespone thông báo lỗi, hoặc WTP cần khởi động lại để áp dụng các cấu hình mới.

AC: AC bước vào trạng thái Reset khi nó nhận được ChangeStateEvent từ WTP, hoặc ChangeStatePendingTimer tới hạn.

(i) Configure  DTLS Teardown: Bước chuyển này xảy ra khi tiến trình cấu hình bị hủy bởi lỗi DTLS.

WTP: WTP bước vào trạng thái này khi nó nhận được một trong các thông báo sau của DTLS: DTLSAborted, DTLSReassemblyFailure, DTLSPeerDisconnect. WTP cũng có thể thực hiện bước chuyển này nếu nó thường xuyên nhận được thông báo DTLSDecapFailure. WTP khởi động DTLSSessionDeleteTimer. (adsbygoogle = window.adsbygoogle || []).push({});

AC: AC bước vào trạng thái này khi nó nhận được một trong các thông báo sau của DTLS: DTLSAborted, DTLSReassemblyFailure, DTLSPeerDisconnect, hoặc có thể thực hiện bước chuyển khi thường xuyên nhận được thông báo DTLSDecapFailure. AC cũng khởi động DTLSSessionDeleteTimer.

(j) Image Data  Image Data: Trạng thái Image Data được sử dụng bởi WTP và AC trong suốt quá trình download firmware.

WTP: WTP bước vào trạng thái Image Data khi nó nhận được thông điệp ImageDataResponse, có nghĩa rằng AC vẫn còn dữ liệu chưa gửi. Bước chuyển này cũng xảy ra khi WTP nhận được các ImageDataRequest kế tiếp, khi đó WTP sẽ reset giá trị của ImageDataStartTimer để chắc chắn rằng ImageDataRequest tiếp theo sẽ được gửi từ AC. Bước chuyển này cũng có thể xảy ra khi EchoIntervalTimer tới hạn, trong trường hợp WTP gửi EchoRequest và reset EchoIntervalTimer. Bước chuyển này cũng có thể xảy ra khi WTP nhận EchoResponse từ AC.

AC: Bước chuyển trạng thái này xảy ra khi AC nhận được thông điệp ImageDataResponse từ WTP trong khi AC đang ở trạng thái Image Data. Bước chuyển trạng thái này cũng xảy ra khi AC nhận EchoRequest từ WTP, trong trường hợp nó trả lời bằng EchoResponse, và reset EchoIntervalTimer.

(k) Image Data  Reset: Bước chuyển này được sử dụng để reset kết nối DTLS trước khi khởi động lại WTP sau khi download firmware.

WTP: Khi quá trình download hoàn tất, hoặc ImageDataStartTimer tới hạn, WTP bước vào trạng thái Reset. WTP có thể chuyển tới trạng thái này nếu nhận được thông báo lỗi qua ImageDataRequestRespone từ AC.

AC: AC bước vào trạng thái Reset khi quá trình truyền firmware tới WTP thành công, hoặc có lỗi xảy ra trong quá trình truyền firmware.

(l) Image Data  DTLS Teardown: Bước chuyển này diễn ra khi quá trình download bị hủy bởi lỗi DTLS.

WTP: WTP bước vào trạng thái DTLS Teardown khi nó nhận được một trong các thông báo DTLS sau: DTLSAborted, DTLSReassemblyFailure, hoặc DTLSPeerDisconnect. WTP có thể bước vào trạng thái này nếu nó thường xuyên nhận được thông báo DTLSDecapFailure. WTP sẽ khởi động DTLSSessionDeleteTimer.

AC: AC bước vào trạng thái này nếu nó nhận được một trong các thông báo DTLS: DTLSAborted, DTLSReassemblyFailure, hoặc DTLSPeerDisconnect. AC có thể bước vào trạng thái này nếu nó thường xuyên nhận được thông báo DTLSDecapFailure. AC sẽ khởi động DTLSSessionDeleteTimer.

(m) Configure  Data Check: Bước chuyển trạng thái này xảy ra khi WTP và AC xác nhận cấu hình.

WTP: WTP bước vào trạng thái Data Check khi nhận được thông báo thành công thông qua ConfigurationStatusResponse từ AC. WTP sẽ truyền đi ChangeStateEventRequest.

AC: Bước chuyển này diễn ra khi AC nhận được thông điệp ChangeStateEventRequest từ WTP. AC sẽ trả lời bằng thông điệp ChangeStateEventRespone. AC bắt buộc phải khởi động DataCheckTimer và dừng ChangeStatePendingTimer.

(n) Data Check  DTLS Teardown: Bước chuyển này diễn ra khi WTP không thể hoàn thành việc trao đổi kiểm tra dữ liệu.

WTP: Bước chuyển này diễn ra nếu WTP không nhận được thông điệp ChangeStateEventRespone trong một thời gian định trước (CAPWAP Retransmission Timeout). Bước chuyển này cũng có thể diễn ra do các giao thức tầng phía dưới. WTP sẽ khởi động DTLSSessionDeleteTimer.

AC: AC bước vào trạng thái này khi DataCheckTimer tới hạn. AC sẽ khởi động DTLSSessionDeleteTimer.

(o) Data Check  Run: Sau khi các kết nối cho đường điều khiển và đường dữ liệu đã được thiết lập xong, WTP và AC sẽ thực hiện bước chuyển này để bắt đầu hoạt động.

WTP: WTP bước vào trạng thái Run khi nó nhận được thông báo thành công từ ChangeStateEventResponse từ AC. WTP khởi tạo kênh dữ liệu, khởi động

DataChannelKeepAliveTimer và bắt đầu truyền các gói tin DataChannelKeepAlive. Sau đó, WTP khởi động EchoIntervalTimer và DataChannelDeadIntervalTimer.

AC: AC thực hiện bước chuyển trạng thái này khi nó nhận được gói tin DataChannelKeepAlive, trong gói tin đó có chứa SessionID. AC kiểm tra SessionID này giống với SessionID trong gói tin Join Request trước đó. AC tắt DataCheckTimer.

(p) Run  DTLS Teardown: Bước chuyển trạng thái này xảy ra khi có lỗi trong stack DTLS, khiến cho phiên làm việc DTLS phải bị hủy bỏ.

WTP: WTP thực hiện bước chuyển này khi nó nhận được một trong các thông báo DTLS là DTLSAborted, DTLSReassemblyFailure, hoặc DTLSPeerDisconnect. WTP cũng có thể bước vào trạng thái DTLS Teardown nếu WTP thường xuyên nhận được thông báo DTLSDecapFailure. WTP sẽ khởi động DTLSSessionDeleteTimer.

AC: Tương tự như WTP.

(q) Run  Run: Đây là bước chuyển trong hoạt động bình thường của giao thức CAPWAP.

WTP: WTP sẽ reset EchoIntervalTimer mỗi khi nó gửi đi một Request tới AC. AC: Trái ngược với WTP, mỗi khi nhận được một Request từ WTP, AC sẽ reset EchoInterval của mình.

(r) Run  Reset: Bước chuyển trạng thái này xảy ra khi WTP hoặc AC hủy kết nối. Bước chuyển này có thể là kết quả của các hoạt động bình thường, hoặc do có lỗi xảy ra.

WTP: WTP thực hiện bước chuyển này khi nó nhận được thông điệp ResetRequest từ AC.

AC: AC thực hiện bước chuyển này khi nó truyền đi ResetRequest tới WTP.

(s) Reset  DTLS Teardown: Bước chuyển này được thực hiện khi quá trình reset CAPWAP đã kết thúc việc hủy phiên làm việc DTLS.

WTP: Bước chuyển trạng thái xuất hiện khi WTP gửi đi ResetResponse. WTP khởi động DTLSSessionDeleteTimer. (adsbygoogle = window.adsbygoogle || []).push({});

AC: Bước chuyển trạng thái này xảy ra khi AC nhận được ResetResponse. AC gọi lệnh DTLSShutdown, sau đó khởi động DTLSSessionDeleteTimer.

(t) DTLS Teardown  Idle: Bước chuyển trạng thái này xảy ra khi phiên làm việc DTLS đã bị kết thúc.

WTP: Bước chuyển này diễn ra khi WTP đã giải phóng tất cả các tài nguyên liên quan, hoặc DTLSSessionDeleteTimer tới hạn.

AC: Không tồn tại bước chuyển này.

(u) DTLS Teardown  Sulking: Bước chuyển trạng thái này diễn ra khi các nỗ lực lặp lại để thiết lập kết nối DTLS đều thất bại.

WTP: WTP thực hiện bước chuyển trạng thái này khi các biến đếm FailedDTLSessionCount hoặc FailedDTLSAuthFailCount đạt tới giá trị DTLSMaxFailedDTLSSessionRetry. Khi thực hiện bước chuyển này, WTP bắt buộc phải khởi động SilentIntervalTimer. Trong trạng thái Sulking, WTP sẽ bỏ qua tất cả các thông điệp CAPWAP và DTLS.

AC: Không tồn tại bước chuyển này.

(w) DTLS Teardown  Dead: Bước chuyển này diễn ra khi phiên làm việc DTLS bị tắt.

WTP: Không tồn tại bước chuyển này.

AC: AC thực hiện bước chuyển này sau khi đã giải phóng thành công toàn bộ các tài nguyên liên quan, hoặc DTLSSessionDeleteTimer tới hạn.

Một phần của tài liệu Nghiên cứu giải pháp phân chia tần số trong mạng Wifi sử dụng giao thức CAPWAP (Trang 27)