واکنشهای زنجیرهای و اهمیت ان در هنگام مشاوره و طراحی شبکه
یافتن الگوریتمی جهت جلوگیری از واکنشهای زنجیرهای به شکل یک polynomial
غیرممکن است؛ اما با تبعیت از روشهای این مقاله، میتوان این گونه واکنشهای
مخرب را در شبکههای کامپیوتری کاهش داد. نه برنامههای کامپیوتری همیشه
صحیحاند و نه سخت افزار کامپیوتر همواره بدون عیب. یک نقص سخت افزاری، به
راحتی می تواند کامپیوتری را از کار بیندازد و این موضوع در مورد
برنامههای نرم افزاری هم صدق می کند.اغلب کامپیوترها، به صورت دورهای از
کار میافتند و حتی کامپیوترهای با قابلیت اطمینان بالا نیز، گاهی دچار
مشکل می شوند. اما اکنون که کامپیوترها، در شبکههای متفاوت قرار
گرفتهاند، خطر احتمال بروز نقص در یکی از کامپیوترهای شبکه، یا وجود نقص
در یکی از پروتکلها- که باعث از کارافتادن کل سیستم شبکهای شود-بیشتر است.
بدین ترتیب روشن است که از کار افتادن کل سیستم در اثر از کار افتادن یک
کامپیوتر قابل قبول نیست. در این مقاله از" واکنشهای زنجیرهای" برای مشخص
کردن این گونه از کار افتادگی در شبکهها در مشاوره و طراحی شبکه بحث میشود." واکنش زنجیرهای" را
فرهنگنامه و بستر (Webster)" سلسله واکنشهای شیمیایی یا هستهای خودجوشی
که در آن محصولات واکنش سبب ادامه روند واکنشها می شوند" تعریف کرده است.
این تعریف به غیر از قسمتی از آن که، تعریف را منحصر به واکنشهای شیمیایی و
هستهای کرده است، برای منظور ما کاملا"مناسب است. قابلیت دسترسی هر چه
بیشتر به شبکهها سبب به وجود آمدن انواع کاربردها که محتاج به الگوریتمها و
پروتکلهای پیچیده برای پردازش توزیعی در شبکههاست، شده است. این پیچیدگی
مضاعف باعث بالا رفتن امکان پیدایش نقص در طراحی شبکهها شده است. هدف اصلی
این مقاله، معرفی تعدادی از این نقایص و بحث در مورد جلوگیری از بروز
آنهاست.
در شبکه ای که از توپولوژی باس استفاده می شود، همه کامپیوترها پشت سر
همدیگر و در یک خط، توسط کابل شبکه به یکدیگر متصل شده اند. سیستم های
اترنت قدیمی برای توپولوژی باس از کابل های کواکسیال استفاده می کردند که
امروزه دیگر به ندرت به چشم می خورند. کابل کشی یک شبکه باس به دو صورت می
تواند باشد: ضخیم و نازک
در شبکه های اترنت ضخیم، کامپیوترها توسط یک کابل مجزای کوچکتر بنام AUI
(کابل گیرنده/فرستنده) به یک کابل یکسره کواکسیال بزرگتر متصل می شوند.
شبکه های اترنت نازک از تکه های جدا از هم کابل نازکتری استفاده می کنند که
در آن هر قطعه کابل، کامپیوتری را کامپیوتر کنار خود متصل می کند.
توجه کنید که فرستنده-گیرنده (transceiver)جزئی جدایی ناپذیر از رابط شبکه
است که مسئول فرستادن و دریافت اطلاعات روی رسانه شبکه می باشد. اترنت نوع
ضخیم تنها نوع از انواع شبکه های اترنتی است که از فرستنده -گیرنده ای
استفاده می کند که از آداپتور رابط شبکه مجزا است.
فرستنده-گیرنده با استفاده از وسیله ای بنام انشعاب ومپایر به کابل
کواکسیال و از طرف دیگر توسط یک کابل AUI به آداپتور رابط شبکه کامپیوتر
متصل می شود. در همه انواع دیگر استانداردهای لایه فیزیکی اترنت،
گیرنده-فرستنده داخل کارت شبکه قرار دارد و نیازی به کابل های AUI مجزا نمی
باشد.
مشکل اصلی توپولوژی باس اینست که یک مشکل کوچک در یک کانکتور، ترمیناتور یا
کابل شبکه ، کل شبکه را تحت تاثیر قرار می دهد. سیگنال هایی که نمی
توانند از یک نقطه بخصوص بگذرند نمی توانند به کامپیوترهایی که بعد از آن
نقطه وجود دارند برسند. علاوه بر این وقتی مشکلی در نقطه ای از شبکه به
وجود آید، کل شبکه به دو سگمنت یا قطعه تقسیم می شود و هر یک از آن بخش ها
بدون ترمینانتور خواهند شد و در نتیجه هیچ یک از دو بخش شبکه قادر به
برقراری ارتباط و تبادل داده ها نمی باشند. به همین دلیل امروزه از شبکه
های باس به ندرت استفاده میشود.متاسفانه هیچ راهی برای بالا بردن قابلیت اطمینان سیستمهای نرم
افزاری وجود ندارد. اما هر چقدر نقاط ضعفها را بهتر تشخیص دهیم، بهتر می
توانیم خود را جهت محافظت از کل سیستم مجهز کنیم.این مقاله وضعیتهایی که
منجر به پایین آمدن کل سیستم می شود، مشخص می کند و نقصهای حقیقی را که در
سیستمهای متفاوت اتفاق افتاده اند و دارای شباهتهای زیادی هستند، ارائه می
دهد. همچنین در این مقاله، مثالهایی از فروریزی احتمالی سیستمها که در
نتیجه نقصهای جزئی در طراحی و مشاوره و طراحی شبکه آنها وجود داشته، ارائه می گردد. ساختن یک
برنامه کامپیوتری کلی، که بتواند تمام واکنشهای زنجیره ای را بشناسد و از
آنها جلوگیری کند همچنانکه در نظریه۱ در این مقاله نشان داده خواهد شد،
غیرممکن است؛اما این مقاله مشاوره و طراحی شبکه ، به چند قانون برای کم مردن احتمال وقوع هر گونه
نقص در سیستم شبکهای، اشاره خواهد کرد. مقدار زیادی از مطالب آن مثل
قصههای رایج بین اهل فن است. اما هدف کلی، جمع آوری و یکی کردن یک سری
مشاهدات و راهحلهای فاقد عمومیت است. عده زیادی معتقدند که برنامههای
توزیعی، کلا" می توانند دارای آن چنان نواقص جزئی باشند که پیدا کردن آنها
فوق تا مشکل است. این مقاله، از این درک حمایت می کند؛ اما در ضمن کمک می
نماید تا درک نواقص و جلوگیری آنها مشخصتر شود.این موضوع، بویژه اهمیت
زیادی دارد، چرا که شبکه ها هر روز پیچیدهتر و گستردهتر می شوند.
اصطلاح توپولوژی الزاما به آرایش کابل های تشکیل دهنده یک شبکه اشاره نمی
کند. اگر چه شبکه های بی سیم از رسانه هایی که به رسانه های بدون محدودیت
معروف هستند استفاده می کنند، کامپیوترهای موجود در آنها نیاز به الگوی
خاصی برای برقراری ارتباط با همدیگر دارند.
LAN های بی سیم دارای دو توپولوژی کلی هستند: توپولوژی مستقل و توپولوژی وابسته.
در نوع مستقل، گروهی از کامپیوترهای مجهز به آداپتورهای شبکه بی سیم وجود
دارند که قادر هستند آزادانه تا زمانی که در محدوده برد تکنولوژی بی سیم
خود هستند با همدیگر ارتباط برقرار کنند. این تکنولوژی برای شبکه های اداری
و خانگی کوچک که فقط شامل چند کامپیوتر هستند و در آنها کابل کشی غیر
ممکن است یا مقرون به صرفه نیست، مناسب است.
در یک شبکه وابسته، کامپیوترهای مجهز به تجهیزات بی سیم از طریق فرستنده-
گیرنده هایی که خود با کابل های استاندارد به LAN متصل هستند با شبکه
ارتباط برقرار می کنند. به این فرستنده-گیرنده ها، نقاط دستیابی شبکه یا
access point می گویند. در این آرایش کامپیوترهای بی سیم مستقیما با همدیگر
ارتباط برقرار نمی کنند، بلکه فقط از طریق access point ها با شبکه کابل
دار ارتباط برقرار می کنند. این توپولوژی برای شبکه های بزرگ که تعداد کمی
کامپیوتر بی سیم در آنها وجو.د دارد مناسب تر است.
حلقه بسته بینهایت"Infinite Loop"
وقتی که یک استفاده کننده شبکه از ماشینی به ماشینی دیگر رفت، باید کاری
کند که پیغامهای دریافتی را به ماشین جدید منتقل نماید. این کار، با به کار
بردن فرمانهای منتقل کننده قابل انجام است. برای مثال، در سیستم عاملUnix
شخص میتواند آدرس ماشین جدید را در فایلی به نام Forward مشخص کند. قبل از
اینکه پیغامی به شخص استفاده کننده ماشین انتقال یابد، این فایل امتحان
میشود و چنانچه در داخل آن خالی نباشد، پیغام به طور اتوماتیک، به آدرس
جدید فرستاده میشود. حال وضعیتی را در نظر بگیرید که، شخص بی احتیاطی در
فایلهایForward. دو کامپیوتر مختلف دو آدرس قرار میدهد. به عبارت دیگر، او
در Forward A ، آدرس ماشین B و در Forward ماشین B آدرس ماشین A را قرار
میدهد و بدین ترتیب یک سیکل به وجود میآورد. پس، یک پیغام فرستاده شده به
ماشین A ، از A به B و از B به A در حلقه بسته بی نهایت باقی میماند. عمل
این گونه پیغامها، دارای طول عمرند هر بار که از ماشین، به ماشین دیگر
فرستاده میشوند، از عمر پیغام کاسته میگردد تا اینکه عمر آن تمام میشود و
قبل از اینکه پیغام از بین برود یک پیغام خطا به وجود میآورد.● از کار
افتادگی
معمولا" این گونه حلقه بسته ها، مشکلی به وجود نمیآوردند، بجز آنکه شخص
استفاده کننده هیچ گاه پیغامی دریافت نمیکند؛ اما در سناریوی زیر مشکل
تفاوت میکند: جان که، در دام چنین حلقه بستهای افتاده بود، بدون کوچکترین
اطلاعی متوجه میشود که پیغامی دریافت نمیکند. او تصمیم میگیرد که برای
خودش پیغامی بفرستد، تا ببیند نتیجه چه میشود. پیغامی که او برای خودش
فرستاد البته در داخل حلقه بسته افتاد و بعد از آنکه طول عمرش سپری شد از
بین رفت و پیغام به وجود آورد. آن پیغام خطایی ایجاد شده، به کسی که پیغام
را فرستاده بود (جان)، فرستاده شد. البته سر نوشت پیغام خطا، همانند پیغام
اصلی بود و این پیغام هم قبل از از بین رفتن، پیغام خطای دیگری به وجود
آورد. اما هر بار که یک پیغام خطای جدید به وجود میآمد، طولش بزرگتر میشد
به دلیل اینکه، هر پیغام، شامل پیغام، مشخصات پیغام و صادر کننده پیغام
بود. این روند رو به رشد در حجم پیغامها، از تابع خطی پیروی میکرد که برای
از کار انداختن کل سیستم کافی بود. در مثال بالا، دو ماشین A و B در یک
شبکه با سرعت زیاد قرار گرفته بودند. بنابراین ، پیغامها خیلی سریع از A به B
و بر عکس میرفت و بزرگتر میشد و در نتیجه سیستم خیلی سریع پایین آمد.
اگر سرعت شبکه، پایین بود پیغامها با سرعت کمتری رد و بدل میشدند که خود
باعث پایین آمدن کارآیی سیستم و تاخیر در تشخیص مشکل می گشت. مثال دیگر،
عبارت است از یک حلقه بسته بینهایت که در دانشگاه آریزونا در سال ۱۹۸۶
اتفاق افتاده. به علت اشتباه در دادن مقادیر به فایلهای اولیه از سوی لینک سایت
یک کامپیوتر مشحص به نام Corana فکر میکرد که اسمش کامپیوتر دیگری است
بنام Baskerville که با Corana روی یک شبکه بودند. وقتی که Corana به کار
افتاد، تلاش کرد که اتصالش را با Baskerville همانند بقیه کامپیوترها
برقرار کند. این اتصال ناموفق بود برای اینکه Baskerville نمی خواست که با
خود صحبت کند، چرا که Baskerville ازCorana پیغامی به صورت سلام، من
Baskerville هستم دریافت کرد. این اتصال ناموفق باعث به وجود آمدن یک پیغام
خطا شد. پیغام خطا به طور اتوماتیک به کامپیوتر دیگری به نام مگارون
(Megaron) روی شبکه فرستاده شد. مگارون مسوول نگهداری آدرس کارشناسان سایت
بود. متاسفانه کارشناسی که مسوول بود، پیغامهایش را روی Corana دریافت می
کرد؛ اما چون Corana فکر می کرد که Baskerville است، کارشناس سایت هیچ وقت
پیغام خطا را دریافت نکرد. چون پیغام خطا، نمیتوانست به مقصدش برسد. همین
باعث به وجود آمدن پیغام خطای دیگری شد که، به نوبه خود پیغام خطایی دیگری
شد که، به نوبه خود پیغام خطای دیگری را به وجود آورد و غیره. باید توجه
کرد به علت اینکه چندین استفاده کننده در این مورد دخیل بودند، اثرات
نامطلوب حلقه بسته خیلی جدیتر بود: هر پیغام خطا، به تمام آدرسها فرستاده
میشد. نتیجه اینکه، در اثر پر شدن دیسکها، تعداد زیادی ماشین، از جمله
ماشینهای کارشناسان سایت از کار افتادند. این مثال، نشان دهنده خطر فرستادن
بیش از یک پیغام و یا استفاده از یک لیست بلند در نامهنگاری است. بهتر
است که پیغامهای خطا را در یک فایل ریخت و مسوول آن گاهگاهی به آن فایل
نگاه کند تا اینکه، از روش پیغام رسانی استفاده شود. امروزه، استفاده از
لیستهای بلند نامه نگاری، در سراسر جهان متداول است و از کارافتادگی سیستم
شامل آنها می تواند بسیار مضر باشد.