ความแม่นยำของการซิงค์เวลา NTP ถึงขีดจำกัดทางกายภาพแม้จะมีการปรับปรุงฮาร์ดแวร์

ทีมชุมชน BigGo
ความแม่นยำของการซิงค์เวลา NTP ถึงขีดจำกัดทางกายภาพแม้จะมีการปรับปรุงฮาร์ดแวร์

การสำรวจล่าสุดเกี่ยวกับความแม่นยำของ Network Time Protocol (NTP) บนระบบ Linux ได้จุดประกายการถกเถียงอย่างเข้มข้นในหมู่ผู้เชี่ยวชาญด้านเวลาเกี่ยวกับขีดจำกัดในโลกแห่งความเป็นจริงของการซิงโครไนซ์เวลา แม้ว่าบล็อกโพสต์ต้นฉบับจะอ้างว่าสามารถบรรลุความแม่นยำระดับไมโครวินาทีโดยใช้ Chrony และเซิร์ฟเวอร์ที่รองรับ GPS แต่ชุมชนทางเทคนิคได้ตั้งข้อกังวลที่สำคัญเกี่ยวกับวิธีการและข้อสรุป

ความไม่สมมาตรของฮาร์ดแวร์สร้างข้อผิดพลาดที่มองไม่เห็น

ความท้าทายที่สำคัญที่สุดในการบรรลุการซิงค์เวลาที่แม่นยำมาจากความแตกต่างของฮาร์ดแวร์เครือข่ายที่สร้างข้อผิดพลาดของเวลาที่ NTP เองมองไม่เห็น เมื่อแพ็กเก็ตเครือข่ายเดินทางผ่านสวิตช์และเราเตอร์ที่มีความเร็วต่างกัน เช่น ลิงก์ 100 Mbps ถึง 1 Gbps พวกมันจะสร้างความล่าช้าที่ไม่สมมาตรซึ่งสามารถเกิน 1 ไมโครวินาทีของข้อผิดพลาด ความล่าช้าเหล่านี้ไม่ปรากฏในสถิติที่ NTP รายงานตัวเอง ทำให้อันตรายเป็นพิเศษสำหรับการอ้างความแม่นยำ

สวิตช์องค์กรสมัยใหม่เพิ่มความซับซ้อนอีกชั้นหนึ่งด้วยพฤติกรรมที่หลากหลาย บางตัวใช้ cut-through switching ในทิศทางหนึ่งและ store-and-forward ในอีกทิศทางหนึ่ง ขึ้นอยู่กับขนาดเฟรมและการรวมความเร็ว พฤติกรรมที่ไม่สอดคล้องกันนี้หมายความว่าแม้แต่เส้นทางเครือข่ายที่เหมือนกันก็สามารถมีลักษณะเวลาที่แตกต่างกัน

Cut-through switching: วิธีการที่สวิตช์เริ่มส่งต่อแพ็กเก็ตก่อนที่จะได้รับแพ็กเก็ตทั้งหมด ลดความล่าช้าแต่อาจสร้างความไม่สมมาตรของเวลา

แหล่งที่มาทั่วไปของข้อผิดพลาดด้านเวลา

  • ความไม่สมมาตรของเครือข่าย: 1+ ไมโครวินาทีจากความเร็วการเชื่อมต่อที่หลากหลาย (100M/1G/10G)
  • พฤติกรรมของ Switch: การประมวลผลแบบ cut-through และ store-and-forward ที่แปรผัน
  • การแบ่งช่วงของ GPS: สามารถแก้ไขได้ด้วยการชดเชยแบบ sawtooth
  • ความล่าช้าของ PCIe: 500+ นาโนวินาทีโดยไม่มีการสนับสนุน PTM
  • ความแตกต่างของสถาปัตยกรรม CPU: แตกต่างกันระหว่าง x86 TSC และการจับเวลาของ ARM
  • การจัดการพลังงาน: การปรับขนาดความถี่ส่งผลต่อความสม่ำเสมอของการจับเวลา

โมดูล GPS ต้องการการกำหนดค่าพิเศษสำหรับเวลา

ผู้ชื่นชอบเวลาจำนวนมากมองข้ามข้อกำหนดที่สำคัญสำหรับเซิร์ฟเวอร์เวลาที่ใช้ GPS คือการกำหนดค่าโหมดนิ่ง โมดูล GPS ที่ออกแบบมาสำหรับการนำทางจะคำนวณตำแหน่งของพวกมันใหม่อยู่เสมอ ทำให้เกิดการสั่นไหวของเวลา อย่างไรก็ตาม เมื่อกำหนดค่าสำหรับแอปพลิเคชันเวลาและอนุญาตให้วัดในตำแหน่งคงที่เป็นเวลาหลายวัน พวกมันสามารถบรรลุความมั่นคงที่น่าทึ่ง

โมดูลเวลา GPS ระดับสูงเช่น u-blox M8T สามารถบรรลุ 10 นาโนวินาทีของการเบี่ยงเบนเมื่อกำหนดค่าอย่างเหมาะสม นี่เกี่ยวข้องกับการเปิดใช้งานโหมดนิ่งและการให้ข้อมูลการแก้ไข sawtooth เพื่อชดเชยการจัดตำแหน่งระหว่างเวลา GPS และนาฬิกาภายในของโมดูล

Sawtooth correction: เทคนิคที่คำนึงถึงข้อผิดพลาดของเวลาที่เกิดจากการจัดตำแหน่งสัญญาณ GPS กับออสซิลเลเตอร์นาฬิกาภายในของเครื่องรับ

PTP เทียบกับ NTP: เครื่องมือที่เหมาะสมสำหรับงาน

การอภิปรายเผยให้เห็นการแบ่งแยกพื้นฐานระหว่างผู้สนับสนุน NTP และ Precision Time Protocol (PTP) แม้ว่า NTP สามารถบรรลุผลลัพธ์ที่น่าประทับใจด้วยการประทับเวลาฮาร์ดแวร์ที่เหมาะสม แต่ PTP ได้รับการออกแบบตั้งแต่เริ่มต้นสำหรับความแม่นยำระดับซับไมโครวินาที สวิตช์เครือข่ายที่รองรับ PTP สามารถให้การแก้ไขความล่าช้าที่ NTP เข้าถึงไม่ได้

อย่างไรก็ตาม PTP มาพร้อมกับข้อจำกัดของตัวเอง มันไม่ทำงานผ่าน WiFi หรืออะแดปเตอร์ USB-Ethernet ทำให้ไม่เหมาะสมสำหรับการตั้งค่าแล็ปท็อปและ Raspberry Pi จำนวนมาก มาตรฐาน IEEE 1588 ยังถูกกั้นด้วยการชำระเงิน จำกัดการพัฒนาชุมชนและเอกสาร

ปัญหาของโพสต์ประเภทนี้คือนี่เป็นพื้นที่ที่หลายคนไม่คุ้นเคย และการให้คำแถลงที่เป็นทางการจำนวนมากทำให้มันน่าเชื่อถือในแง่มูลค่าที่เห็น

การเปรียบเทียบความแม่นยำของเวลา

วิธีการ ความแม่นยำทั่วไป ความต้องการด้านฮาร์ดแวร์
NTP พื้นฐาน 1-10 มิลลิวินาที อินเทอร์เฟซเครือข่ายมาตรฐาน
Chrony กับ GPS 10-100 ไมโครวินาที โมดูล GPS , ออสซิลเลเตอร์คุณภาพดี
PTP กับการประทับเวลาด้วยฮาร์ดแวร์ 100 นาโนวินาที - 1 ไมโครวินาที NIC และสวิตช์ที่รองรับ PTP
GPS กับโหมดนิ่ง 10 นาโนวินาที โมดูล GPS เกรดการจับเวลา ( u-blox M8T )
ระบบ PCIe PTM ต่ำกว่า 100 นาโนวินาที CPU Intel กับ NIC ที่รองรับ PTM

