رفتن به محتوای اصلی
توضیح کوهستانزیرساخت شبکهمقاله تشریحی· 6 دقیقه مطالعه· در فناوری

چگونه الگوریتم مارزولو شبکه‌های توزیع‌شده را وادار به توافق بر سر زمان می‌کند

اینترنت برای جلوگیری از فروپاشی پایگاه‌های داده و سیستم‌های مالی در اثر انحراف ساعت، به پروتکل زمان شبکه (NTP) متکی است. در هسته این پروتکل، یک منطق اشتراک‌گیری مربوط به سال ۱۹۸۳ قرار دارد که با این پیش‌فرض که همه ساعت‌ها کمی اشتباه می‌کنند، زمان واقعی را محاسبه می‌کند.

به قلم کاوه کردی

این خبر را به اشتراک بگذارید

به‌طور خلاصه

  • شبکه‌های توزیع‌شده برای مرتب‌سازی رویدادها و اعتبارسنجی گواهی‌های امنیتی به همگام‌سازی دقیق زمان نیاز دارند.
  • پروتکل زمان شبکه (NTP) از یک سیستم سلسله‌مراتبی از سرورهای استراتوم (Stratum) برای توزیع زمان از ساعت‌های اتمی استفاده می‌کند.
  • تاخیر شبکه باعث می‌شود نتوان به یک مهر زمانی (timestamp) واحد که از طریق اینترنت ارسال می‌شود اعتماد کرد.

برای اینکه هر شبکه کامپیوتری توزیع‌شده‌ای کار کند، یک شرط الزام‌آور باید رعایت شود: همه ماشین‌ها باید دقیقا روی اینکه ساعت چند است توافق داشته باشند. اگر یک سرور پایگاه داده در ویرجینیا تراکنشی را در ساعت ۱۰:۰۴:۰۱.۰۰۵ ثبت کند و یک نسخه کپی در فرانکفورت همان رویداد را سه میلی‌ثانیه زودتر ثبت کند، سیستم نمی‌تواند تشخیص دهد کدام اقدام اول رخ داده است. در حال حاضر، این اجماع شکننده در میان میلیاردها دستگاه حفظ شده و از فروپاشی مسیریابی مالی جهانی و اعتبارسنجی گواهی‌های رمزنگاری جلوگیری می‌کند.[6]

فروشندگان سخت‌افزار مرتبا دقت قطعات داخلی خود را در بوق و کرنا می‌کنند، اما واقعیت فیزیکی این است که ساعت‌های سرور استاندارد ذاتا نقص دارند. نوسان‌سازهای کوارتز داخل مادربردهای استاندارد به دلیل نوسانات دما و تغییرات ولتاژ، ماهانه چند ثانیه انحراف پیدا می‌کنند. اگر یک خوشه از سرورهای یکسان را به حال خود رها کنید، به سرعت بر سر زمان فعلی دچار اختلاف می‌شوند و واقعیت از هم گسیخته‌ای را ایجاد می‌کنند که در آن لاگ‌های سیستم یکدیگر را نقض کرده و توکن‌های امنیتی پیش از موعد منقضی می‌شوند.[6]

برای تحمیل این توافق، اینترنت به پروتکل زمان شبکه (NTP) متکی است؛ معماری‌ای که توسط دیوید میلز در دانشگاه دلاویر در سال ۱۹۸۵ طراحی شد. همان‌طور که میلز در خلاصه اجرایی خود درباره همگام‌سازی زمان شبکه‌های کامپیوتری بیان می‌کند، این پروتکل به گونه‌ای طراحی شده است که زمان‌سنجی را در یک «ماتریس مسیریابی سلسله‌مراتبی» سازماندهی کند که زمان دقیق را از ساعت‌های اتمی به پایین و تا دستگاه‌های مصرف‌کننده توزیع می‌کند.[2]

این سلسله‌مراتب به سطوح استراتوم (Stratum) تقسیم می‌شود. استراتوم ۰ شامل سخت‌افزارهای زمان‌سنجی با دقت بالا، مانند ساعت‌های اتمی یا گیرنده‌های GPS است که مستقیما به شبکه عمومی متصل نمی‌شوند. سرورهای استراتوم ۱ از طریق کابل‌های اختصاصی مستقیما به این دستگاه‌های استراتوم ۰ متصل شده و به عنوان استانداردهای اصلی زمان شبکه عمل می‌کنند. سرورهای استراتوم ۲ زمان را از استراتوم ۱ دریافت می‌کنند و این روند به همین ترتیب تا لپ‌تاپ‌ها و گوشی‌های هوشمند در لبه شبکه ادامه می‌یابد.[5]

سلسله‌مراتب استراتوم (Stratum)، زمان دقیق را از ساعت‌های اتمی ایزوله تا دستگاه‌های مصرف‌کننده توزیع می‌کند.

در حالی که فروشندگان سازمانی محیط‌های ابری «بدون تاخیر» را بازاریابی می‌کنند، واقعیت فیزیکی فیبر نوری دیکته می‌کند که انتقال داده زمان می‌برد. وقتی یک کلاینت زمان را از یک سرور استراتوم ۱ درخواست می‌کند، بسته داده باید از روترها، سوییچ‌ها و کابل‌ها عبور کند. تا زمانی که پاسخ سرور برسد، مهر زمانی (timestamp) موجود در آن دیگر به گذشته پیوسته است.[4]

همان‌طور که کوین سوکوچف، مهندس نرم‌افزار، در بررسی فنی خود از این پروتکل اشاره می‌کند، NTP این مشکل را با محاسبه تاخیر رفت و برگشت حل می‌کند. کلاینت دقیقا زمان ارسال درخواست و زمان دریافت پاسخ را ثبت می‌کند.

با فرض اینکه تاخیر شبکه تقریبا متقارن است — یعنی زمان رفت با زمان برگشت برابر بوده — کلاینت می‌تواند مهر زمانی سرور را به اندازه نیمی از زمان رفت و برگشت جبران کند. سوکوچف خاطرنشان می‌کند که از طریق این مکانیزم، «NTP دقت‌هایی در حد ده‌ها میلی‌ثانیه را در بستر اینترنت عمومی فراهم می‌کند.»[4]

با این حال، فرض تقارن تاخیر اغلب اشتباه است. مسیریابی اینترنت به شدت نامتقارن است؛ یک بسته ممکن است از طریق یک کابل ترانس‌آتلانتیک از نیویورک به لندن برود و از یک مسیر کاملا متفاوت برگردد. این تاخیر متغیر که به عنوان لرزش شبکه (jitter) شناخته می‌شود، به این معنی است که یک کلاینت نمی‌تواند به یک منبع زمان واحد، حتی یک سرور استراتوم ۱، اعتماد کند، زیرا خود مسیر شبکه اندازه‌گیری را مخدوش می‌کند.[4][6]

اینجاست که هسته ریاضی سیستم، یعنی الگوریتم مارزولو، ضروری می‌شود. این الگوریتم که توسط کیت مارزولو در گزارش فنی سال ۱۹۸۳ دانشگاه استنفورد با عنوان «حفظ زمان در یک سیستم توزیع‌شده» توسعه یافت، ایده یافتن یک زمان واحد و صحیح را کنار می‌گذارد. در عوض، فرض می‌کند که هر منبع زمانی کمی اشتباه است و یک بازه محدود را محاسبه می‌کند که زمان واقعی باید در آن وجود داشته باشد.[1]

اگر یک کلاینت از سه سرور زمان مختلف پرس‌وجو کند، سه مهر زمانی متفاوت دریافت می‌کند که هر کدام عدم قطعیت محاسبه‌شده خود را بر اساس تاخیر شبکه دارند. سرور الف ممکن است ادعا کند زمان ۱۲:۰۰:۰۰ با خطای مثبت و منفی ۱۰ میلی‌ثانیه است. سرور ب ادعا می‌کند ۱۲:۰۰:۰۱ با خطای مثبت و منفی ۲۰ میلی‌ثانیه است. سرور ج ادعا می‌کند ۱۱:۵۹:۵۹ با خطای مثبت و منفی ۵ میلی‌ثانیه است.[1]

الگوریتم مارزولو با محاسبه اشتراک چندین بازه نامشخص، زمان واقعی را پیدا می‌کند.

الگوریتم مارزولو این بازه‌ها را روی یک خط زمانی رسم کرده و به دنبال بزرگترین تقاطع هم‌پوشان می‌گردد. این الگوریتم به طور سیستماتیک داده‌های پرت — که در اصطلاحات NTP به آن‌ها «دروغ‌گو» (falsetickers) می‌گویند — را کنار می‌گذارد و «راست‌گوها» (truechimers) را جدا می‌کند. از نظر ریاضی تضمین می‌شود که زمان واقعی در همان پنجره باریکی قرار دارد که بازه‌های قابل اعتماد با هم هم‌پوشانی دارند، و این به کلاینت اجازه می‌دهد تا یک اجماع با احتمال بالا ایجاد کند.[1][2]

همان‌طور که شرکت ادکس اینترنشنال در تحلیل خود از اصلاح انحراف ساعت به تفصیل بیان می‌کند، این منطق اشتراک‌گیری به NTP اجازه می‌دهد تا فرکانس ساعت محلی را به صورت پویا تنظیم کند. این پروتکل به جای اینکه ساعت را به طور ناگهانی به جلو یا عقب بپرد — کاری که باعث از کار افتادن برنامه‌های در حال اجرا یا رد شدن وظایف زمان‌بندی‌شده می‌شود — نوسان‌ساز کوارتز محلی را کمی تندتر یا کندتر می‌کند تا به نرمی با زمان توافق‌شده همگام شود.[5]

مقیاس این همگام‌سازی به سرعت در حال گسترش است و محدودیت‌های فیزیکی جدیدی را به همراه دارد. مقاله‌ای در سال ۲۰۱۸ که در arXiv با عنوان «سیستمی برای همگام‌سازی ساعت در اینترنت اشیا» منتشر شد، فشار وارد بر معماری‌های سنتی NTP را به دلیل انفجار دستگاه‌های کم‌مصرف محاسبات لبه‌ای (edge-computing) برجسته می‌کند. این سنسورهای IoT اغلب فاقد ظرفیت باتری یا پایداری شبکه برای حفظ ارتباط مداوم با سرورهای استراتوم هستند و به توپولوژی‌های همگام‌سازی اصلاح‌شده‌ای نیاز دارند که با بودجه انرژی محدودتر کار کنند.[3]

نوسان‌سازهای کوارتز داخل کامپیوترهای استاندارد به شدت به دما حساس هستند که این امر انحراف ساعت را اجتناب‌ناپذیر می‌کند.

تقاضا برای همگام‌سازی زمان روز به روز در حال افزایش است. در حالی که NTP استاندارد دقت کافی را برای وب‌گردی فراهم می‌کند، پلتفرم‌های مدرن معاملات مالی و شبکه‌های سلولی 5G به دقت میکروثانیه‌ای نیاز دارند که این امر باعث پذیرش پروتکل زمان دقیق (PTP) مبتنی بر سخت‌افزار شده است. با این حال، حتی با تکامل پروتکل‌ها برای دور زدن تاخیرهای سیستم‌عامل، منطق بنیادین اشتراک‌گیری که در سال ۱۹۸۳ در استنفورد تعریف شد، همچنان مکانیزم پایه‌ای است که یک شبکه پرآشوب را وادار به توافق بر سر زمان حال می‌کند.[6]

اصطلاحات کلیدی

استراتوم ۰ (Stratum 0)
سخت‌افزارهای زمان‌سنجی با دقت بالا، مانند ساعت‌های اتمی یا گیرنده‌های GPS، که به عنوان منبع ریشه زمان عمل می‌کنند.
انحراف ساعت (Clock Drift)
پدیده‌ای که در آن ساعت سخت‌افزاری داخلی یک کامپیوتر به تدریج نسبت به زمان واقعی تندتر یا کندتر می‌شود.
لرزش شبکه (Jitter)
تغییرات در تاخیر شبکه در طول زمان که محاسبه تاخیرهای رفت و برگشت را پیچیده می‌کند.
راست‌گو (Truechimer)
یک منبع زمان NTP که بازه زمانی گزارش‌شده آن با موفقیت با زمان توافق‌شده تقاطع پیدا می‌کند.
دروغ‌گو (Falseticker)
یک منبع زمان NTP که زمان غیرعادی خارج از بازه توافق‌شده را گزارش می‌دهد و الگوریتم آن را کنار می‌گذارد.

پرسش‌های متداول

چرا کامپیوترها نمی‌توانند زمان خودشان را نگه دارند؟

نوسان‌سازهای کوارتز داخل کامپیوترهای استاندارد ناقص و به شدت به دما حساس هستند. بدون اصلاح خارجی، آن‌ها در عرض چند ماه چندین ثانیه یا حتی چند دقیقه انحراف پیدا می‌کنند.

اگر ساعت یک کامپیوتر اشتباه باشد چه اتفاقی می‌افتد؟

فراتر از مهر زمانی نادرست فایل‌ها، انحراف شدید ساعت باعث از کار افتادن اتصالات امن می‌شود زیرا گواهی‌های رمزنگاری منقضی‌شده یا هنوز نامعتبر به نظر می‌رسند.

آیا NTP زمان را فورا تغییر می‌دهد؟

خیر. تغییر ناگهانی زمان می‌تواند باعث از کار افتادن پایگاه‌های داده شود. در عوض، NTP ساعت را «تغییر سرعت» (slew) می‌دهد و سرعت آن را کمی تغییر می‌دهد تا به زمان صحیح برسد.

بررسی عمیق دیدگاه‌ها

مهندسان سیستم‌های توزیع‌شده

اولویت دادن به تضمین‌های ریاضی برای مرتب‌سازی رویدادها و عدم قطعیت محدود در زمان شبکه.

برای مهندسانی که پایگاه‌های داده توزیع‌شده‌ای مانند Spanner یا CockroachDB را می‌سازند، زمان فیزیکی ذاتا غیرقابل اعتماد است. آن‌ها الگوریتم مارزولو را نه فقط به عنوان یک ابزار همگام‌سازی ساعت، بلکه به عنوان یک مکانیزم بنیادین برای ایجاد علیت می‌بینند. اگر یک سیستم نتواند تضمین کند که رویداد الف قبل از رویداد ب رخ داده است، تکثیر داده‌ها با شکست مواجه می‌شود. این گروه تاکید می‌کنند که NTP زمان «صحیح» را ارائه نمی‌دهد، بلکه یک بازه عدم قطعیت قابل دفاع از نظر ریاضی را فراهم می‌کند که پایگاه‌های داده می‌توانند از آن برای سریال‌سازی ایمن تراکنش‌ها استفاده کنند.

ارائه‌دهندگان زیرساخت شبکه

تمرکز بر پایداری عملیاتی، سربار پهنای باند و امنیت حفظ سرورهای زمان جهانی.

