คู่มือเกมแลค › L2 OS และอุปกรณ์ฝั่งไคลเอนต์
สลับ Wi-Fi ↔ LTE/5G Network switch changes IP
ID สาเหตุ co-netswitch · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม), อินฟราเครือข่าย (ทีมอินฟรา)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
เมื่อเดินออกจากบ้านแล้ว Wi-Fi หลุดและเปลี่ยนไปใช้ LTE หรือ 5G IP address ของเราจะเปลี่ยน การเชื่อมต่อเดิมจึงใช้ไม่ได้
ทำไม สัญญาณ Wi-Fi อ่อนลงจนสลับไปใช้เครือข่ายมือถือ → ผลคือ IP address ของเราเปลี่ยน การเชื่อมต่อที่สร้างด้วยที่อยู่เดิมจึงรับส่งต่อไม่ได้ → บนหน้าจอ ค้างไปครู่หนึ่ง แล้วหลุดหรือเชื่อมต่อใหม่
อาการ ค้าง , หลุด
ปัจจัย แพ็กเก็ตหาย
ใครเจอ เราคนเดียว
เกิดเมื่อไร ระหว่างเดินทาง/ย้ายแมพ
ผู้รับผิดชอบ ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม), อินฟราเครือข่าย (ทีมอินฟรา)
งานฝั่งทีมพัฒนาเกม เซิร์ฟเวอร์: ใช้ session token รับช่วงเป็นผู้เล่นคนเดิมแม้ที่อยู่เปลี่ยน และปิดการเชื่อมต่อของที่อยู่เดิมทันที, พิจารณาโปรโตคอลที่การเชื่อมต่อยังอยู่ได้แม้ที่อยู่เปลี่ยน (เช่น connection migration ของ QUIC) ไคลเอนต์: เมื่อตรวจพบการสลับเครือข่าย ให้เชื่อมต่อใหม่ด้วย session token ทันทีโดยไม่ต้องรอ heartbeat timeout
งานฝั่งทีมอินฟรา ถ้าใช้ connection migration ของ QUIC ให้ตั้งโหลดบาลานเซอร์ให้เลือกเซิร์ฟเวอร์ด้วย connection ID แทนที่อยู่และพอร์ต (ถ้าเลือกด้วยที่อยู่และพอร์ต แพ็กเก็ตที่มาจากที่อยู่ใหม่จะไปลงเซิร์ฟเวอร์อื่น)
บนกราฟ การเชื่อมต่อหลุดพร้อมกัน · จำนวนครั้งที่หลุดและเชื่อมต่อใหม่, IP ที่เปลี่ยนตอนเชื่อมต่อใหม่
จุดที่ต้องดู หาบันทึกใน log การเชื่อมต่อของเซิร์ฟเวอร์ที่ session token เดียวกันเชื่อมต่อใหม่ด้วย IP อื่น แล้วเทียบกับเวลาของ callback การเปลี่ยน default network ฝั่งไคลเอนต์ (registerDefaultNetworkCallback) สัญญาณว่าใช่ หลังหลุดแล้วเชื่อมต่อใหม่ IP เปลี่ยนจากช่วง IP ของ Wi-Fi (เน็ตบ้าน) ไปเป็นช่วง IP ของค่ายมือถือ หรือกลับกัน และก่อนหน้านั้นมี callback การสลับเครือข่ายเข้ามา สัญญาณว่าไม่ใช่ IP เดิมแต่หลุด: น่าจะเป็น “handover ระหว่างเสาสัญญาณ (ขณะเดินทาง)” หรือ “สัญญาณมือถืออ่อนหรืออยู่ในจุดอับสัญญาณ” วิธีตรวจ ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง Read network state Android (Google) เมื่อ default network เปลี่ยน การเชื่อมต่อใหม่จะไปทางเครือข่ายใหม่ และการเชื่อมต่อบนเครือข่ายเดิมสุดท้ายจะถูกตัด ตรวจจับการสลับได้ด้วย registerDefaultNetworkCallback RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport IETF connection ID ทำให้การเชื่อมต่อคงอยู่แม้ IP address และพอร์ตเปลี่ยน (บทที่ 9) โหลดบาลานเซอร์ที่กระจายโหลดด้วยที่อยู่และพอร์ตอย่างเดียว อาจส่งแพ็กเก็ตที่มาจากที่อยู่ใหม่ไปยังเซิร์ฟเวอร์อื่น (หัวข้อ 5.2.3) RFC 9293: Transmission Control Protocol (TCP) IETF การเชื่อมต่อ TCP ระบุด้วยคู่ซ็อกเก็ต (ที่อยู่และพอร์ต) ของปลายทั้งสองฝั่ง
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L2 OS และอุปกรณ์ฝั่งไคลเอนต์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (ค้าง)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง