الخلاصة

  • ما فصل مراكز بيانات Facebook في العالم لم يكن هجومًا ولا انقطاعًا في التيار، بل أمر صيانة روتيني هدفه القياس. أما أداة التدقيق المُعدّة لإيقاف أوامر من هذا النوع فقد كان فيها خلل يمنعها من الإيقاف.
  • حين اختفى العمود الفقري، سحبت خوادم DNS إعلاناتها عبر BGP تمامًا كما صُممت أن تفعل. النظام الاحتياطي نجح، وبنجاحه حوّل القطع الداخلي إلى تعذّر خارجي.
  • غاب الوصول الأساسي والوصول خارج النطاق في الوقت نفسه، فبدأ الاسترداد بوجود مهندسين داخل المبنى. وما آل إليه التدقيق بعد ذلك، ومن أقرّ تصميمه، لا يظهر في المواد العامة التي بلغتها هذه القراءة.

كتبت Meta وصفًا صريحًا إلى حد غير معتاد في مدونة الهندسة الخاصة بها. من «More details about the October 4 outage»:

"During one of these routine maintenance jobs, a command was issued with the intention to assess the availability of global backbone capacity, which unintentionally took down all the connections in our backbone network, effectively disconnecting Facebook data centers globally."

النية كانت القياس، والنتيجة كانت قطع كل شيء. إلى هنا، هذا وصف حادث. لكنه يصبح قصة عن الضبط في الجملة التالية:

"Our systems are designed to audit commands like these to prevent mistakes like this, but a bug in that audit tool prevented it from properly stopping the command."

الضابط الذي ظنّت المؤسسة أنها تملكه لم يكن الضابط الذي تملكه فعلًا. أداة التدقيق برنامج، والبرامج تحمل عيوبًا، والفرق أنها لا تُعامل كشيء يحتاج إلى ضمان خاص به. السجل الداخلي للأمر، وما كان يستهدفه، وإلى أي مدى امتد، ومن أذن به، ليس بين المواد التي أتيحت لهذه القراءة. لذلك لا يُفترض هنا شيء عن صيغة الأمر ولا عن هوية من أقرّه.

الضابط الثاني كان أوفى للتصميم. خوادم DNS في Facebook تسحب إعلاناتها عبر BGP حين تعجز عن مخاطبة مراكز البيانات. وبكلمات Meta:

"To ensure reliable operation, our DNS servers disable those BGP advertisements if they themselves can not speak to our data centers, since this is an indication of an unhealthy network connection. In the recent outage the entire backbone was removed from operation, making these locations declare themselves unhealthy and withdraw those BGP advertisements."

لم يكن هذا أثرًا جانبيًا غير متوقع، بل سلوكًا مصممًا نُفّذ على الشرط الذي صُمم من أجله. وبما أن العمود الفقري كله اختفى، أعلنت كل المواقع نفسها مريضة في اللحظة نفسها وسحبت إعلاناتها بالكامل. انتقل العطل من الاتصال الداخلي إلى الوصول الخارجي دون خطوة وسيطة. نظام احتياطي يتقاسم المصير مع ما يحميه يضخّم الضرر بمقدار دقته.

النافذة المرصودة من الخارج هي من Cloudflare. وفي «Understanding how Facebook disappeared from the Internet» تسجّل الشركة أن ترجمة الاسم facebook.com على مُحلّل 1.1.1.1 توقفت عند نحو 15:50 UTC وعادت عند 21:20 UTC.

"It stopped being available at around 15:50 UTC and returned at 21:20 UTC."

تذكر Cloudflare أيضًا أن Facebook أوقف إعلان بادئات DNS الخاصة به عبر BGP عند نحو 15:58 UTC، وأن الانقطاع استمر قرابة خمس ساعات ونصف إلى ست ساعات. هذه المدة هي الإطار الذي نشرته Cloudflare، وليست رقمًا أعلنته Meta. ويُظهر الرصد نفسه نشاطًا متجددًا لـ BGP عند نحو 21:00 UTC بلغ ذروته عند 21:17 UTC.

لم يبدأ الاسترداد من بُعد. تصف Meta القيد المادي في تلك الساعة:

"Our primary and out-of-band network access was down, so we sent engineers onsite to the data centers to have them debug the issue and restart the systems. But this took time, because these facilities are designed with high levels of physical and system security in mind. They're hard to get into, and once you're inside, the hardware and routers are designed to be difficult to modify even when you have physical access to them."

المباني العصيّة على الدخول قرار صحيح في الأيام العادية. وحين يغيب الوصول الأساسي وخارج النطاق معًا، تصبح المتانة نفسها هي العامل الذي يمدّ الاسترداد من دقائق إلى ساعات.

سرعة دليل التشغيل تتوقف دائمًا مرة واحدة عند الباب.

السؤال واحد: من يدقّق المدقّق؟ أداة التدقيق لا تكون ضابطًا إلا حين يُختبر سلوكها هي، ويصبح عطلها هي مرئيًا. لا يظهر أي من الاختبارين في السجل العام. وما قد يغيّر تصنيف الحادثة محدد: سجل يثبت أن لأداة التدقيق اختبارات انحدار خاصة بها، وأن تلك الاختبارات يتحقق منها شخص مستقل عن كاتبها؛ ومراجعة دورية لسياسة DNS الاحتياطية تتخذ من المصير المتقاسم معيارًا؛ وتمرين استرداد يُنفّذ على فرض أن الوصول الأساسي وخارج النطاق يُفقدان معًا. بوجود هذه السجلات الثلاثة يخرج الحادث من باب «ضابط غير متحقق منه» إلى باب «فشل ضابط متحقق منه».

ما قرأته هذه المراجعة فعلًا وثيقتان: منشور الهندسة في Meta، وتحليل القياس في Cloudflare. أما خطة المعالجة وحالة التنفيذ ودليل المتانة وتقرير عيب أداة التدقيق ومسار الإذن بالأمر، فلم تكن مقروءة. ولم يكن هناك تحليل مستقل للمسارات غير Cloudflare، وهي المراقب الخارجي الوحيد الذي يستند إليه هذا النص. وملف Facebook, Inc. متاح في مدخل الدليل.