کنترل جریان (داده)
شرح
Flow control (data) در ارتباطات دادهای، کنترل جریان یک فرآیند مدیریت نرخ انتقال بین دو گره (دو عضو در یک شبکه) برای جلوگیری از ارسال از طرف فرستنده (سریع) به دریافتکننده (کند) است. کنترل جریان مکانیزمی را برای دریافتکننده جهت کنترل سرعت انتقال فراهم میکند؛ بنابراین گره دریافتکننده دچار سرریزی داده از طرف گره ارسالکننده نمیشود. کنترل جریان باید از کنترل ازدحام متمایز شود که برای کنترل جریانی از داده زمانیکه ازدحام بهطور واقعی رخ داده استفاده میشود. کنترل جریان میتواند بر اساس اینکه آیا دریافتکننده بازخورد را برای فرستنده ارسال کند یا نه دستهبندی شود.
کنترل جریان موضوع مهمی است زیرا این امکان برای کامپیوتر فرستنده وجود دارد که اطلاعات را با نرخ سریعتر از توان دریافت و پردازش کامپیوتر مقصد انتقال دهد. این امر زمانی اتفاق میافتد که کامپیوترهای دریافتکننده بار ترافیکی سنگینی در مقایسه با کامپیوتر فرستنده داشته باشد یا اگر کامپیوترهای دریافتکننده توان پردازشی کمتری نسبت به کامپیوتر فرستنده داشته باشند.
روش stop and wait
این روش سادهترین شکل کنترل جریان است. در این روش پیام به چندین فریم شکسته میشود و دریافتکننده آمادگی خود را برای دریافت هربسته داده اعلام میکند. فرستنده برای هر رسید تأیید ACK (Acknowledgement) بعد از ارسال هر فریم به مدت زمان مشخصی منتظر خواهد ماند. ACK به منظور اطمینان از اینکه دریافتکننده فریم را به درستی دریافت کرده تولید و فرستاده میشود. فریم بعدی تنها زمانی فرستاده خواهد شد که ACK فریم قبلی دریافت شده باشد.
ترتیب این عملیات به شرح زیر خواهد بود :
- فرستنده : در هربار فقط یک فریم را ارسال میکند.
- فرستنده ACK را در بازه زمانی مشخص شده دریافت میکند.
- گیرنده : زمانی که یک فریم دریافت شد ACK آن را ارسال میکند.
- بازگشت به مرحله 1 در صورت دریافت رسید تأیید ACK، یا در صورت به پایان رسید زمان انتظار
اگر فریم یا ACK در زمان انتقال از بین برود توسط فرستنده دوباره ارسال خواهد شد. این فرآیند انتقال مجدد به نام ARQ (Automatic Repeat Request) معروف است.
مشکل روش stop and wait این است که فقط یک فریم در هر بار میتواند انتقال داده شود که اغلب باعث ناکارآمد شدن کانال انتقال میشود چون تا زمانیکه ما ACK را دریافت نکنیم فرستنده قادر به انتقال بسته جدید نخواهد بود. در طول این زمان هم کانال و هم فرستنده بیکار و بدون فعالیت هستند.
روش Sliding window
روشی برای کنترل جریان که در آن یک گیرنده به فرستنده اجازه ارسال داده را می دهد تا یک پنجره پر شود. هنگامی که پنجره پر شد، فرستنده باید انتقال را متوقف کند تا زمانی که گیرنده آمادگی خود را برای یک پنجره بزرگتر اعلام کند.
از کنترل جریان پنجره کشویی در صورت محدود بودن اندازه و غیر قابل تغییر بودن آن، می توان بهترین استفاده را برد. در طی یک ارتباط معمولی بین فرستنده و گیرنده، گیرنده فضای بافر را برای فریم های n اختصاص می دهد (n اندازه بافر در فریم ها است). فرستنده می تواند ارسال کند و گیرنده می تواند فریم های n را قبول کند بدون اینکه منتظر رسید تأیید باشد. به منظور کمک به پیگیری آن دسته از فریم هایی که به مرحله رسید تأیید رسیده اند، یک عدد ترتیب دار به آن اختصاص داده می شود. گیرنده با ارسال تأییدیه ای که شامل شماره ترتیب دار فریم بعدی مورد انتظار است، یک فریم را تأیید می کند. این تأیید اعلام می کند که گیرنده آماده است تا با دریافت تعدادی فریم، از تعداد مشخص شده شروع کند. هم فرستنده و هم گیرنده آنچه را که پنجره نامیده می شود ، حفظ می کنند. اندازه پنجره از اندازه بافر کمتر یا مساوی است.
کنترل جریان Sliding window به مراتب عملکرد بهتری از کنترل جریان stop-and-wait دارد. به عنوان مثال، در یک محیط بی سیم اگر نرخ داده ها پایین باشد و سطح نویز بسیار بالا باشد، انتظار برای تصدیق ACK برای هر بسته ای که منتقل می شود خیلی امکان پذیر نیست. بنابراین، انتقال داده به صورت فله عملکرد بهتری را از نظر توان بیشتر به همراه خواهد داشت.
کنترل جریان Sliding window یک پروتکل نقطه به نقطه است که فرض می کند هیچ عامل دیگری سعی نمی کند تا زمان انتقال اطلاعات فعلی، ارتباط برقرار کند. پنجره نگهداری شده توسط فرستنده نشان می دهد که چه فریمهایی را می توان ارسال کرد. فرستنده تمام فریم های موجود در پنجره را ارسال می کند و منتظر تأیید است (برخلاف رسید تصدیق بعد از هر فریم). سپس فرستنده پنجره را به شماره دنباله مربوطه تغییر می دهد، بنابراین نشان می دهد که فریم های داخل پنجره شروع شده از شماره دنباله فعلی می تواند ارسال شود.
کنترل جریان انتقال
کنترل جریان انتقال ممکن است در این موارد اتفاق بیفتد :
- بین تجهیزات ترمینال داده DTE (Data Terminal Equipment) و یک مرکز سوئیچینگ، توسط پایان دهنده مدار داده DCE (Data Circuit-terminating Equipment) و گونههای مخالف که مستقیماً به هم وصل شده
- یا بین دو دستگاه از یک نوع (مثل دو DTE یا دو DCE) که به وسیله کابل متقاطع به هم وصل شدهاند.
ممکن است نرخ انتقال به دلیل نیاز شبکه یا DTE کنترل شود. کنترل جریان انتقال می تواند به طور مستقل در دو جهت انتقال داده ها اتفاق بیفتد، بنابراین اجازه می دهد نرخ انتقال در یک جهت با نرخ انتقال در جهت دیگر متفاوت باشد. کنترل جریان انتقال می تواند به صورت :
- در یک حالت stop-and-store
- یا در حالت دیگر استفاده از یک Sliding window
انجام کنترل جریان می تواند به حالت :
- یا توسط خطوط سیگنال کنترل در رابط ارتباطی داده (به پورت سریال و RS-232 مراجعه کنید)
- یا با ذخیره کاراکترهای کنترل در باند برای شروع و توقف جریان سیگنال (مانند کدهای ASCII برای XON / XOFF).
سختافزار کنترل جریان
در RS232 مشترک دو خط کنترل وجود دارد:
- کنترل جربان RTS، درخواست ارسال یا (Request To Send) RTS و مناسب برای ارسال CTS (Clear To Send)
- کنترل جریان DTR و DTR (Data Terminal Ready)/DSR ( Data Set Ready ) که معمولاً به عنوان سختافزار کنترل جریان شناخته میشود.
کنترل جریان سختافزار نوعاً توسط DTE یا «پایان کارفرما» کنترل میشود. همانطور که اجرای اولیه یا وارد کردن خط آن برای دستور به طرف دیگر انجام میشود:
- در حالت کنترل جریان RTS و DTE تنظیم RTS خود را انجام میدهد که به طرف دیگر سیگنال میفرستد (طرف کارگزار مثل یک DCE) تا شروع به بازبینی خط داده ورودی خود کند. زمانی که برای داده آماده است، طرف کارگزار خط مکمل خود را میفرستد، در این مثال CTS، که سیگنالهایی را به کارفرما برای آغاز ارسال داده میفرستد؛ و برای کارفرما جهت شروع بازبینی دادههای کارگزار را در خط خروجی میفرستد. اگر هر کدام از دو طرف نیاز به متوقف کردن ارسال داده داشتند، خط «آمادگی داده» مربوطه را کاهش میدهد.
- برای ارتباط کامپیوتر شخصی با مودم و پیوندهای مشابه، حالت کنترل جریان DTR، DTR/DSR برای کل نشست مودم اجرا میشود (بگویید یک تماس اینترنتی Dialup)، و RTS/CTS برای هر بلوک دادهای اجرا میشود.
نرمافزار کنترل جریان
در طرف مخالف، XON و XOFF معمولاً به نرمافزار کنترل جریان گفته می شود.
کنترل جریان حلقه باز
کنترل جریان حلقه باز مکانیزمی است که توسط نداشتن بازخورد بین گیرنده و فرستنده مشخص میشود. این وسیله کنترل ساده به طور گسترده ای مورد استفاده قرار می گیرد. تخصیص منابع باید به صورت «رزرو از قبل» یا «گام به گام» باشد.
کنترل جریان حلقه باز دارای مشکلات ذاتی در بالا بردن بهرهوری از منابع شبکه است. تخصیص منابع در قسمت تنظیم ارتباط به وسیله CAC (کنترل پذیرش اتصال) ساخته میشود و این اختصاص با استفاده از اطلاعاتی ساخته میشود که «اطلاعات قدیمی» در طول عمر ارتباط است. گاهی اوقات اختصاص بیش از حد منابع و رزرو شدهها وجود دارد اما ظرفیتهای استفاده نشده هدر رفته میمانند.
کنترل جریان حلقه بسته
کنترل جریان حلقه بسته مکانیزمی است که توسط توانایی شبکه برای گزارش دهی ازدحام معلق شبکه به فرستنده شناخته میشود. سپس این اطلاعات میتواند توسط فرستنده در جهات مختلف به کار گرفته شود تا فعالیتهای خود را با شرایط موجود شبکه وفق دهد. کنترل جریان حلقه بسته توسط ABR استفاده میشود. کنترل جریان ارسال که در بالا توضیح داده شد نمونهای از کنترل جریان حلقه بسته میباشد.
منبع: ویکی پدیا
1 دیدگاه