한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

คู่มือเกมแลค › L4 เส้นทางอินเทอร์เน็ต

IP ที่ ISP ให้ใช้ร่วมกัน (CGNAT) Carrier-grade NAT

ID สาเหตุ isp-cgnat · ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม), อินฟราเครือข่าย (ทีมอินฟรา)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

เครือข่ายมือถือและ ISP บางรายให้ผู้ใช้บริการหลายรายใช้ IP เดียวร่วมกัน และลบ mapping ของการเชื่อมต่อที่ idle ภายในเวลาสั้น ๆ

ทำไม อุปกรณ์ของ ISP ดูแลตารางเซสชันของผู้ใช้บริการจำนวนมหาศาล → ผลคือ ตารางเซสชันมีขีดจำกัด และ idle timeout สั้น → บนหน้าจอ อยู่เฉย ๆ แล้วหลุด, false positive ที่ทำให้คนที่ใช้ IP เดียวกันถูกบล็อกไปพร้อมกัน

อาการ
หลุด, เข้าเกมไม่ได้/โหลดไม่จบ
ปัจจัย
แพ็กเก็ตหาย
ใครเจอ
บางพื้นที่/บาง ISP
เกิดเมื่อไร
หลังอยู่เฉย ๆ สักพัก
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม), อินฟราเครือข่าย (ทีมอินฟรา)
งานฝั่งทีมพัฒนาเกม
ไคลเอนต์: ส่ง heartbeat ทุกช่วงไม่เกินครึ่งหนึ่งของ idle timeout ที่สั้นที่สุด (เครือข่ายมือถือบางแห่งอยู่ราว 30 วินาที) โดยให้ไคลเอนต์เป็นฝ่ายส่ง เพราะ mapping ของ CGNAT ฝั่ง ISP จะต่ออายุแน่นอนก็ต่อเมื่อมีแพ็กเก็ตจากข้างในส่งออกไปเท่านั้น, เชื่อมต่อใหม่อัตโนมัติเมื่อหลุด เซิร์ฟเวอร์: ตอบ heartbeat และถ้าไม่ได้รับตามเวลาที่กำหนดให้เก็บกวาดการเชื่อมต่อก่อน, ถ้า mapping เปลี่ยนจน IP หรือพอร์ตเปลี่ยน ให้ใช้ session token รับต่อเป็นผู้เล่นคนเดิม, IP เดียวอาจมีหลายคนใช้ร่วมกัน จึงต้องระวังนโยบายบล็อกตาม IP (ตัดสินร่วมกับบัญชีและอุปกรณ์)
งานฝั่งทีมอินฟรา
ปรับเกณฑ์จำนวนการเชื่อมต่อต่อ IP และจำนวนการเชื่อมต่อใหม่ต่อวินาทีของไฟร์วอลล์และอุปกรณ์ป้องกัน DDoS ให้เหมาะกับ IP ที่ ISP ให้ใช้ร่วมกัน (เพิ่มเกณฑ์หรือยกเว้นช่วง IP ของค่ายมือถือ)
ตัวเลขที่ควรรู้
idle timeout ของ UDP ในเครือข่ายมือถือบางแห่งอยู่ราว 30 วินาที
บนกราฟ
การเชื่อมต่อหลุดพร้อมกัน · จำนวนครั้งที่หลุด (heartbeat timeout), ระยะเวลา idle ก่อนหลุด (แยกตาม ISP)
จุดที่ต้องดู
ดูจำนวนบัญชีที่เชื่อมต่อพร้อมกันจาก IP เดียวและ ISP (ASN) จาก log การเชื่อมต่อ แล้วรวบรวมระยะเวลา idle ของการเชื่อมต่อที่หลุดหลังอยู่เฉย ๆ แยกตาม ISP ฝั่งผู้เล่นให้ดู IP อินเทอร์เน็ต (WAN) ในหน้าตั้งค่าเราเตอร์
สัญญาณว่าใช่
ในช่วง IP ของค่ายมือถือ มีหลายบัญชีเชื่อมต่อจาก IP เดียว และระยะเวลา idle ก่อนหลุดกระจุกอยู่ที่ราว 30–60 วินาที IP WAN ของเราเตอร์อยู่ใน 100.64.0.0/10 (ที่อยู่ร่วมสำหรับ NAT ของ ISP) หรือไม่ตรงกับ IP ที่เซิร์ฟเวอร์เห็น
สัญญาณว่าไม่ใช่
ถ้าไม่เกี่ยวกับ ISP แต่กระจุกที่ผู้ที่ใช้เราเตอร์ในบ้าน น่าจะเป็น “NAT mapping หมดอายุ”
วิธีตรวจ
ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม

แหล่งอ้างอิง

  1. A Multi-perspective Analysis of Carrier-Grade NAT Deployment (IMC 2016) ACM
    ระยะเวลาคง mapping ของ UDP ใน NAT ที่วัดได้อยู่ที่ 10–200 วินาที, 74% ไม่เกิน 1 นาที, ค่ามัธยฐานของ CGN คือเครือข่ายมือถือ 65 วินาที และเครือข่ายแบบมีสาย 35 วินาที
  2. RFC 6888: Common Requirements for Carrier-Grade NATs (CGNs) IETF
    CGN ต้องรองรับการจำกัดจำนวนพอร์ตภายนอกต่อผู้ใช้บริการ และการจำกัดอัตราการสร้าง mapping ใหม่
  3. RFC 6269: Issues with IP Address Sharing IETF
    เมื่อหลายคนใช้ IP ร่วมกัน การบล็อกตาม IP (penalty box) จะบล็อกผู้ใช้บริการคนอื่นที่ใช้ IP เดียวกันไปด้วย
  4. RFC 6598: IANA-Reserved IPv4 Prefix for Shared Address Space IETF
    100.64.0.0/10 คือช่วง IP ร่วมที่ใช้ระหว่างอุปกรณ์ NAT ของ ISP (CGN) กับเราเตอร์ของผู้ใช้บริการ

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: L4 เส้นทางอินเทอร์เน็ต

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (หลุด)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง