การสำรวจล่าสุดเกี่ยวกับความแม่นยำของ 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