TCP و مکانیزم ارسال مجدد درآن

ارسال مجدد سگمنت ها، ابزار پایه TCP برای سرویس انتقال مطمئن داده ها است. اگر یک سگمنت گم شود، بایستی از نو ارسال شود؛ اما TCP چگونه بفهمد یک سگمنت گم شده است؟

TCP تایمری دارد به نام "زمان سنج ارسال مجدد" (Retransmission Timer) این تایمر با عددی به نام RTO مقداردهی می شود (Retransmission Time Out) اگر ACK در مدت زمان RTO دریافت شد، تایمر پاک شده(Clear) در غیر این صورت زمان سنج، منقضی (Expired) شده است. در صورت انقضا تایمر، سگمنت، مجددا ارسال می شود.

مقداردهی بهینه RTO از نقطه نظر کارآیی شبکه، از اهمیت درخور توجهی برخوردار است. اولا واضح است که RTO باید از مدت زمان رفت و برگشت (RTT: Round Trip Time) بیشتر باشد. اما عوامل زیادی در RTT تاثیر دارند؛ عواملی نظیر تاخیر انتقال (Transmission Delay)، تاخیر انتشار لینک (Propagation Delay)، زمان پردازش سرآیند، زمان تولید ACK و …..

با این استدلال، در محیط های واقعی،RTT یک مقدار ایستا نیست و مقدار آن در طول زمان تغییر می کند. این تغییر، بازتابی از شرایطی است که به نمونه هایی از آن اشاره شد. اگر RTO را بامقداری بیش از مقدار لازم مقداردهی کنیم، نتیجه آن تاخیرهای طولانی، خواهد بود. خصوصا در حالتی که گم شدگی بسته ها (packet loss) رایج باشد. علاوه بر این، اگر RTO را با مقادیری کم تر از مقدار لازم مقداردهی کنیم، باعث ارسال مجددهای متعدد می شود (Retransmission) که به تبع از آن، منابع شبکه نظیر پهنای باند و زمان پردازش (processing time) را به هدر میدهد.

برای حل این معضل،TCP از یک مقدار RTT تخمینی به نام EstimatedRTT برای هریک از اتصالاتش استفاده می کند.. این مقدار از روی یک مقدار دیگر به نام SampleRTT مربوط به اتصال به دست می آید. SampleRTT عبارت است از فاصله زمانی میان زمان ارسال یک سگمنت و زمان دریافت تاییدیه آن سگمنت.

همانگونه که در شکل ۸ مشاهده می کنید، SampleRTT مقادیری متغیر دارد که ناشی از ماهیت شبکه، تاخیر صف بندی ها و …. آن است. از رابطه زیر برای تعدیل مقدار EstimatedRTT استفاده می شود:

image002

در رابطه بالا clip_image002 مقدار ۰٫۱۲۵ دارد. این مقدار کوچک باعث می شود که مقادیر ضربه ای (Spike) در نمونه های اندازه گیری شده باعث انحراف RTT نشود

image

شکل ۸نمونه های RTT و تخمین های آن

پس از اینکه RTT به دست آمد، مقدار RTO از رابطه زیر تخمین زده می شود

clip_image002[6]

که در این رابطه مقدار deviation از رابطه زیر محاسبه می شود:

clip_image004

لم: فرض کنید A و B اعداد حقیقی و ۰ < a<1یک عدد حقیقی مثبت ، باشند. نشان دهید دنباله{At} با رابطه At+1=(1-a)*At+ a*B همگرا است؟

برای اثبات فرض کنید Aو B اعداد حقیقی و A < B باشد (A را همان clip_image002[8] بگیرید) در این صورت (۱-a)*A < (1- a)*B است. نتیجه این عبارت آن است که (۱-a)*A + a*B < B است.

این رابطه نشان میدهد که با فرض ثابت بودن B دنباله {At} رابطه بازگشتی At+1=(1-a)*At+ a*B هیچگاه از B تجاوز نخواهد کرد.

علاوه بر این چون A < B است لذا a*A < a*B است با افزودن A به طرفین این ارتباط داریم:

a*A + A < a*B + A

A < a*B + A – a*A=(1-a)*A + a*B

A < (1-a)*A + a*B

این رابطه نشان میدهد که دنباله{At} رابطه بازگشتی At+1=(1-a)*At+ a*B هیچگاه از A کمتر نخواهد شد. بنابراین با فرض اینکه B یک مقدار ثابت باشد، روابط بالا نشان میدهند که دنباله {At} یک دنباله صعودی بوده و حد آن B است.

نظیر همین استدلال در حالتی کهA>B باشد نیز قابل انجام است.clip_image004[7]

لطفا نظر خود را بنویسید

یک دیدگاه