چه بلايی به سر فيسبوک، واتساپ و اينستاگرام اومد؟



دو سه روز پیش(12 مهر 1400) بود که از همه میشنیدیم: اینستاگرام چرا کار نمیکنه؟ پیامای واتساپت رد میشه؟؟

شب که رسیدم خونه خبر ها رو چک کردم. دیدم بــله! خبر درسته و فیسبوک و اپ های زیر مجموعه اون (واتساپ و اینستاگرام) به کلی غیرقابل دسترسی ان. هرکس یه حرفی میزد. بعضا حرف های مضحکی هم شنیده میشد. به عنوان مثال شایعه ی هک فیسبوک توسط یک نوجوان 13 ساله یا حمله به فیسبوک از طرف مدیرعامل تلگرام به خاطر جذب کاربر بیشتر!

اما سرانجام بعد از یه قطعی 6 ساعته و سقوط 6 میلیارد دلاری ارزش سهام این کمپانی، مشکل حل شد و دوباره پلتفرم های واتساپ، اینستاگرام و فیسبوک به بستر اینترنت برگشتند.

اما حالا چی شده بود؟

اصل ماجرا چی بود؟

برای این که بدونید چی شده بود باید یه سری مقدمات از شبکه بدونید

پس اگه اینا رو می­دونید، ازش رد بشید و یک راست برید سراغ اصل مطلب! اما اگه نمیدونید حتما بخونیدش


الف) DNS چیه؟

دی ان اس مث یه دیکشنری میمونه!
دی ان اس مث یه دیکشنری میمونه!


سرنام DNS مخفف Domain Name Server هستش. کامپیوترا توی شبکه با IP با هم حرف میزنن ولی برای ما آدما سخته که برای دسترسی به هر سایت IP اون سایت رو تو نوار آدرس مرورگرمون تایپ کنیم. اینجا DNS به کار ما میاد.

به طور ساده اگه بخوام بگم DNS نقش یه دفتر تلفن رو داره که میاد به ما این امکان رو میده که به جای این که IP اون سایت رو حفظ کنیم، اسمی رو حفظ کنیم که به اسم domain شناخته میشه و اون شرکت خودش برا سایتش انتخاب میکنه. (چون هم حفظ کردن IP سخت تره و هم اینکه IP ها ممکنه تغییر کنن. ) مثلا google.com github.com virgool.io و...

ما مثلا وقتی تو قسمت آدرس مرورگرمون تایپ میکنیم www.virgool.io کامپیوتر ما به DNS میگه که منو به سرور virgool.ioوصل کن. DNS میاد با درخواست به چندتا سرور دیگه دنبال IP اون domain میگرده و اگر IP این سرور رو پیدا کرد، ما رو به اون سرور متصل می­کنه


چنتا DNS (بعضیا ام بهش میگن DNS server) معروف تو سطح اینترنت وجود داره که معروفترینشون DNS کلاودفلر(cloud flare) با آدرس 1.1.1.1 و گوگل با آدرس 8.8.8.8 هستش.

ب) ASN چیه؟

سرنام ASN مخفف کلمه Autonomous System Number هستش

اینترنت شبکه ای از شبکه هاست و هر شبکه رو میتونیم یه AS یا Autonomous System در نظر بگیریم که برای این که عضوی از شبکه جهانی اینترنت بشه نیاز به یه ASN داره که این ASN یکتاس و هر شبکه ASN مخصوص به خودشو داره

ج) BGP چیه؟

درواقع BGP یا همون Border Gateway Protocol یه نوع routing protocol (پروتکل مسیریابی) ئه که برای ارتباط بین ASN ها استفاده میشه.

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

مثلا به صورت خیلی ساده تو شکل زیر

یه شماتیک ساده برای درک بهتر BGP
یه شماتیک ساده برای درک بهتر BGP


اگه AS-1 بخواد با AS-3 ارتباط برقرار کنه یه راهش اینه که با یه سرور واسط که AS-2 باشه این کارو انجام بده یه راه دیگه ام اینه که با 3 تا سرور واسط که به ترتیب AS-4,AS-5,AS-6باشن این کارو انجام بده. BGP تشخیص میده که راه اول کوتاه تر و سریع تره و اونو انتخاب میکنه اما اگه راه اول در دسترس نبود از راه دوم استفاده میکنه

این BGP ها خودشون به دودسته ی داخلی(IBGP) و خارجی (EBGP) تقسیم میشن که اولی برای ارتباط برقرار کردن داخلی توی یه دونه AS ئه و دومی برای ارتباط برقرار کردن با AS های دیگه اس


د) Back Bone network چیه؟

