NTP - เซิร์ฟเวอร์ NTP นั้นแม่นยำอย่างไร


52

ฉันสังเกตเห็นว่าบนเซิร์ฟเวอร์ของฉันและเครื่องอื่น ๆ นาฬิกาจะลอยอยู่เสมอดังนั้นมันจึงต้องทำการซิงค์ให้แม่นยำ

นาฬิกาเซิร์ฟเวอร์ NTP ทำไม่ดริฟท์และยังคงถูกต้องอยู่เสมอ


3
สำหรับฉันคนหนึ่งจะสนใจเป็นพิเศษในการสรุปเกี่ยวกับวิธีที่โปรโตคอล NTP อนุญาตให้คอมพิวเตอร์สองเครื่องซิงค์เวลาของพวกเขาผ่านเครือข่ายที่ไม่น่าเชื่อถือ ...
Xavier Nodet

@XavierNodet ในขณะที่ฉันแน่ใจว่าคุณจะเป็นเช่นนั้นไม่ใช่สิ่งที่ถามคำถามนี้เกี่ยวกับ ฉันขอแนะนำให้คุณถามคำถามของคุณเอง (สมมติว่ายังไม่ได้รับการถามตรวจสอบให้แน่ใจก่อนค้นหา) คำถามนี้ถามว่านาฬิกาของเซิร์ฟเวอร์ NTP ไม่สามารถเลื่อนได้อย่างไรในขณะที่นาฬิกาฮาร์ดแวร์ร่วมสมัยเลื่อนไปมา
CVN

@XavierNodet กันที่นี่ ฉันชอบที่จะเรียนรู้เกี่ยวกับวิธีการและเหตุผลว่าทำไมสิ่งต่าง ๆ ทำงานตามที่พวกเขาทำ :)
Jason

คำตอบ:


58

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

เมื่อคุณมีเวลาที่แน่นอนในระบบเดียวที่เชื่อมต่อกับเครือข่ายเช่นอินเทอร์เน็ตมันเป็นเรื่องของวิศวกรรมโพรโทคอลที่ทำให้สามารถถ่ายโอนเวลาที่แม่นยำระหว่างโฮสต์ผ่านเครือข่ายที่ไม่น่าเชื่อถือ ในเรื่องนี้ stratum 2 (หรือไกลจากแหล่งเวลาจริง) เซิร์ฟเวอร์ NTP ไม่แตกต่างจากระบบเดสก์ท็อปของคุณที่ซิงค์กับชุดของเซิร์ฟเวอร์ NTP

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

ใน NTP, stratum 0 เป็นนิยามแหล่งเวลาที่แม่นยำ Stratum 1 เป็นระบบที่ใช้แหล่งเวลา Stratum 0 เป็นแหล่งเวลา (และจึงมีความแม่นยำน้อยกว่าแหล่งเวลา Stratum 0 เล็กน้อย) Stratum 2 อีกครั้งมีความแม่นยำน้อยกว่า stratum 1 เนื่องจากซิงค์เวลากับแหล่ง Stratum 1 และอื่น ๆ ในทางปฏิบัติการสูญเสียความแม่นยำนี้มีน้อยมากจนแทบไม่มีเลย แต่ในกรณีส่วนใหญ่


1
"stratum สูง" ตามลำดับไม่ได้หมายความว่ามีจำนวนชั้นต่ำซึ่งควรจะลบออกจากคำตอบ S2 สูงกว่า S1 สำหรับหลักฐานดูคำอธิบายโดย Prof. Mills (aka Prof NTP) "เครือข่ายย่อย NTP ทำงานกับลำดับชั้นของระดับซึ่งแต่ละระดับจะถูกกำหนดหมายเลขที่เรียกว่า stratum เซิร์ฟเวอร์ Stratum 1 (หลัก) ที่ระดับต่ำสุดจะถูกซิงโครไนซ์โดยตรง ไปยังบริการเวลาแห่งชาติ ... เซิร์ฟเวอร์ Stratum 2 (รอง) ในระดับที่สูงขึ้นไปจะถูกซิงโครไนซ์กับเซิร์ฟเวอร์ชั้น 1 และอื่น ๆ " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
มันดีกว่า แต่ฉันไม่คิดว่า stratum 0 คือ "โดยนิยามแหล่งเวลาที่ถูกต้อง" Stratum 0 หมายถึงเป็นนาฬิกาอ้างอิงของบางประเภท เพียงเพราะมันเป็นนาฬิกา S0 ไม่ได้หมายความว่ามันทำงานได้อย่างถูกต้อง ระดับชั้นเป็นเรื่องเกี่ยวกับระยะทางจากนาฬิกาอ้างอิงไม่รับประกันความถูกต้อง
dfc

