Latency چیست؟
تاخیر یا latency در شبکه، مدت زمانی است که طول میکشد تا یک درخواست از مبدا به مقصد ارسال شود. یکی از راههای اندازهگیری latency، استفاده از round trip time است. RTT (round trip time)، مدت زمانی است که یک درخواست از مبدا برای مقصد ارسال شده و سپس جواب درخواست به مبدا بازمیگردد. با توجه به تعریف latency، هرچه مقدار این پارامتر به صفر نزدیکتر باشد، عملکرد شبکه بهتر ارزیابی میشود.
تفاوت latency با bandwidth و throughput
مفهوم latency را نباید با مفاهیم bandwidth و throughput اشتباه گرفت. همانطور که گفته شد، latency به معنی تاخیری است که هنگام ارسال درخواست و دریافت پاسخ اتفاق میافتد و از جنس زمان است. در حالی که، bandwidth، نشان میدهد که هر لینک، چه میزان ترافیک را میتواند از خود عبور دهد. از سوی دیگر، throughput میزان دادهای است که در واحد ثانیه میتواند ارسال شود. زیاد بودن bandwidth به این معنی است که ترافیک زیادی میتواند از سمت مبدا به مقصد ارسال شود ولی دربارهی سرعت ارسال این ترافیک، اطلاعاتی نمیدهد. پس زیاد بودن bandwidth لزومن به معنی کم بودن latency نیست. اگر در یک شبکه، bandwidth افزایش پیدا کند و latency کم شود، سبب میشود میزان اطلاعاتی که هر لحظه میتواند انتقال پیدا کند، افزایش پیدا کند و این یعنی throughput افزایش یافته است.
دلایل بروز و راههای کاهش latency
عوامل مختلفی میتوانند سبب ایجاد تاخیر زیاد در شبکه شوند. یکی از این عوامل فاصله است. زمانی که یک کاربر برای یک سایت درخواستی را ارسال میکند، بسته به فاصلهی کاربر تا سرور نگهدارندهی وبسایت، مدتزمان متفاوتی طول میکشد که کاربر به محتوای خواسته شده دسترسی پیدا کند.
یکی از راهحلهایی که برای رفع این مشکل وجود دارد، استفاده از سرویس CDN است. به کمک سرویس CDN، به جای آنکه کاربر هربار منتظر پاسخ مستقیم سرور باشد، به محتوای کش (cache) شده دسترسی خواهد داشت. هر محتوای کش شده، در چندین نقطهی متفاوت نگهداری میشود و زمانی که کاربر برای دسترسی به آنها درخواست میدهد، محتوا از نزدیکترین نقطه برای کاربر ارسال میشود و به این شکل زمان پاسخ، کمتر از حالت قبل میشود. یکی دیگر از راهحلهای مشابه، کش کردن بخشی از محتوا در مرورگر است تا درخواستهای ارسال شده به سمت سرور کمتر شود و زمان latency کاهش پیدا کند.
یکی دیگر از عوامل ایجاد latency در شبکه، مربوط به تجهیزات شبکه است که وظیفهی انتقال بستهها را بر عهده دارند. این تاخیر در دو مرحله ممکن است ایجاد شود. مرحلهی اول، زمانی است که یک بسته، در صف ورودی یک روتر قرار میگیرد.
در حالتی که شبکه خالی از ترافیک باشد، هر بسته که به درگاه یک روتر میرسد، به سرعت وارد آن شده و پس از بررسی مبدا و مقصد بسته، اگر مسیری برای رسیدن بسته به مقصد در روتر وجود داشته باشد، بسته به مقصد مورد نظر ارسال میشود. اما در حالت واقعی، معمولن زمانی که یک بسته به یک روتر میرسد، بستههای دیگری در حال بررسی هستند و این سبب میشود تا بستهی رسیده، مدت زمانی را در صف ورودی روتر سپری کند. این زمان باعث افزایش latency میشود.
مرحلهی دوم هم زمانی است که طول میکشد تا روتر بسته را بررسی و سپس ارسال کند. پروتکل TCP، به کمک فرآیند congestion control، پارامتری برای میزان شلوغ بودن شبکه در نظر میگیرد و براساس آن، تعداد بستههای ارسالی را تعیین میکند. اگر زمانی که در شبکه ترافیک کمتری وجود دارد، بسته ارسال شود، زمان کمتری برای ورود به روتر و بررسی آن سپری خواهد شد.
با توجه به توصیفهای بالا، هرچه فاصله تا سرور و تجهیزاتی که بسته از آنها عبور میکند، بیشتر باشد، احتمال افزایش زمان تاخیر نیز بیشتر میشود. بنابراین بهترین راه برای کاهش تاخیر، آن است که در زمان طراحی شبکه، تا حد امکان از قرار دادن لینکهای اضافی و تجهیزات غیرضروری پرهیز شود.