یه بخشی از شبکه است که بقیه ی شبکه های محلی و زیرشبکه ها رو به هم متصل می­کنه و معمولا اندازه ش از بقیه ی قسمتای شبکه بزرگتره. برای همین بهش میگن Back Bone چون مثل ستون فقرات آدم که استخونای بدن رو به هم وصل میکنه،

قسمتای دیگه شبکه رو به هم وصل می­کنه


اصل مطلب

حالا بعد از این مقدمه ی نسبتا طولانی بریم ببینیم چی شد؟!

طبق چیزی که خود کلاودفلر از داده های آماری سرورای فیسبوک به دست آورده تغییر اشتباه در کانفیگ روترهای Back Bone که باید ترافیک رو بین دیتا سنترهای اصلی فیسبوک مسیریابی می­کردن باعث شد فیسبوک BGP هاشو از دست بده. درواقع اونا اومدن BGP روترهای Back Bone شون رو آپدیت کردن. و این آپدیته اشتباه بوده. به گفته ی کلاودفلر، فیسبوک معمولا لیست BGP سروراشو خیلی کم آپدیت میکرده ولی به یکباره ریکوئست های زیادی برای آپدیت کردن BGP تو یه تایم کوتاه مشاهده کردن.

نمودار ریکوئست های آپدیت BGP های فیسبوک
نمودار ریکوئست های آپدیت BGP های فیسبوک


بله درست حدس زدین! اومدن ابروشو درست کنن زدن چشمشم کور کردن!

آپدیت کردن BGP ها همانا؛ و محو شدن(!!) سرورها ومنابعی که داشتن از ASN فیسبوک (ASN 32394) استفاده می­کردن، همانا

با محو شدن ASN 32394 از سطح اینترنت مهم ترین سرویسی که از کار افتاد سرویس DNS فیسبوک بود.(این DNS با اون DNS هایی که تو مقدمه گفتیم یه کوچولو فرق داره و درواقع زیر مجموعه ی اون حساب میشه)

وقتی که DNS فیسبوک آفلاین شد، دیگه DNS (این همونیه که تو مقدمه گفتیم)های خفن مثل کلاودفلر(1.1.1.1)، گوگل(8.8.8.8) و... هیچ راهی برای ارتباط برقرار کردن با DNS فیسبوک

__ یا بهتر بگم، راهی برای ارتباط با سرورای فیسبوک__ نتونستن پیدا کنن و خطای SERVER FAIL بر
می‌گردوندن.

یکی از پیامد های جانبی این اتفاق، حجم درخواست های بسیار زیاد و مکرر به DNS های خفن دنیا بود. دلیلشم اینه که خیلی از اپ ها برای دسترسی به سروراشون از DNS کمک میگرفتن ؛

و وقتی با خطای SERVER FAIL مواجه می­شدن دوباره ریکوئست میدادن و این چرخه هی تکرار می­شد.

مثلا اپ اینستاگرام روی گوشی شما سعی میکنه Instagram.com رو به IP تبدیل کنه. به DNS ریکوئست میزنه. DNS بهش خطا میده. اپ دوباره ریکوئست میزنه و هی این کار تکرار میشه.حالا فرض کنین این ریکوئستای مکرر توسط چند صد میلیون گوشی انجام بشه! همین اتفاق باعث شد سرویس های اونا (گوگل و کلاودفلر) هم با کندی و اختلال مواجه بشه.

نمودار زیر روند افزایش درخواستای DNS مربوط به Facebook رو نشون میده

همونجور که می‌بینید تعداد درخواستای مربوط به فیسبوک به مدت کوتاهی بعد از قطع شدنش از اینترنت، به 30 برابر حالت عادی رسیده
همونجور که می‌بینید تعداد درخواستای مربوط به فیسبوک به مدت کوتاهی بعد از قطع شدنش از اینترنت، به 30 برابر حالت عادی رسیده


این نشون میده چقدر این اینترنتی که داریم ازش استفاده می­کنیم آسیب پذیره و یه اشتباه کوچیک چه پیامد های بزرگی رو میتونه داشته باشه

چرا انقد طول کشید تا درستش کنن؟!

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

البته این تموم ماجرا نبود. وقتی هم که BGP ها رو درست کردن و فیسبوک باز به اینترنت برگشت، با حجم زیادی از ریکوئستا روبرو شد که باعث می­شد اون دوباره به خاطر فشار زیاد روی سرورا از کار بیفته و این هم چیزی بود که باید مدیریتش میکردن. و همین این یه تایمی ازشون گرفت تا بتونن همه ی چیزا رو سر جای اولش برگردوندن.

امیدوارم با خوندن این مقاله متوجه شده باشین علت قطعی فیسبوک چی بود؟ :)