@dfc ฉันขอขอบคุณอินพุตเนื่องจากมันทำให้ฉันได้รับคำตอบที่ดียิ่งขึ้น ที่กล่าวว่าฉันไม่เห็นด้วยกับคำสั่งของคุณที่ S0 ไม่ได้หมายความว่ามันถูกต้อง อาจเป็นเช่นนั้นในความเข้มงวดอย่างสมบูรณ์ แต่ถ้าเวลาที่กำหนดโดยนาฬิกา S0 ไม่ถูกต้องนาฬิกานั้นจะไร้ประโยชน์ในทางปฏิบัติในฐานะแหล่งที่มาของ S0 เออร์โกนาฬิกา S0 มีความแม่นยำ หรือกล่าวอีกนัยหนึ่งถ้าคุณมีชุดของโฮสต์แยกตัวหนึ่งซึ่งเชื่อมต่อกับแหล่งเวลา S0 และอื่น ๆ ทั้งหมดซิงค์กับเวลาที่กำหนดโดยแหล่ง S0 นั้นเป็นเวลาที่ถูกต้องเท่าที่โฮสต์เหล่านั้นเกี่ยวข้อง ไม่ต้องกังวลเกี่ยวกับ TAI แล้ว
CVN

10

ในการจับเวลาด้วยเครือข่ายข้อมูลจำเพาะที่บอกคุณว่าเซิร์ฟเวอร์ได้รับแหล่งเวลานั้นเรียกว่าระดับ Stratum อย่างไร ยิ่งระดับต่ำลงเท่าใดเวลาในการรักษาเซิร์ฟเวอร์ก็จะยิ่งดีขึ้นเท่านั้น

อุปกรณ์ชั้น Stratum ระดับ 0 ไม่ได้เชื่อมต่อกับเครือข่ายโดยตรง เป็นอุปกรณ์บอกเวลาจริงและต้องเชื่อมต่อกับคอมพิวเตอร์เพื่อให้ได้เวลาตามจริง คอมพิวเตอร์เครื่องนี้กลายเป็นเซิร์ฟเวอร์ Stratum ระดับ 1 NTP

คอมพิวเตอร์ที่เชื่อมต่อกับ Stratum ระดับ 1 ก็สามารถกลายเป็นเซิร์ฟเวอร์เวลาได้ แต่มันก็จะเป็นระดับที่ 2 เมื่อคอมพิวเตอร์เชื่อมต่อกับเซิร์ฟเวอร์เวลายิ่งระดับของคุณลดลง

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

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


4
มีหลายคนที่เปลี่ยนคอมพิวเตอร์ Raspberry PI เป็นเซิร์ฟเวอร์ Stratum 1 NTP ด้วยการเพิ่มตัวรับสัญญาณ GPS ราคาถูก คุณสามารถมีเซิร์ฟเวอร์ Stratum ระดับ 1 ที่สมบูรณ์บนเครือข่ายของคุณในราคาต่ำกว่า $ 80: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis

2
ตามทฤษฎีแล้วสมาร์ทโฟนที่มีตัวรับสัญญาณ GPS (ตอนนี้เกือบทั้งหมดแล้ว) อาจเป็นอุปกรณ์ระดับ stratum 0/1?
บ๊อบ

1
หากโทรศัพท์ใช้เอาต์พุต pps ของตัวรับสัญญาณ GPS ก็ใช่ โปรดทราบว่าโทรศัพท์ CDMA ต้องใช้การกำหนดเวลาที่แม่นยำเช่นกันดังนั้นชิปเซ็ต CDMA ก็อาจเป็นแหล่งที่มาระดับ 0 สำหรับหน่วยประมวลผลโทรศัพท์ โมดูล gps oem และราสเบอร์รี่ pi จะถูกกว่าแม้ว่า
Adam Davis

