/ / כיצד שרתי NTP מצליחים להישאר כל כך מדויקים?

כיצד שרתי NTP מצליחים להישאר כל כך מדויקים?

כיצד לעשות-ntp-שרתי-ניהול-להישאר-כל-כך מדויק -00

לרבים מאיתנו הייתה הבעיה לפעמיםהמחשבים והמכשירים האחרים שלנו שומרים על הגדרות זמן מדויקות, אך סנכרון מהיר עם שרת NTP עושה הכל טוב שוב. אבל אם המכשירים שלנו יכולים לאבד דיוק, כיצד שרתי NTP מצליחים להישאר מדויקים כל כך?

מושב השאלה והתשובה של ימינו מגיע אלינו באדיבות SuperUser - מחלקת המשנה של Stack Exchange, קיבוץ מונחה על ידי אתרי אינטרנט של שאלות ותשובות.

תמונה באדיבות LEOL30 (פליקר).

השאלה

קורא SuperUser, פרנק ת'ורנטון, רוצה לדעת כיצד שרתי NTP מסוגלים להישאר כל כך מדויקים:

שמתי לב לזה בשרתים שלי ואחריםמכונות, השעונים תמיד נסחפים כך שהם צריכים לסנכרן כדי להישאר מדויקים. כיצד שעוני שרת ה- NTP מונעים מהיסחף ותמיד נשארים כל כך מדויקים?

איך שרתי NTP מצליחים להישאר כל כך מדויקים?

התשובה

לתורם SuperUser, מייקל קירור, יש את התשובה עבורנו:

שרתי NTP מסתמכים על שעונים מדויקים במיוחד עבורשמירת זמן מדויקת. מקור זמן נפוץ לשרתי NTP מרכזיים הם שעוני אטום, או מקלטים GPS (זכרו שללווייני GPS יש שעוני אטום על הכניסה). שעונים אלה מוגדרים כמדויקים מכיוון שהם מספקים התייחסות זמן מדויקת ביותר.

אין שום דבר קסום ב- GPS או אטומישעונים שגורמים להם לספר לך בדיוק מה השעה. בגלל האופן שבו שעונים אטומיים עובדים, הם פשוט טובים מאוד לאחר שנאמר להם פעם מה השעה, שמירה זמן מדויק (מכיוון שהשנייה מוגדרת ב-מונחים של השפעות אטומיות). למעשה, ראוי לציין שזמן ה- GPS נבדל מה- UTC שאנו רגילים יותר לראות. שעונים אטומיים אלה מסונכרנים בתורם נגד זמן אטומי בינלאומי או TAI בכדי לא רק להגיד במדויק את חלוף הזמן, אלא גם ה זמן.

ברגע שיש לך זמן מדויק במערכת אחתהמחובר לרשת כמו האינטרנט, זה עניין של הנדסת פרוטוקול המאפשרת העברת זמנים מדויקים בין מארחים ברשת לא אמינה. בעניין זה שכבה 2 (או רחוקה ממקור הזמן האמיתי) שרת NTP אינו שונה מסנכרון מערכת שולחן העבודה שלך מול קבוצה של שרתי NTP.

עד עכשיו יש לך כמה זמנים מדויקים (כמוהמתקבלים משרתי NTP או במקום אחר) ויודעים את קצב ההתקדמות של השעון המקומי שלך (שקל לקבוע), אתה יכול לחשב את קצב ההיסחפות של השעון המקומי שלך ביחס למועד הזמן "המדויק המדויק". לאחר נעילה, ניתן להשתמש בערך זה בכדי להתאים את השעון המקומי באופן רציף כדי לגרום לו לדווח על ערכים קרוב מאוד למעבר הזמן המדויק, גם אם השעון המקומי בזמן אמת עצמו אינו מדויק ביותר. כל עוד השעון המקומי שלך לא מאוד לא יציב, הדבר אמור לאפשר שמירה על זמן מדויק למשך זמן מה, גם אם מקור הזמן במעלה הזרם שלך אינו זמין מכל סיבה שהיא.

כמה יישומי לקוח NTP (ככל הנראה רובםntpd daemon או יישומי שירות מערכת) עושים זאת ואחרים (כמו ntpdate המלווה של ntpd שפשוט מגדיר את השעון פעם אחת) אינם עושים זאת. לרוב מכנים זאת קובץ הסחף מכיוון שהיא מאחסנת בהתמדה מידת סחף של השעון, אך באופן קפדני זה לא צריך להיות מאוחסן כקובץ ספציפי בדיסק.

ב- NTP, שכבה 0 היא בהגדרה מדויקתמקור זמן. שכבה 1 היא מערכת המשתמשת במקור זמן שכבה 0 כמקור הזמן שלה (ולכן היא מעט פחות מדויקת ממקור הזמן של שכבה 0). שכבה 2 שוב מעט פחות מדויקת משכבה 1 מכיוון שהיא מסנכרנת את זמנה מול מקור שכבה 1 וכן הלאה. בפועל, אובדן הדיוק הזה הוא כה קטן עד שהוא זניח לחלוטין בכל המקרים הקיצוניים ביותר.


יש לך מה להוסיף להסבר? נשמע בתגובות. רוצה לקרוא תשובות נוספות ממשתמשי Stack Exchange מנוסים טכנולוגיים אחרים? בדוק את חוט הדיון המלא כאן.