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

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

เส้นทาง ECMP เส้นหนึ่งเสีย ECMP / link bundle member fault

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

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

ISP และดาต้าเซ็นเตอร์มีหลายเส้นทางไปยังปลายทางเดียวกัน และกำหนดเส้นทางหนึ่งเส้นให้แต่ละการเชื่อมต่อ ถ้าเสียแค่เส้นเดียว คนที่ถูกจัดให้ใช้เส้นนั้นจะแลคอยู่ตลอด

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

อาการ
วาร์ป, ดีดกลับ, กระตุก
ปัจจัย
แพ็กเก็ตหาย, จิตเตอร์
ใครเจอ
เราคนเดียว, บางพื้นที่/บาง ISP
เกิดเมื่อไร
ตลอดเวลา
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก อินฟราเครือข่าย (ทีมอินฟรา) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม), ภายนอก (ภายนอก)
งานฝั่งทีมพัฒนาเกม
เก็บสถิติแพ็กเก็ตหายและการส่งซ้ำแยกตามการเชื่อมต่อ ให้ดึง IP, พอร์ต และเวลาของคนที่เจอปัญหาได้ (TCP ใช้จำนวนการส่งซ้ำจาก TCP_INFO, UDP คำนวณจาก sequence number ที่ขาดหาย)
งานฝั่งทีมอินฟรา
รวบรวม IP, พอร์ต และเวลาของคนที่เจอปัญหาส่งให้ ISP หรือดาต้าเซ็นเตอร์, มอนิเตอร์แพ็กเก็ตหายแยกตามเส้นทาง, วัดเส้นทางด้วยโปรโตคอลและพอร์ตเดียวกับเกม (mtr --tcp หรือ --udp กับ --port), ถ้าเป็นเส้นทางในอุปกรณ์ของเรา ให้ถอดลิงก์หรืออุปกรณ์ที่เสียออกจากกลุ่ม
งานฝั่งภายนอก
ขอให้ ISP ตรวจและเปลี่ยนเส้นทางที่เสีย, แนะนำผู้เล่นให้เชื่อมต่อใหม่เพื่อเลี่ยงไปก่อน (กรณีที่เชื่อมต่อใหม่แล้วพอร์ตเปลี่ยน)
ตัวเลขที่ควรรู้
ถ้ามี 4 เส้นทาง จะมีผู้เล่นประมาณ 1 ใน 4 ที่เจอปัญหา แพ็กเก็ตที่ใช้วัดปิงบางครั้งวิ่งคนละเส้นกับเกม ผลจึงออกมาปกติ
บนกราฟ
สูงเฉพาะบางกลุ่ม · แพ็กเก็ตหาย/การส่งซ้ำแยกตามการเชื่อมต่อ (แยกตาม IP/พอร์ต)
จุดที่ต้องดู
ดูแพ็กเก็ตหายและการส่งซ้ำแยกตามการเชื่อมต่อโดยแบ่งตาม IP และพอร์ตต้นทาง แล้ววัดด้วย mtr แบบ UDP (-u) ไปที่พอร์ตเกม (-P) โดยกำหนดพอร์ตต้นทาง (-L) และทำซ้ำหลายรอบโดยเปลี่ยนพอร์ตต้นทาง ถ้าใส่แค่ -P โดยไม่มี -L พอร์ตต้นทางจะเปลี่ยนทุกคำขอ ทำให้หลายเส้นทางปนกัน
สัญญาณว่าใช่
ในภูมิภาคและ ISP เดียวกัน เฉพาะชุดพอร์ตต้นทาง (หรือ IP) บางชุดที่แพ็กเก็ตหายตลอด และเมื่อเชื่อมต่อใหม่จนพอร์ตเปลี่ยนก็กลับมาปกติ
สัญญาณว่าไม่ใช่
ถ้าเปลี่ยนพอร์ตแล้วยังแย่ทั้งหมด น่าจะเป็นความแออัดหรือเหตุขัดข้องของทั้งช่วงเครือข่าย
วิธีตรวจ
ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
รายละเอียดเพิ่มเติม
อุปกรณ์ (ECMP, LAG) จะล็อกเส้นทางให้แต่ละการเชื่อมต่อตามค่าที่คำนวณจาก IP และพอร์ต (บางอุปกรณ์ตั้งให้ใช้แค่ IP) เพื่อไม่ให้ลำดับแพ็กเก็ตในการเชื่อมต่อเดียวกันสลับกัน ในที่ที่ใช้แค่ IP แม้เชื่อมต่อใหม่ก็ยังได้เส้นทางเดิม อาการจึงไม่ดีขึ้น ดังนั้นถ้ามีรายงานอย่าง “ปิงปกติแต่เกมแลค” หรือ “เชื่อมต่อใหม่แล้วดีขึ้น” เข้ามาพร้อมกัน ให้สงสัยสาเหตุนี้

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

  1. RFC 7424: Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks IETF
    LAG และ ECMP เลือกลิงก์หนึ่งเส้นให้แต่ละ flow ด้วย hash ของฟิลด์ในเฮดเดอร์เพื่อรักษาลำดับแพ็กเก็ต (flow→ลิงก์ แบบหลายต่อหนึ่ง)
  2. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    เกณฑ์แยก flow ต่างกันตามการ implement (แค่ IP ปลายทาง, คู่ IP หรือรวมถึงพอร์ต), ในเครือข่ายหลายเส้นทาง ผล ping และ traceroute เชื่อถือได้ยาก
  3. mtr(8) manual page source mtr
    ออปชัน -u (UDP), -P (พอร์ตปลายทาง), -L (พอร์ตต้นทางของ UDP), ถ้าใส่แค่ -P จะใช้ลำดับของคำขอเป็นพอร์ตต้นทาง ทำให้พอร์ตเปลี่ยนทุกคำขอ

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

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

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

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