2
Raspberry Pi ไม่ได้สร้างเซิร์ฟเวอร์ NTP ที่ยอดเยี่ยมเนื่องจากใช้อะแดปเตอร์เครือข่ายคุณภาพต่ำ (ชิป LAN9512) ที่ไม่สม่ำเสมอ
duskwuff

1
@duskwuff ใช่ แต่มันจะดีกว่าเซิร์ฟเวอร์ Stratum ระดับ 2 หลายแห่งผ่านทางอินเทอร์เน็ตและด้วยการตั้งค่า NTP ที่กำหนดค่าอย่างเหมาะสมทั้งบนเซิร์ฟเวอร์และไคลเอนต์คุณจะต้องเอาชนะความกระวนกระวายใจและชดเชยด้วยชิป USB LAN ที่มีคุณภาพต่ำ สำหรับค่าใช้จ่ายมันยากที่จะเอาชนะ แต่ใช้เวลาเพิ่มอีกนิดและคุณสามารถแก้ไขปัญหาเล็กน้อยได้
Adam Davis

3

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

เซิร์ฟเวอร์ NTP ที่เครื่องของคุณพูดถึงอาจเสียเวลาด้วยเช่นกัน แต่พวกเขาล่องลอยเวลากลับไปยังแหล่งที่ดีกว่า

ในที่สุดแหล่งที่ดีกว่าคือนาฬิกาที่มีความแม่นยำสูงเช่นนาฬิกาอะตอม คุณสามารถคิดว่า NTP เป็นเครือข่ายของเครื่องจักรแต่ละเครื่องจะมีแหล่งข้อมูลจำนวนหนึ่งที่ต้องอาศัยเวลา

สิ่งนี้อยู่ภายใต้การควบคุมของแหล่งที่ประกาศชั้นของมัน นาฬิกาอะตอมหรือจีพีเอสคือ stratum 0 และอำนาจในเวลานั้น แต่ละชั้นออกมาจากชั้นถัดไปคือชั้น 1 และจะตรวจสอบชั้นแหล่ง 0 พร้อมกับเพื่อนในระดับเดียวกันเพื่อสติตรวจสอบแหล่งเวลา

คุณกำลังพูดคุยกับแหล่งเวลาสตราตัม 2 หรือ 3


1

สิ่งที่คนอื่นเขียนเป็นความจริง: เซิร์ฟเวอร์ Stratum 1 ได้เวลามาจากอุปกรณ์ Stratum 0 ฉันไม่รู้ว่าช่วงเวลาใดที่เกิดขึ้น แต่ฉันคิดว่าพวกมันค่อนข้างแม่นยำ

เซิร์ฟเวอร์ Stratum n ที่มี n> 1 ได้เวลาผ่าน NTP จากเซิร์ฟเวอร์ Stratum n-1 นั่นหมายความว่ามันจะทำการซิงโครไนซ์มันเป็นระยะ ๆ เมื่อเริ่มบริการ NTP การซิงโครไนซ์จะเกิดขึ้นในช่วงเวลาสั้น ๆ และตามช่วงเวลาช่วงเวลาจะเริ่มเพิ่มขึ้น ในที่สุดช่วงเวลานั้นมีขนาดใหญ่เท่ากับ 1024 วิประมาณ 17 นาที

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

การปรับใช้ NTP อื่น ๆ อาจใช้สิ่งอำนวยความสะดวกอื่น ๆ แต่สิ่งหนึ่งที่พบได้ทั่วไปคือความต้องการและความสามารถในการปรับความถี่ของนาฬิกา


ฉันขอยืนยันว่าไฟล์ดริฟท์เป็นรายละเอียดการใช้งานของการติดตั้งซอฟต์แวร์เฉพาะและไม่เกี่ยวข้องกับวิธีที่นาฬิกาฮาร์ดแวร์ของเซิร์ฟเวอร์ NTP มีความแม่นยำ
CVN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.