
عملکرد شبکه و مفهوم پهنای باند و تاخیر – آموزش شبکه درس 18
عملکرد شبکه یکی از نکات مهمی است که برای هر کاربر شبکهای مهم است. دراین درس ما به بررسی عملکرد شبکه و روشهای محاسبه مفاهیم پهنای باند، تاخیر میپرازیم.
عملکرد شبکه چیست؟
تا این جای پستهایی که خواندیم، تمرکز ما بر روی کارکردهای اصلی و پایهای بوده که در شبکههای کامپیوتری وجود دارد. هرچند، مانند هر سیستم کامپیوتر دیگری، شبکههای کامپیوتری نیز با موضوع عملکرد (Performance) روبرو هستند. این به خاطر آن است که اثر بخشی محسابات و پردازشهایی که بر روی یک شبکه انجام میشود، وابستگی مستقیمی به دادههای مورد پردازش و زمان تحویل آنها دارد. یکی از ضرب المثلهای قدیمی که در زمینه برنامه نویسی وجود دارد میگوید :« اول آن را درست بفهم، و بعد آن را سریع انجام بده”، اما در شبکههای کامپیوتری، ما غلب به جای سریع انجام دادن با «طراحی مناسب برای عملکرد مناسب» روبرو هستیم. به همین خاطر، این موضوع اهمیت دارد که بتوانیم عوامل مختلفی که میتوانند بر روی عملکرد شبکه تاثیر گذار باشند را بیابیم.
پهنای باند و تاخیر
عملکرد شبکه با استفاده از دو شیوه بنیادی اندازهگیری میگردد که شامل پهنای باند – bandwidth (که گاهی توان عملیاتی – throughput – هم گفته میشود) و تاخیر -Latency – (که به آن کندی – delay – هم گفته میشود) میشود. پهنای باند در شبکه با معیار تعداد بیتی که میتواند در یک دوره زمانی مشخص بر روی شبکه جابجا شود اندازهگیری میگردد. برای مثال، یک شبکه ممکن است دارای پهنای باند برابر با 10 میلیون بیت بر ثانیه یا Mbps
باشد، که به معنای آن است این شبکه میتواند در هر ثانیه 10 میلیون بیت را انتقال دهد. گاهی از اوقات بهتر است که به مفهوم پهنای باند به این شکل فکر کنیم که «چقدر زمان لازم است که هر کدام از بیتهای داده بر روی شبکه جابجا شود». در شبکههای با سرعت 10-Mbps
، تقریبا 1 میکروثانیه (µs
) زمان لازم است که هر بیتی از شبکه انتقال داده شود.
پهنای باند و توان عملیاتی از نظر معنا اندکی با هم متفاوت هستند. در اول باید گفت که پهنای باند به صورت تحت الفظی برای اندازهگیری پهنای یک فرکانس باند انتقال پیام به کار میرود. برای مثال در خطوط تلفن صوتی قدیمی که از دامنه فرکانسی با طول 300 تا 3300 هرتز پشتیبانی میشود، که میتواند گفت که پهنای آن برابر با 3300 Hz - 300 Hz = 3000 Hz
است یعنی حاصل بیشتری منهای کمترین فرکانس برابر با پهنای باند میشود. اگر شما دیدی که پهنای باند به شکلی بیان میشود که در آن از معیار هرتز (hertz) استفاده میشود، بنابراین این احتمال جود دارد که آن به طیف سگینال قابل پشتیبانی در آن کانال ارتباطی اشاره دارد.
زمانی که ما از پهنای باند یک لینک ارتباطی صحبت میکنیم، ما در واقعا به تعداد بیت قابل عبور بر ثانیه اشاره داریم که این لینک میتواند در این زمان از خود عبور دهد. همچنین گاهی از اوقات به آن نرخ داده (data rate) نیز میگوئیم. مثلا ممکن بگوئیم که پهنای باند لینکهای اترنت برابر با 10 Mbps
است. هرچند در این جا یک تمایز میان نرخ داده حداکثر که بر روی یک لینک قابل دسترس است و تعداد لینکی که واقعا میتوان از طریق لینک در عمل انتقال داد وجود دارد. ما در اینجا ترجیح میدهیم که از واژه توان عملیاتی (Throughput) به عنوان یک معیار برای اندازهگیری عملکرد کل سیستم استفاده کنیم. به همین خاطر، چون ممکن است ناکارآمدیهای زیادی در زمان پیادهسازی یک شبکه وجود داشته باشد، یک جفت گره که با یک لینک با پهنای باند 10
مگابیت بر ثانیه به هم متصل هستند، ممکن است در نهایت بتوانند به توان عملیاتی 2
مگابیت بر ثانیه دست پیدا کنند. این واژه به معنای آن است که یک نرمافزار بر رویهاست میتواند برای انتقال دادهها بههاست دیگر تنها بر روی سرعت 2 مگابیت بر ثانیه حساب کند.
در نهایت، در زمانی که ما از پهنای باند صحبت میکنید، نیازمند آن هستیم که از یک اپلیکیشن نیز صحبت کنید. تعداد بیت قابل انتقال بر مبنای ثانیه که در بالا به آن اشاره شد، برای انتقال درست بر روی شبکه نیازمند انجام عملیاتهای درست و صحیحی هستند. برای برخی از نرمافزار و اپلیکیشن، این میتواند به صورت «هر چقدر که بتوانیم دریافت کنیم» باشد، اما برای نرمافزارهای دیگر، این مقدار میتواند تعداد ثابتی (ترجیحاً نه بیشتر از پهنای باند لینک)؛ و برای برخی دیگر از اپلیکیشنها نیز میتواند در طی زمان متغیر باشد. ما درباره این موضوع در پستهای بعدی توضیحات بیشتری را به شما ارائه خواهیم کرد.
در حالی که شما درباره پهنای باند شبکه به صورت کلی صحبت میکنید، گاهی از اوقات نیازمند آن هستیم که به صورت دقیق با آن صحبت کنیم و بر روی آن تمرکز کنیم، برای مثال، پهنای باند یک لینک فیزیکی و یا یک کانال پردازشگر به پردازشگر میتواند برای ما مهم باشد. در سطح لایههای فیزیکی، پهنای باند به صورت دائمی در حال بهبود است و تا اکنون نیز نشانی برای توقف آن دیده نمی شود. به صورت شهودی، اگر شما یک ثانیه از زمان را به عنوان فاصلهای در نظر بگیرید که میتوانید با یک خط کش اندازه بگیرید، پهنای باند را میتوانید به صورت تعداد زیادی از بیتها تصور کنید که در این فاصله جا میشوند، بنابراین شما میتوانید هر کدام از بیتها را به عنوان یک بخشی کوچکی از پهنای باند در نظر بگیرید. برای مثال، هر بیت از یک لینک یک مگابیت بر ثانیه برابر با 1 میکروثانیه از پهنای در دسترس است، در حالی که هر بیت از یک لینک با پهنای 2 مگابیت بر ثانیه، برابر با نیم میکروثانیه از پهنای باند در دسترس است، برای درک بهتر به تصویر 1.16 نگاهی بیندازید. تکنولوژیهای تخصصی تر ارسال و دریافت، سعی میکنند که اندازه هر بیت در پهنای باند را به همین طریق کوچکتر کنند، یعنی در واقع آنها پهنای باند بیشتری را ایجاد میکنند. برای کانال منطقی پردازشگر به پردازشگر نیز پهنای باند به وسیله عوامل دیگری نیز تحت تاثیر قرار میگیرند که شامل تعداد دفعاتی که نرمافزار کانال را پیادهسازی میکند تا بتواند با آن کار کند و هر کدام از بیتهای داده را به وسیله آن انتقال دهد میشود.

