TTL یا Time To Live چیست و چگونه بهینه سازی کنیم؟
TTL مخف کلمه Time to Live میباشد که به معنی مدت زمان زنده ماندن (اعتبار داشتن) یک بسته (packet) در سطح شبکه گفته می شود.
در این مقاله به بررسی TTL یا Time To Live چیست می پردازیم. TTL مخف کلمه Time to Live است. که به معنی مدت زمان زنده ماندن (اعتبار داشتن) یک بسته (Packet) در سطح شبکه گفته می شود. هر بسته (Packet) در طی مسیر، از مبدا تا مقصد از دستگاه هایی عبور می کند که هر کدام از آن ها یک گام (Hop) به حساب می آیند.
TTL یا Time to Live چیست؟
TTL بسته رابطه مستقیمی با تعداد گام های مسیری که بسته از آن رد می شوند، دارد. با عبور از هر Hop یک واحد از TTL بسته کم می شود. TTL افزون بر این که مفهومی در مسیریابی شبکه دارد، در حوزه هایی مانند DNS Caching و CDN Caching نیز کاربرد بسیاری دارد.
یکی از دلایل استفاده از این پارامتر در بسته های اینترنتی، جلوگیری از ارسال نامحدود و پی در پی بسته ها بین مسیریاب ها و تجهیزات شبکه است. TTL به نوعی تاریخ انقضا بسته محسوب می شود و از سوی دیگر این قابلیت را به ارسال کننده می دهد که از تعداد گام ها در طول مسیر آگاه گردد.
کاربرد TTL در شبکه
بر اساس پروتکل IP یا (Internet Protocol)، پارامتر TTL یک فیلد هشت بیتی در هدر بسته های IPv4 است. حداکثر مقدار TTL می تواند مقداری برابر با 255 باشد. اما معمولا مقدار پیش فرض و پیشنهادی آن 64 است.
TTL به وسیله فرستنده در ساختار بسته تعریف شده و پس از گذشت از هر دستگاه، یک واحد از مقدار آن کم می شود. این کم شدن مقدار در هر گام، قبل از عبور بسته از آن گام انجام می گردد. پس اگر در گامی به جز مقصد، دستگاه پس از دریافت بسته، یک واحد از مقدارTTL آن کم کند و این مقدار صفر شود، بسته دور انداخته شده و به مقصد نخواهد رسید. در این شرایط گامی که بسته را دور انداخته، یک پیغام خطا با استفاده از پروتکل ICMP به فرستنده بسته ارسال می کند.
کاربرد TTL در DNS
همانطور که بیان شد، TTL علاوه بر مسیریابی شبکه، در مکانیزم هایی مانند DNS Caching و CDN Caching نیز کاربرد دارد. هر رکورد DNS دارای یک مقدار TTL است که مشخص می کند یک سرور Resolver چه مدت زمان می تواند آن رکورد DNS را در Cache خود ذخیره نماید.
با Cache رکوردها در سرویس DNS، سرعت ترجمه نام دامنه و در نتیجه بارگذاری صفحات وب سایت ها سریع تر می شود. چرا که در این حالت، پاسخ گویی سرور DNS محلی که رکورد DNS درخواستی در آن Cache شده است، به مراتب سریع تر از ارسال و دریافت پاسخ از DNS سرور های بالادستی در سطح اینترنت است.
از طرفی دیگر، نوعی تقسیم بار در سرورهای سطح شبکه اینترنت رخ داده که به جای ارسال درخواست همه کاربران به چند سرور، درخواست ها بین سرورها تقسیم می شوند.
حال فکر کنید تغییری در یک رکورد DNS رخ دهد. در این حالت قابلیت Cache در سرویس DNS کمی دارای اشکال است. چرا که رکورد مربوط به یک وب سایت در سطح سرورهای DNS جهانی تغییر پیدا کرده و بروزرسانی می شود. اما سرورهای DNS محلی و سطح پایین هم چنان رکورد قبلی را در حافظه خود موجود دارند. در این حالت پاسخی که به کاربر برای ترجمه یک نام دامنه به یک آدرس IP بازگردانده می شود، اشتباه است.
در این شرایط TTL به کمک سرویس DNS می رود و با تعیین تاریخ انقضا و مدت زمان اعتبار هر رکورد DNS در حافظه Cache، برای Resolver مشخص می کند. که حداکثر تا چه مدتی می تواند از یک رکورد Cache شده، استفاده کرده و پس از اتمام این مدت زمان، باید اطلاعات Cache خود را با سرورهای بالادستی بروز کند.
اهمیت چرخه بروزرسانی حافظه Cache
چرخه بروزرسانی حافظه Cache سرورهای DNS بسیار اهمیت دارد. تصور کنید TTL رکوردهای DNS دامنه شما یک روز تعیین شده باشد. این امر به این معناست که اگر شما در همین لحظه تغییراتی در رکوردهای DNS وب سایت خود اعمال کنید، دست کم یک روز زمان می برد تا سرورهای DNS بالادستی و به شکل کامل سرورهای DNS در سطح اینترنت، رکورد سایت شما را آپدیت کنند.
در نتیجه طولانی بودن زمان TTL یک رکورد در Cache سرور DNS امکان دارد تغییرات شما در رکوردهای DNS وب سایت تان را با مشکل روبه رو کند. پس طولانی شدن مقدار TTL امکان دارد مزایای استفاده از Cache در سرویس DNS را تحت تاثیر قرار بدهد.
کاربرد TTL در CDN
کاربرد دیگر TTL در حافظه Cache سرورهای لبه CDN هاست. شبکه توزیع محتوا یا CDN، با استفاده از TTL مشخص می کند که هر محتوای ذخیره شده در حافظه Cache باید تا چه مدت زمانی به وسیله یک سرور لبه ذخیره و منتشر گردد.
همچنین مدت زمان نیاز به ارجاع به سرور اصلی میزبان سایت و بروزرسانی تغییرات محتوا را نیز تعیین می کند. اگر این بازه زمانی به درستی تنظیم گردد، CDN ها توانایی آن را دارند بدون نیاز به ارجاع پی درپی به سرورهای اصلی میزبان سایت، محتوای بروز را به کاربران ارائه دهند. این امر سبب افزایش سرعت در تحویل محتوا به کاربران نهایی و افزایش سرعت وب سایت می شود.
کاربردهای دیگر TTL
TTL در CDN Caching و DNS Caching هم استفاده می شود. در DNS برای هر رکورد، TTL تعریف میگردد تا مدت زمان کش بودن اطلاعات مربوط به دامنه و آی پی آدرس مشخص می شود. با کش شدن این اطلاعات، بار کمتری به سرور DNS وارد میگردد و زمان لود صفحات کاهش پیدا می کند.
TTL در شبکه توزیع محتوا یا CDN هم کاربرد دارد و مدت زمانی لازم برای مراجعه به سرور هاست و آپدیت محتوا را مشخص می کند. نتیجه آن افزایش سرعت وب سایت و افزایش سرعت ارائه محتوا به کاربر است.
TTL در پینگ به چه معناست؟
دستورات رایج شبکه، Ping و Traceroute هر دو از TTL استفاده می کنند. Ping مخفف عبارت Packet Internet Groper و ابزاری برای عیب یابی اتصالات شبکه است.
معنای TTL در ping چیست؟ پینگ مستقیما برای TTL یا Hop Limit استفاده نمی شود. اما خروجی این دستور، TTL یا Hop Limit بسته آی پی ورودی را که برای پیام های ICMP Echo Response دریافت می شود، نشان می دهد.
تغییر TTL در سیستم عامل های لینوکس و ویندوز
برای کاهش یا افزایش TTL در سربرگ IP packet روش های متفاوتی هست. که به نوع سیستم عامل بستگی دارد. که در ادامه به تغییر TTL در لینوکس و ویندوز می پردازیم.
تغییر TTL در لینوکس
برای تغییر TTL در IPv4 در لینوکس از دستور زیر استفاده نمایید:
sysctl -w net.ipv4.ip_default_ttl=128
در این دستور مقدار TTL را 128 تعریف می کنیم. این تغییر موقتی بوده و تا مدتی ریبوت بعدی اعمال می شود. اگر بخواهید مقدار TTL به صورت دائم و ثابت تغییر پیدا کند، از روش های زیر استفاده کنید:
- ادیت فایل/etc/sysctl.conf
- ایجاد فایل جدید با پسوند .conf در دایرکتوری /etc/sysctl.d/
- ادیت فایل موجود در دایرکتوری/etc/sysctl.d/
هر مسیری که انتخاب مینمایید دستور زیر را به فایل اضافه و ذخیره نموده و خارج شوید:
net.ipv4.ip_default_ttl = 128
سپس سیستم را ریبوت کنید. نحوه تغییر TTL در IPv6 در لینوکس شبیه IPv4 میباشد ولی باید IPv4 را به IPv6 تغییر دهید.
تغییر TTL در ویندوز
شیوه تغییر TTL در IPv4 در ویندوز به شکل زیر است. برای نمایش مقدار کنونی TTL در command prompt دستور زیر را تایپ نمایید:
1 2 3 4 5 |
C:\WINDOWS\system32>netsh int ipv4 show global Querying active state General Global Parameters Default Hop Limit: 128 hops |
با دستور زیر بلافاصله و به صورت دایم مقدار TTL تغییر می کند:
netsh int ipv4 set global defaultcurhoplimit=64
تغییر TTL در IPv6 در ویندوز شبیه IPv4 است، ولی باید IPv4 را به IPv6 تغییر بدهید.
شیوه افزایش و کاهش TTL در DNS
در دامین و DNS مشخص کننده مدت زمان کش دامنه و آی پی سرور در سیستم کلاینت است. مقدار TTL در DNS را می توان کم و زیاد کرد. تغییر TTL کاملا بستگی به کاربرد و تغییراتی دارد که در آدرس، وب سرور و رکوردها اعمال می شود.
cPanel یک گزینه برای این کار خواهد بود. مقدار پیش فرض در سی پنل 14400 و معادل 4 ساعت است.
نحوه افزایش و کاهش TTL در DNS به شکل زیر است.
- وارد کنترل پنل در cPanel شوید.
- در قسمت Domains گزینه Zone Editor را کلیک کنید.
- از لیست نمایش داده شده گزینه Manage مربوط به دامنه موردنظرتان را انتخاب کنید.
- در لیست رکوردهای دامنه روی گزینه Edit بزنید.
- مقدار TTL را بر حسب ثانیه تغییر داده و Save کنید.