Sự khó chịu từ lỗi ‘Sticky Client’
Tất cả chúng ta đều đã từng gặp tình huống này: bạn đang trong một cuộc gọi Zoom quan trọng, di chuyển từ bàn làm việc sang phòng họp, và đột nhiên âm thanh trở nên rè và đứt quãng như tiếng robot. Laptop của bạn vẫn đang “khư khư” bám lấy tín hiệu yếu từ một Access Point (AP) cách đó 15 mét, phớt lờ cái ngay trên đầu bạn. Nó từ chối ngắt kết nối cho đến khi đường truyền thực sự chết hẳn. Chỉ sau 5 giây im lặng và cuộc gọi bị ngắt, nó mới chịu chuyển sang AP gần hơn.
Hành vi “sticky client” (thiết bị bám dính) này là một vấn đề gây đau đầu kinh điển trong quản trị mạng. Trong hầu hết các thiết lập, quyết định chuyển vùng (roaming) hoàn toàn phụ thuộc vào điện thoại hoặc laptop của bạn. Nếu không có sự phối hợp từ hạ tầng mạng, quá trình roaming sẽ diễn ra chậm chạp và gây gián đoạn. Nếu bạn đang xây dựng môi trường Wi-Fi dựa trên Linux bằng hostapd, đây có lẽ là nút thắt cổ chai lớn nhất mà bạn sẽ gặp phải.
Tại sao Roaming tiêu chuẩn lại thất bại
Roaming tiêu chuẩn là một thảm họa đối với lưu lượng truy cập thời gian thực. Khi một thiết bị khách (client) di chuyển từ AP-A sang AP-B trong thiết lập WPA2-PSK thông thường, nó sẽ kích hoạt quá trình xác thực lại toàn bộ. Quy trình này rất tốn thời gian: thiết bị phải quét các kênh, trao đổi các khung xác thực (authentication frames) và hoàn tất quá trình bắt tay 4 bước (4-way handshake) mới để tạo khóa mã hóa. Nếu bạn sử dụng WPA2-Enterprise, bạn còn phải đợi quá trình trao đổi RADIUS/EAP.
Toàn bộ chuỗi này có thể mất từ 100ms đến 500ms. Nghe có vẻ nhanh, nhưng các ứng dụng thời gian thực như SSH hoặc VoIP sẽ bắt đầu bị lag ngay khi độ trễ vượt quá ngưỡng 50ms. Bất cứ điều gì trên 200ms đều mang lại cảm giác như mất kết nối hoàn toàn. Thiết bị về cơ bản bị “mù” trong quá trình chuyển đổi này vì nó không biết các AP khác ở đâu cho đến khi nó ngừng truyền dữ liệu để quét tìm chúng.
Giải pháp ba chân kiềng: 802.11r, 802.11k và 802.11v
Để đạt được sự chuyển đổi thực sự mượt mà, bạn cần ba giao thức cụ thể hoạt động cùng nhau. Tôi đã triển khai bộ giao thức này trong các môi trường văn phòng mật độ cao, và nó luôn giúp giảm thời gian roaming xuống mức mà ngay cả các cuộc gọi VoIP nhạy cảm cũng không bị rớt một gói tin nào.
802.11r (Fast BSS Transition)
802.11r, hay Chuyển tiếp nhanh (FT), là thành phần quan trọng nhất. Nó cho phép thiết bị khách và AP mới thực hiện quá trình bắt tay 4 bước trước khi thiết bị thực sự chuyển sang. Vào thời điểm thiết bị ngắt liên kết với AP-A, nó đã thương lượng xong các khóa với AP-B. Điều này giúp cắt giảm thời gian chuyển đổi xuống dưới 50ms.
802.11k (Radio Resource Management)
802.11k cung cấp cho thiết bị khách một bản đồ mạng. Thay vì quét tất cả hơn 40 kênh có thể—vốn gây tốn pin và lãng phí thời gian—thiết bị khách sẽ yêu cầu một “Neighbor Report” (Báo cáo lân cận). AP sẽ phản hồi bằng một danh sách các điểm truy cập gần đó và tải hiện tại của chúng. Giờ đây, thiết bị khách biết chính xác kênh nào cần chuyển đến tiếp theo.
802.11v (BSS Transition Management)
802.11v cung cấp khả năng điều phối cho mạng lưới. Nếu AP-A nhận thấy cường độ tín hiệu (RSSI) của thiết bị khách giảm xuống dưới -75 dBm trong khi AP-B đang rảnh rỗi với tín hiệu -50 dBm, nó có thể gửi một Yêu cầu Quản lý Chuyển tiếp BSS. Về cơ bản, nó sẽ nhắc nhở thiết bị khách: “Bạn sẽ có kết nối tốt hơn nhiều nếu chuyển sang AP-B ngay bây giờ.”
Triển khai cấu hình trong hostapd
Việc thiết lập này yêu cầu sửa đổi tệp hostapd.conf của bạn. Tôi giả định rằng bạn đã có một thiết lập cơ bản đang hoạt động. Bây giờ chúng ta sẽ thêm các tham số cho 802.11r, k và v.
Bước 1: Cấu hình 802.11r cơ bản
Đầu tiên, chúng ta xác định Mobility Domain. Mọi AP mà thiết bị khách có thể roaming qua lại phải chia sẻ cùng một ID hex 4 ký tự.
# Chuyển tiếp BSS nhanh 802.11r
mobility_domain=e642
# Bật FT qua sóng vô tuyến (0) hoặc qua DS (1)
ft_over_ds=0
# Định danh duy nhất cho AP cụ thể này
nas_identifier=ap-office-01
# Tự động tạo R0KH và R1KH cục bộ
ft_psk_generate_local=1
Bước 2: Quản lý khóa
Để 802.11r hoạt động trên nhiều thiết bị phần cứng, các AP phải tin tưởng lẫn nhau. Bạn cần định nghĩa danh sách R0KH (Remote Key Holder) và R1KH để AP-1 có thể xác minh quá trình bắt tay trước đó của thiết bị khách với AP-2.
Trên AP-1 (IP: 192.168.1.10, MAC: aa:bb:cc:dd:ee:01):
# Định dạng: [MAC] [NAS-ID] [Khóa Hex 32 ký tự]
# Mục nhập AP cục bộ
r0kh=aa:bb:cc:dd:ee:01 ap-office-01 00112233445566778899aabbccddeeff
r1kh=aa:bb:cc:dd:ee:01 aa:bb:cc:dd:ee:01 00112233445566778899aabbccddeeff
# Mục nhập AP từ xa (AP-2)
r0kh=aa:bb:cc:dd:ee:02 ap-office-02 00112233445566778899aabbccddeeff
r1kh=aa:bb:cc:dd:ee:02 aa:bb:cc:dd:ee:02 00112233445566778899aabbccddeeff
Khóa hex 32 ký tự phải giống hệt nhau trên mọi AP trong nhóm roaming của bạn.
Bước 3: Kích hoạt 802.11k và 802.11v
Các cài đặt này khá đơn giản nhưng cực kỳ quan trọng để các thiết bị iPhone và Android hiện đại hoạt động trơn tru.
# 802.11k: Báo cáo lân cận (Neighbor) và Beacon
rrm_neighbor_report=1
rrm_beacon_report=1
# 802.11v: Chuyển tiếp BSS và Chế độ ngủ
bss_transition=1
wnm_sleep_mode=1
# Đẩy thiết bị khách roaming nếu ACK thất bại khi tín hiệu thấp
disassoc_low_ack=1
Bước 4: Cập nhật quản lý khóa
Bạn phải yêu cầu hostapd quảng bá các bộ hỗ trợ FT. Cập nhật dòng wpa_key_mgmt của bạn để bao gồm FT-PSK:
wpa_key_mgmt=WPA-PSK FT-PSK
Kiểm tra và Xác minh
Sau khi bạn khởi động lại hostapd, hãy kiểm tra kết nối từ thiết bị khách. Nếu bạn đang sử dụng laptop Linux, hãy kiểm tra trạng thái bằng wpa_cli.
sudo wpa_cli -i wlan0 status
Tìm dòng key_mgmt=FT-PSK. Nếu nó vẫn hiển thị WPA2-PSK, quá trình chuyển tiếp nhanh đã không được kích hoạt. Bạn cũng có thể chạy lệnh ping liên tục đến gateway của mình trong khi di chuyển giữa các AP. Trong một thiết lập tiêu chuẩn, bạn có thể thấy 3-4 gói tin bị rớt. Với những tối ưu hóa này, bạn sẽ thấy không có gói tin nào bị rớt và độ trễ chỉ tăng vọt không quá 30-50ms trong quá trình chuyển đổi.
Các lỗi thường gặp
Tôi đã thấy nhiều đợt triển khai 802.11r thất bại vì ba sai sót cụ thể sau:
- Lệch thời gian (Clock Drift): Nếu các AP có thời gian hệ thống khác nhau, các khóa bắt tay có thể bị từ chối vì hết hạn. Hãy sử dụng NTP để giữ chúng đồng bộ hoàn hảo.
- Kết nối L2: Roaming chỉ hoạt động nếu tất cả các AP nằm trên cùng một phân đoạn Lớp 2 (cùng VLAN/bridge). Nếu thiết bị khách phải nhận địa chỉ DHCP mới sau khi di chuyển, 802.11r sẽ trở nên vô dụng.
- Giới hạn của Driver: Một số card Wi-Fi giá rẻ không hỗ trợ FT offloading. Hãy kiểm tra xem phần cứng của bạn có hỗ trợ
NL80211_IFTYPE_APhay không trước khi mất thời gian loay hoay với các tệp cấu hình.
Lời kết
Cải thiện hiệu suất Wi-Fi không chỉ là tăng công suất phát. Trên thực tế, việc tăng công suất thường làm cho vấn đề “sticky client” trở nên tồi tệ hơn. Bằng cách triển khai 802.11r, k và v, bạn cung cấp cho thiết bị dữ liệu cần thiết để đưa ra các quyết định roaming thông minh. Có thể mất chút công sức cấu hình thủ công trong hostapd, nhưng kết quả là một trải nghiệm không dây chuyên nghiệp, ổn định ngay cả khi bạn đang di chuyển.