اپراتورهایی که سرورهای استراتوم ۱ و استراتوم ۲ را نگهداری می‌کنند، NTP را در درجه اول از دریچه امنیت شبکه و مدیریت بار می‌بینند. از آنجا که NTP روی UDP کار می‌کند، از نظر تاریخی برای حملات گسترده منع سرویس توزیع‌شده (DDoS) مورد سوءاستفاده قرار گرفته است. این گروه مدافع محدودسازی شدید نرخ درخواست‌ها و منسوخ کردن پرس‌وجوهای کنترلی قدیمی‌تر NTP هستند. آن‌ها همچنین محرک‌های اصلی پشت پذیرش مهر زمانی در سطح سخت‌افزار هستند و استدلال می‌کنند که همگام‌سازی مبتنی بر نرم‌افزار به محدودیت‌های فیزیکی خود رسیده است.

توسعه‌دهندگان سخت‌افزار IoT

تاکید بر نیاز به روش‌های همگام‌سازی کم‌مصرف و بهینه از نظر انرژی برای دستگاه‌های لبه‌ای که با باتری کار می‌کنند.

توسعه‌دهندگانی که سنسورهای مبتنی بر باتری می‌سازند با یک مبادله سخت روبرو هستند: همگام نگه داشتن کامل ساعت باعث تخلیه باتری می‌شود، اما اجازه دادن به انحراف آن، داده‌های سنسور را بی‌اعتبار می‌کند. همان‌طور که در ادبیات دانشگاهی اخیر برجسته شده است، این گروه استدلال می‌کنند که فواصل پرس‌وجوی سنتی NTP برای دستگاه‌های لبه‌ای بیش از حد تهاجمی است. آن‌ها از توپولوژی‌های همگام‌سازی اصلاح‌شده و آگاه از انرژی حمایت می‌کنند که به دستگاه‌ها اجازه می‌دهد برای دوره‌های طولانی بخوابند و در ازای سال‌ها عمر باتری، بازه وسیع‌تری از عدم قطعیت را بپذیرند.

مهندسان سیستم‌های توزیع‌شده 40%ارائه‌دهندگان زیرساخت شبکه 35%توسعه‌دهندگان سخت‌افزار IoT 25%
مهندسان سیستم‌های توزیع‌شده
اولویت دادن به تضمین‌های ریاضی برای مرتب‌سازی رویدادها و عدم قطعیت محدود در زمان شبکه.
ارائه‌دهندگان زیرساخت شبکه
تمرکز بر پایداری عملیاتی، سربار پهنای باند و امنیت حفظ سرورهای زمان جهانی.
توسعه‌دهندگان سخت‌افزار IoT
تاکید بر نیاز به روش‌های همگام‌سازی کم‌مصرف و بهینه از نظر انرژی برای دستگاه‌های لبه‌ای که با باتری کار می‌کنند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • معامله‌گران مالی با فرکانس بالا (HFT)
  • تحلیلگران تهدیدات امنیت سایبری

منابع

پوشش منابع

6 منبع

3 دیدگاه شناسایی‌شده

مهندسان سیستم‌های توزیع‌شده 40%ارائه‌دهندگان زیرساخت شبکه 35%توسعه‌دهندگان سخت‌افزار IoT 25%
  1. [1]Stanford InfoLabمهندسان سیستم‌های توزیع‌شده

    Maintaining the Time in a Distributed System

    مطالعه در Stanford InfoLab →
  2. [2]University of Delawareارائه‌دهندگان زیرساخت شبکه

    Executive Summary: Computer Network Time Synchronization

    مطالعه در University of Delaware →
  3. [3]arXivتوسعه‌دهندگان سخت‌افزار IoT

    A System for Clock Synchronization in an Internet of Things

    مطالعه در arXiv →
  4. [4]Kevin Sookocheffمهندسان سیستم‌های توزیع‌شده

    How Does NTP Work?

    مطالعه در Kevin Sookocheff →
  5. [5]Adex Internationalارائه‌دهندگان زیرساخت شبکه

    How NTP Works: Stratum Levels, Time Sync, and Clock Drift Correction

    مطالعه در Adex International →
  6. [6]تیم سردبیری کوهستان

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار فناوری با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.