รู้จัก 802.11 Roaming และตัวช่วย
ต่อยอดจากโพสต์ที่แล้วเกี่ยวกับ AP Discovery (ใครยังไม่ได้อ่าน แนะนำให้อ่านก่อนนะครับ) วันนี้เรามาคุยเรื่อง Client Roaming กันครับ
Roaming หรือภาษาทางการคือ Reassociation คือการที่ client ย้ายจาก AP ตัวที่เกาะอยู่ไปเกาะ AP ตัวอื่นที่ใช้ SSID เดียวกัน จริงๆแล้ว reassociation เป็นฟีเจอร์บังคับของมาตรฐาน 802.11 ตั้งแต่ Wi-Fi gen แรกที่ออกมาปี 1998 ดังนั้นอุปกรณ์ Wi-Fi ทุกรุ่น ทุกยี่ห้อทำ roaming ได้หมด (แต่ใช้ได้หรือใช้ดีนี่อีกเรื่อง)
Roaming แค่หมายถึงความสามาถในการย้าย AP แต่สิ่งที่เราต้องการคือ seamless roaming หรือการทำ roaming โดยไม่สะดุด
แต่ปกติแล้ว seamless roaming ทำได้ค่อนข้างยากเนื่องด้วยข้อจำกัดหลายอย่างข้อ ตัวอย่างเช่นพอเราเดินห่างออกจาก AP ที่เกาะอยู่ สัญญาณ (RSSI) ก็จะเริ่มอ่อนลง พอถึงจุดที่สัญญาณอ่อน ซึ่งอาจจะอยู่ที่ -75dBm ตัว client จะทำ active scanning เพื่อสุ่มหา BSSID ตัวใหม่ แต่การสุ่มคือการเดา ซึ่งจะเจอหรือไม่เจอก็ไม่รู้
ในไทยเรามี Wi-Fi Channel ทั้งหมด 38 ช่อง (2.4GHz x 13 + 5GHz x 25) หากโชคดีสุ่มเจอ BSSID ตัวใหม่ก่อนที่ตัวเก่าจะหลุดก็รอดตัวไป แต่โดยสถิติแล้วมันมีโอกาสสูงที่ client จะ disconnect ก่อนที่เจอ AP ตัวใหม่
ปัญหาใหญ่อีกข้อคือ ถ้า client ต้อง authen ผ่าน 802.1X (WPA/WPA2 Enterprise) client ต้องทำ EAP reauthentication กับ RADIUS ใหม่ทุกครั้งที่ย้าย AP ซึ่งช้าและอาจจะกินเวลาเป็นวินาที ถ้าใครใช้พวก real-time steaming อย่าง Zoom, MS Teams หรือ VoIP จะเห็นว่าภาพกระตุกหรือเสียงหายในช่วงที่ต่อกับ AP ตัวใหม่
เพื่อแก้ปัญหาดังกล่าว ทาง WLAN supplier ต่างก็พัฒนา solution ที่ช่วยให้ client roam ได้เร็วขึ้นเช่นการใช้ Key Caching อย่าง PMK/OKC (Opportunistic Key Caching) หรือ CCKM (Cisco Centralized Key Management) เพื่อลดขั้นตอนและเวลาในการ reauthenticate แต่ปัญหาคือเทคโนโลยีพวกนี้เป็น proprietary หรือเทคโนโลยีเฉพาะของแต่ละบริษัท พอมันไม่ใช่มาตรฐาน ผู้ผลิต Wi-Fi NIC หลายเจ้าก็เลือกที่จะไม่ใส่ใน chipset ของตน
802.11k
ท้ายที่สุด ในปี 2008 ทาง IEEE ได้ประกาศเทคโนโลยีมาตรฐานที่ช่วยเพิ่มประสิทธิภาพในการทำ roaming มาตรฐานแรกคือ 802.11k หรือใช้ชื่ออย่างเป็นทางการว่า Radio Resource Measurement (RRM นี่ไม่ใช่ Radio Resource Management ที่ใช้จัดการพวกช่องสัญญาณและ Tx Power นะครับ) โดยใช้หลักการคือ client จะส่ง "Neighbor Report Request" action frame ให้ AP ที่เกาะอยู่ ถ้า AP เห็นมี AP ตัวอื่นที่อยู่ใน ESSID เดียวกันอยู่บริเวณใกล้เคียง มันจะส่ง "Neighbor Report Response" frame ที่มีข้อมูล Channel ของ AP ตัวนั้นๆ ฉะนั้น เวลาที่ client จะ roam มันรู้เลยว่าแถวนี้มี AP ตัวไหน อยู่ channel ไหน ไม่ต้องสุ่มส่ง Probe Request ทุกๆ channel ให้เสียเวลา ผลลัพธ์คือลดเวลาในการทำ roaming ลง
802.11r
มาตรฐานที่สองคือ 802.11r ที่มีชื่ออย่างเป็นทางการว่า Fast Basic Service Set Transition หรือเรียกสั้นๆว่า Fast Transition (FT) เทคโนโลยีนี้เน้นตอบโจทย์ AP ที่ใช้ 802.1X ซึ่งช่วยให้ client ไม่ต้องผ่านกระบวนการ re-authenticate กับ RADIUS server ทุกๆครั้งที่มีการย้าย AP .802.11r มีกลไกที่ค่อนข้างจะซับซ้อน แต่หลักการคร่าวๆคือการทำ Key Caching บน AP ทุกตัว ซึ่งเวลา authenticate สามารถ เช็คกับ Key ที่ถูก cache ไว้บน AP ตัวใหม่ แทนที่ต้องทำ EAP Authentication กับ RADIUS และอีกข้อที่ช่วยประหยัดเวลาคือการรวม 4-way handshake ใน FT action frame ซึ่งช่วยลดขั้นตอนลงไปได้มาก
802.11v
แค่นี้ยังไม่จบ ในปี 2011 IEEE ออกมาตรฐานใหม่อีกตัวใช้ชื่อว่า 802.11v หรือ BSS Transition (BT) Management ซึ่งจะใช้ร่วมกับ 802.11k ไอเดียคือ AP สามารถแนะนำ client ให้ย้ายไปเกาะ BSSID ตัวอื่นได้ เช่น AP อาจจะเห็นว่า client เกาะ BSSID ของ 2.4GHz อยู่และต้องการให้มันย้ายไปเกาะ BSSID 5GHz แทน หรือถ้า AP ได้ neighbor report จาก 802.11k มันอาจจะแนะนำให้ client ย้ายไปเกาะ BSSID ของ AP อีกตัวเพื่อ load balance แต่ในการใช้งานจริง client ส่วนใหญ่จะไม่สนและไม่ย้าย ซึ่ง AP เองก็ทำอะไรไม่ได้
สรุปคือ 802.11k ถ้าเปิดได้ควรเปิด ส่วน 802.11r ถ้าไม่ใช้ .1X จริงๆก็ไม่ต้องเปิดก็ได้ ถ้าเราใช้ PSK 802.11r ก็ช่วยได้นิดหน่อยแต่อาจจะไม่เห็นความแตกต่าง ส่วน 802.11v เปิดหรือปิดก็ไม่ต่างกันเพราะยังไง client ก็เป็นผู้เลือกอยู่แล้ว แต่ข้อควรระวังคือก่อนที่จะเปิด 802.11r เราต้องทดลองกับ client ที่ใช้ก่อนเพราะ client ที่ไม่รองรับอาจจะมีปัญหาเกาะกับ SSID ไม่ได้