تصویر 1.16 تعداد بیت انتقال داده شده در پهنای باندهای مختلف بدون توجه به عرض هر کدام از عرض بیتها (a) نرخ انتقال داده 1 مگابیت بر ثانیه (در اینجا هر بیت 1 میکروثانیه از پهنای باند را اشغال میکند)(b) نرخ انتقال داد 2 مگابیت بر ثانیه (در این هر بیت 0.5 میکروثانیه از پهنای باند را اشغال میکند).
دومین معیار ارزیابی عملکرد در شبکه، تاخیر (Latency) است، که میتواند آن را اینگونه تعریف کرد که تاخیر مدت زمانی است که برای انتقال یک پایم از یک سوی شبکه به سوی دیگر آن صرف میشود. (همانطور که در زمینه پهنای باند گفته شد، ما میتواند تمرکز خود را بر روی تاخیر یک لینک خاص و یا یک کانال ارتباطی سر به سر شبکه بگذاریم). تاخیر بر صورت محدود و تنها بر اساس زمان اندازهگیری میشود. برای مثال، شبکه انتقال میان کشوری، ممکن است تاخیر 24
میلی ثانیهای داشته باشد، که یعنی 24 هزارم ثانیه طول میکشد که از ساحل شمالی آمریکا پیام به سمت دیگر آمریکا برسد. در این جا شرایط زیادی وجود دارد که اهمیت دارد بفهیم که چند ثانیه طول میکشد تا یک پیام از یک سوی شبکه به سوی دیگر برود و برگردد، در اینجا به جای یک طرف بودن ارسال پیام به دو سویه بودن آن توجه میشود. ما این زمان را زمان رفت و برگشت (RTT) مینامیم که بر گرفته از عبارت round-trip time است.
ما اغلب به موضوع تاخیر با توجه به سه بخش و جزء کوچکتر آن فکر میکنیم. در ابتدا، در اینجا تاخیر سرعت نوع نور مطرح میشود. این تاخیر به این خاطر اتفاق میافتد که هیچ چیزی، حتی یک بیت بر روی یک کابل، نمی تواند سریعتر از سرعت نور حرکت کند. اگر ما فاصله بین دو نقطه را بدانیم، شما میتوانید به راحتی تاخیر سرعت نور آن را محاسبه کنید، اگرچه باید دقیقت باشید، زیرا نور در هر رسانا سرعتهای متفاوتی دارد، و در خلا با سرعت 3.0 × 108 m/s
حرکت میکند در حالی که در کابلهای مسی این سرعت به 2.3 × 108 m/s
میرسد و در کابلهای فیبر نوری این سرعت برابر با 2.0 × 108 m/s
است. دومین تاخیر، مدت زمانی است که انتقال یک واحد از داده به خود اختصاص میدهد. این موضوع تابعی از پهنای باند شبکه و اندازه بستههای است که بر روی لینکهای ارسال قرار میگیرند. سوم، صفبندی (Queuing) نیز باعث ایجاد تاخیر در شبکه میشوند، زیرا شبکههای سوئیچ بسته ای، به صورت کلی نیازمند آن هستد که بستههای داده را پیش از آن ارسال به صورت مرتب و در صف در آورند و سپس آن را با استفاده از لینکهای موجود انتقال دهند. بنابراین ما تاخیر کلی را به صورت زیر در نظر میگیریم:
- تاخیر = مدت زمان انتشار + مدت زمان انتقال داده + مدت زمان انتظار در صف
- مدت زمان انتشار = فاصله تقسیم بر سرعت نور (یا انتشار الکترونهای بر روی رسانا)
- مدت زمان انتقال = اندازه بسته تقسیم بر پهنای باند.
در اینجا فاصله مقدار طولی است که کابل داده طی میکند، سرعت نور نیز باید سرعت کارآمد نور در طی یک کابل در نظر گرفت که در اینجا بر حسب نوع رسانا میتوانیم از سرعت انتشار الکترونها هم استفاده کرد، اندازه بسته نیز به اندازه بیتهای یک بسته اشاره دارد، و پهنای باند نیز پهنا در دسترس برای انتقال دادن بستهها و پاکتهای داده است. توجه کنید، اگر پیامی شامل تنها یک بیت باشد و ما تنها درباره یک لینک صحبت کنیم (که مخالف صحبت ما درباره کل شبکه است)، در آن صورت ما هیچ تاخیری را به خاطر زمان انتقال و زمان انتظار در صف نخواهیم داشت، و تاخیر بسته به سرعت انتشار نور و یا الکترونها بر روی رسانای مورد نظر ما در نظر گرفته میشود.
پهنای باند و پهنای شبکه هر دو ویژگیهایی هستند که بر اساس یک لینک و یا کانال مشخص در نظر گرفته میشوند. هرچند ارتباطی که میان آنها وجود دارد، وابسته به نرمافزاری است که آن دو را به کار میگیرد. برای برخی از نرمافزارها و اپلیکیشن، تاخیر بر پهنای باند غلبه دارد. برای مثال، فرض کنید که یک کاربر از سمت کلاینت، یک پیام یک بایتی را به سمت سرور میفرست و یک پیام یک بایتی را نیز در جواب آن دریافت میکند که این میتواند به نوبه خود مرز تاخیر را مشخص کند. در اینجا فرض میکنیم که هیچ وقفه محاسباتی در آمادهسازی پاسخ وجود ندارد، این نرمافزار بسیار متفاوت از یک کانال ارتباطی شبکه مخابرات کشوری که از زمان رفت و برگشت (RTT) برابر با 100 میلی ثانیهای بهره میبرد، عمل میکند و زمان رفت و برگشت (RTT) در اینجا چون در یک اتاق در نظر گرفته شده است برابر با 1 میلی ثانیه است. هرچند، در اینجا هم پهنای باندهای 1 یا 100 مگابیت بر ثانیهای بی معنا هستند، زیرا همانطور که در پیش از این نیز نشان دادیم، زمان انتقال یک بایت برابر با 8 میکروثانیه است و در نتیجه زمان انتقال در اینجا برابر با 0.08 µs
خواهد بود.
در مقابل، برنامه یک برنامه کتابخانه دیجیتالی، ممکن است که اقدام به فرخوان یک تصویر 25 مگابایتی کند که پهنای باند بیشتری را مصرف میکند، و هرچه پهنای باند بیشتر باشد امکان انتقال تصویر به کاربر نهایی وجود خواهد داشت. در اینجا، پهنای باند کانال بر عملکرد غلبه دارد. به همین خاطر، فرض کنید که کانال مورد بحث ما دارای توان10 مگابیت بر ثانیه باشد. در این صورت در حدود 20 ثانیه طول میکشد که یک تصویر بارگذاری شود ( یعنی (25 × 10^6 × 8 bits / (10 × 10^6 Mbps = 20 seconds))
که این در صورت در اینجا فرقی نمی کند که کانال دریافت کننده ما 1 مگابیت بر ثانیه یا 100 مگابیت بر ثانیه پهنا داشته باشد؛ تفاوت میان زمان پاسخ 20.001 ثانیه و زمان پاسخ 20.01 ثانیه در اینجا قابل گذشت است.
مگا (Mega) چقدر بزرگ است؟ |
در اینجا چند نکته وجود دارد که شما باید قبل از کار کردن با مفاهیم شبکه با آنها آگاه باشید و یکی از مهمترین نکات در اینجا تفاوت میان MB مگابایت و Mbps و مگابیت بر ثانیه است. اولین تفاوت قابل مشاهده در اینجا طبیعتا بین بیت و بایت است. در تمام این سری از پستها ما همیشه از حرف کوچک b به معنای بیت و حرف B بزرگ به معنای بایت استفاده میکنیم. دومین معیاری که شما باید درباره استفاده کردن مطمئن شوید تعریف درست گیگا (G)، مگا (M) و کیلو (K) است. برای مثال در اینجا مگان به معنای 2 به توان بیست و یا 10 به توان 6 است. به صورت مشابه در اینجا کیلو نیز به معنای 2 به توان 10 و یا 10 به توان 3 است و کلمه گیگا نیز به معنای 2 به توان 30 یا 10 به توان 9 است. اما چیز که کار را در شبکه خراب میکند، این است که ما در کار با شبکه از هر دو تعریف به صورت همزمان استفاده میکنیم. در ادامه علت این موضوع را برایتان توضیح میدهم. پهنای باند باند در شبکهها اغلب بر اساس Mbps یا مگابیت بر ثانیه تعریف میشود که به صورت معمول سرعت نواخت و انتقال بیتها در یک لینک شبکه است. سرعت نواخت و یا clock در اینجا برابر با 10 مگاهرتز است که برای انتقال 10 مگابیت بر ثانیه به کار برده میشود. به خاطر اینکه مگان در مگاهرتز برابر با 10 به توان 6 نوسان در ثانیه است، به همین خاطر در اغلب اوقات مان مگابیت بر ثانیه را نیز 10 به توان 6 بیت بر ثانیه در نظر میگیریم. (به همین شکل برای گیگابیت بر ثانیه هم از 10 به توان 9 استفاده میکنیم). از سوی دیگر، هنگامی که ما درباره پیامی که میخواهیم ارسال کنیم صحبت میکنیم، در واقع ما به اندازه آن بر مبنای بایت صحبت میکنیم. به خاطر آنکه پیامهایی که در حافظه رایانه ما ذخیره شده اند، حافظه به صورت معمول بر اساس عدد 2 به توان اعداد دیگر نظر k (برای هزار) نشان داده میشوند و از علامت kB به معنای کیلوبایت یعنی 2 به توان 10 بهره میگیرند. (به همین صورت MB نیز در اینجا به معنای 2 به توان 20 و GB نیز به معنای 2 به توان 30 بایت است). هنگامی که شما این دو را در کنار همدیگر به کار میبرید، غیر معمول نیست که دباره ارسال یک پیام 56 کیلوبایتی بر روی یک کانال 100 مگابیت بر ثانیهای صحبت کنید که در اینجا به معنای آن است که 64 × 2 به توان 10 × 8 بیت باید با نرخ 100 × 10 به توان 6 بیت بر ثانه ارسال شود. این تفسیری است که ما در کل این سری از پستها استفاده میکنیم، مگر آنکه به تصریح درباره چیز دیگری صحبت کرده باشیم. خبر خوب در اینجا این است که، در بسیاری از زمانها، ما با یک محاسبه ساده سر انگشتی طرف هستیم، که در اینجا منطقی است که تصور کنیم که 10 به توان 6 تقریبا برابر با 2 به توان 20 است (که این کار تبدیل تعاریف به مفهوم مگا را ساده تر میکند). این تقریب میتواند سبب ایجاد یک اختلاف 5 درصدی شود. ما حتی میتوانیم در برخی از موارد بایت را 10 بیت در نظر بگیریم که در این صورت به یک اختلاف 20 درصدی برخورد میکنیم که این خطا با توجه به دامنه کاری ما هنوز قابل قبول است (البته اکنون با کمک نرمافزارهای محاسباتی میتوانید با راحتی این مقدارها را بدون خطا محاسبه کنید). در حالی که ما محاسبات چرک نویس و سریع را انجام میدهیم، 100 میلی ثانیه میتواند عدد منطقی برای مدت زمان رفت و برگشت (RTT) در یک کشور در نظر گرفته شود، به خصوص اگر کشور مورد نظر ما کشور آمریکا باشد، و 1 میلی ثانیه نیز میتواند زمان تقریبی خوبی برای زمان رفت و برگشت (RTT) در یک شبکه محلی (LAN) باشد. در مثالهای پیشین، ما میتواند زمان رفت و برگشت (RTT) را به 48 میلی ثانیه افزایش دهیم که زمان تاخیر انتشار نور در فیبرهای و کابلهای را نیز در معادله خودمان تاثیر داده باشیم، زیرا در اینجا ما با منابع تاخیر دهنده دیگری نیر روبرو هستیم که برای مثال میتوان به زمان صرف شده در سوئیچها برای پردازش اطلاعات و مسیریابیهای شبکه اشاره کنیم. همچنین شما باید این موضوع را در نظر داشته باشید که فیبر نوری که میان دو نقطه از شبکه کشیده شده است، یک مسیر کاملا صاف و مستقیم را طی نمی کند. |

تصویر 1.17 زمان تاخیر درک شده (زمان پاسخ دهی) در مقابل زمان رفت و برگشت (RTT) برای اندازههای مختلف و سرعتهای متفاوت لینکهای ارتباطی
تصویر 1.17 در اینجا به شما این که چطور تاخیر و یا پهنای باند میتواند در شرایط مختلف بر روی عملکرد غلبه داشته باشد را نشان میدهد. در اینجا نمودارها نشان دهنده مدت زمانی است که آبجکها با اندازههای مختلف (1 بایت، 2 کیلوبایت و 1 مگابایت) در طول شبکه با رنج زمان رفت و برگشت (RTT) مختلف از 1 تا 100 میلی ثانیه و سرعت لینک 1.5 یا 10 مگابیت بر ثانیه حرکت میکنند. ما از مقیاس لگاریتمی برای نشان دادن عملکرد نسبی استفاده کرده ایم. برای شی 1 بایتی (که یک کاراکتر ستاره بوده است)، تاخیر در اینجا تقریبا با RTT برابر بوده است، بنابراین شما نمی توانید تمایزی را میان یک شبکه 1.5 مگابیت بر ثانیهای و یک شبکه 10 مگابیت بر ثانیهای مشاهده کنید. برای آبجکت 2 کیلوبایتی (که مثلا یک ایمیل بوده)، سرعت لینک کمی در شبکههایی که زمان رفت و برگشت (RTT) برابر با 1 میلی ثانیه است متفاوت میشود، اما این مقدار در شبکهای با زمان رفت و برگشت (RTT) برابر با 100 میلی ثانیه قابل چشم پوشی است. و برای یک آبجکت 1 مگابایت (که برای مثال یک تصویر دیجیتالی بوده است)، زمان رفت و برگشت (RTT) هیچ تمایزی را ایجاد نمی کند، در اینجا سرعت لینک بر روی عملکرد در کل طیفهای زمان رفت و برگشت (RTT) غلبه دارد.
در اینجا به توان عملیاتی در این سری از پستها دقت کنید، ما از واژه تاخیر و کند به صورت عمومی استفاده میکنیم تا یک عملکرد خاص مانند تحویل یک پیام و یا حرکت یک آبجکت را نمایش دهیم. هنگامی که بخواهیم درباره مدت زمان مشخصی که انتشار سر به سر شبکه لازم دارد صبحت کنیم، ما از واژه تاخیر انتشار (Propagation delay) استفاده میکنیم. همچنین بسته به موضوع بحث ما به این نکته نیز اشاره خواهیم کرد که آیا ما درباره تاخیر یک سویه و یا زمان رفت و برگشت (RTT) صحبت میکنیم.
از سوی دیگر، کامپیوترهایی که ما به شبکه متصل میکنیم، بسیار سریع هستند، گاهی اوقات بهتر است که به صورت مجازی به آنها بر اساس تعداد دستور به ازای هر مایل تصور کنیم. یک لحظه این موضوع را تصور کنیم که چه اتفاقی میافتاد اگر برای 100 میلیارد دستور به ازای هر ثانیه، باید یک پیام را بر روی کانالی با زمان رفت و برگشت (RTT) برابر با 100 میلی ثانیه ارسال میکردید. (برای آنکه این مسئله را آسان تر کنیم، فرض کنید که پیامهای شما به فاصله 5000 مایلی را پوشش میدادند). اگر سایت کامپیوتر برای مدت 100 میلی ثانیه بیکار باشد تا بتواند به پیامی پاسخ دهد، پس در این صورت آن در این زمان 10 میلیارد دستورالعمل را از دست میدهد، که این مقدار برابر با 2 میلیون دستورالعمل به ازای هر مایل مسافت است. بهتر بود این مقدار پیام از شبکه عبور کنند تا اینکه به توجیه این حجم از دست دادن اطلاعات بپردازیم.