وقتی سرنوشت‌ها به هم گره می‌خورند: کوتاه درباره‌ی اصطلاح Fate sharing

یه فلسفه‌ای هست تو دنیا که میگه اتفاقایی که برای ما میوفته بخشیش دست ما نیست و در گروی اثر عملی هست که سایر عناصر عالم بر زندگی ما دارن که بهش میگن تقدیر یا سرنوشت. حالا همین موضوع در دنیای شبکه هم صدق می‌کنه. اولین‌بار این اصطلاح رو در دنیای شبکه، آقای کلارک (David D. Clark) در سندی تحت عنوان “فلسفه‌ی طراحی پروتکل‌های اینترنتی DARPA” در سال ۱۹۸۸ معرفی کرد. به زبون ساده، fate sharing میگه:

“اگر ما مجموعه‌ای از عناصر متصل به هم رو داشته باشیم که عملکرد هر کدومشون در گرو عملکرد صحیح سایر عناصر باشه، در این صورت اگر یک عنصر بنا به هر دلیلی fail بشه، سایر عناصر هم به صورت خودکار fail خواهند شد.”

یه مثال تو دنیای واقعی برای درک بهتر این موضوع: سوار پرایدتون (مثلاً) هستین و دارین برمیگردین خونه که یهو متوجه میشین ماشین داره به سختی حرکت میکنه. سریع میزنین کنار و پیاده میشین و می‌بنین که بله یکی از چرخای عقبتون پنچر شده. موتور ماشین سالمه، سه تا چرخ دیگش سالمه امّا چون یه چرخش دچار مشکل شده عملکرد ماشینتون هم دچار مشکل شده و ماشین نمیتونه به حرکت خودش ادامه بده.

امّا ببینیم تو دنیای شبکه کجاها ممکنه fate sharing رخ بده. یکی از مصداقای اصلی بروز fate sharing در هنگام مجازی‌سازی (virtualization) هست. یعنی زمانی که ما یک یا چندتا توپولوژی مجازی رو بر روی یک بستر فیزیکی پیاده‌سازی می‌کنیم. در این صورت هر مشکلی برای اون بستر فیزیکی رخ بده، قطعاً توپولوژی‌های مجازی که بر روی اون پیاده‌سازی شدن هم دچار مشکل میشن. ادامه خواندن “وقتی سرنوشت‌ها به هم گره می‌خورند: کوتاه درباره‌ی اصطلاح Fate sharing”

خوب، ارزان، سریع؟

حقیقت دنیای شبکه و حتی زندگی: خوب بودن، ارزان بودن، سرعت. فقط دوتا رو انتخاب کنید. نمیتونید هرسه رو همزمان با هم داشته باشید.

RFC1925-27a.gif

پیشنهاد می‌کنم حتماً RFC 1925 معروف به ۱۲ حقیقت دنیای شبکه را مطالعه کنید.

پیچیدگی شبکه کشنده است!

Ray Ozzie گفته:

پیچدگی کشنده است:

  • چون زندگیِ Developer ها را مشقت بار می‌کند
  • و برنامه‌ریزی، تولید و تست محصول را سخت!

صحبت بالا فقط برای دنیای نرم‌افزار نیست، بلکه به طراحی و پیاده‌سازی شبکه و الِمان‌های شبکه هم مربوط می‌شود. به زبان شبکه می‌توان گفت:
پیچیدگی شبکه کشنده است:
– چون زندگی Network Engineer ها را مشقت بار می‌کند.
– و طراحی، پیاده‌سازی، نگهداری و توسعه شبکه را سخت!

پیچیدگی شبکه

پیچیدگی شبکه چیست؟
یک شبکه‌ی پیچیده چگونه است؟

این سوال جواب دقیقی ندارد اما حاصل تحقیقات NCRG از موارد زیر نام می‌بَرد:

  • خودمختاری: در یک شبکه، پروتکل‌ها و روال‌ها بدون کنترلی خارجی (انسانی) درحال فعالیت هستند؛ مثل یک پروسه‌ی روتینگ، یا مکانیزم‌های خودکار Failover. فعل و انفعالات بین این مکانیزم‌ها ممکن است منجر به یک رفتار و نتیجه‌ی پیچیده در شبکه شود.
  • غیرقابل پیش‌بینی بودن: امکان بروز پیامدی وسیع حتی در اثر یک تغییر کوچک. مثلاً، در یک شبکه‌ی پیچیده، دست و دلِ Engineer در تغییرات می‌لرزد چون یک تغییر خیلی کوچک در یک روتر محلی، ممکن است منجر به لوپ، قطعی طولانی و خسارت‌های فراوان شود.
  • شکنندگی: مشابه مورد قبل؛ یک تغییر یا ورودی خاص می‌تواند منجر به ریزش کل یا بخش عظیمی از سیستم شود.
  • مشهود بودن: رفتار هر جزء شبکه، به نحوی متفاوت با چیزی است که شبکه بعنوان یک سیستم بزرگ عمل می‌کند. مثلاً تفاوت پروتکل مسیریابی در نقاط مختلف شبکه، و عدم consistency در سیاست‌های شبکه در نقاط مختلف با کاربرد مشابه مانند شعب کاملاً مشابه در یک شبکه‌ی بانکی
  • غیر خطی بودن: به معنی اینکه خروجیِ یک ورودی/تغییر در شبکه، خطی نخواهد بود.

اینترنت را می‌شود شبکه‌ای پیچیده، اما بزرگ و تنومند دانست، از این لحاظ که، مثلاً اگر برای یک روتر Edge در یک ISP محلی (Tier 4) مشکلی پیش آید، احتمالاً هیچ اثری در کلیت اینترنت نخواهد داشت، اما ماهیت اینترنت در برابر حملات اینترنتی مثل DDoS های پیشرفته شکننده است. حتی در رابطه با شبکه‌ای به وسعت اینترنت، واقعیت این است که نمی‌توان همه‌ی نکات مثبت را بدون هیچ زیانی بدست آورد (سبک/سنگین کردن بین توسعه‌پذیری و ثبات (Stability) یا شکننده بودن)

چگونه پیچیدگی شبکه را بررسی کنیم؟

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

به هر حال، برای بررسی بهتر پیچیدگی در شبکه معمولا دو مدل ۳ و ۴ ضلعی پیشنهاد شده، که مدل ۳ ضلعی آن معمول‌تر می باشد: ادامه خواندن “پیچیدگی شبکه کشنده است!”