แอปพลิเคชันในโลกแห่งความเป็นจริงขับเคลื่อนข้อกำหนด

การแสวงหาความแม่นยำเวลานาโนวินาทีไม่ใช่เพียงวิชาการ หอส่งสัญญาณโทรศัพท์มือถือพึ่งพาเวลาที่แม่นยำเพื่อหลีกเลี่ยงการรบกวน การซื้อขายความถี่สูงต้องการการประทับเวลาตามกฎระเบียบ และฐานข้อมูลแบบกระจายเช่น Google Spanner ใช้เวลาเพื่อให้แน่ใจว่าการเรียงลำดับเหตุการณ์ถูกต้อง อย่างไรก็ตาม สำหรับแอปพลิเคชันส่วนใหญ่ ความแม่นยำมิลลิวินาทีพิสูจน์แล้วว่าเพียงพอ

ข้อมูลเชิงลึกสำคัญจากการอภิปรายชุมชนคือการเข้าใจว่าคุณต้องการความแม่นยำสัมบูรณ์ (เวลาที่ถูกต้องทั่วโลก) หรือความแม่นยำสัมพัทธ์ (เวลาที่สอดคล้องกันทั่วเครือข่ายของคุณ) แอปพลิเคชันจำนวนมากต้องการเพียงหลังนี้ ทำให้ออสซิลเลเตอร์ที่ควบคุมด้วย GPS ราคาแพงไม่จำเป็น

วิธีการสำคัญกว่าฮาร์ดแวร์

ผู้ตรวจสอบผู้เชี่ยวชาญเน้นปัญหาวิธีการจำนวนมากที่สามารถทำให้การวัดเวลาไม่ถูกต้อง การผสมสถาปัตยกรรม CPU ที่แตกต่างกัน (x86 เทียบกับ ARM) การไม่คำนึงถึงความล่าช้าของธุรกรรม PCIe และไม่พิจารณาผลกระทบของการจัดการพลังงาน ทั้งหมดนี้มีส่วนทำให้เกิดข้อผิดพลาดในการวัด

วิธีการที่เชื่อถือได้ที่สุดเกี่ยวข้องกับการใช้ฮาร์ดแวร์เวลาเฉพาะที่มีคุณสมบัติเช่น PCIe Precision Time Measurement (PTM) ของ Intel หรือ Time-Sensitive GPIO (TGPIO) สำหรับการวัด 1PPS โดยตรง หากไม่มีฮาร์ดแวร์เฉพาะทางดังกล่าว การบรรลุและตรวจสอบความแม่นยำระดับซับไมโครวินาทีจะกลายเป็นเรื่องที่ท้าทายอย่างยิ่ง

1PPS: One Pulse Per Second - สัญญาณเวลาที่ให้การอ้างอิงที่แม่นยำสำหรับการซิงโครไนซ์

บทเรียนที่กว้างขึ้นจากการถกเถียงทางเทคนิคนี้คือการซิงโครไนซ์เวลายังคงเป็นสาขาที่ซับซ้อนซึ่งรายละเอียดเล็กๆ สามารถมีผลกระทบใหญ่ แม้ว่าฮาร์ดแวร์สำหรับผู้บริโภคจะยังคงปรับปรุง แต่การบรรลุเวลาที่แม่นยำอย่างแท้จริงยังคงต้องการความใส่ใจอย่างระมัดระวังต่อทุกส่วนประกอบในเส้นทางสัญญาณ ตั้งแต่เสาอากาศ GPS ไปจนถึงสวิตช์เครือข่ายไปจนถึงสถาปัตยกรรม CPU

อ้างอิง: The Limits of NTP Accuracy on Linux