علت کاهش سرعت اینترنت و چگونگی رفع آن
در سال ۲۰۱۰ یک برنامهنویس کهنهکار کامپیوتر به نام جیم گتیز که کاشف علت کاهش سرعت اینترنت است و در حال حاضر نیز در گوگل مشغول کار است، در خانه مشغول آپلود یک فایل بزرگ به سرور محل کار خود بود. در همین حین فرزندانش به اتاق کار او آمدند و از سرعت پایین اینترنت شکایت داشتند.
تعجبآور این بود که چطور کار آپلود او میتوانست روی سرعت دانلود کودکانش تاثیر داشته باشد، به همین دلیل او شروع به بررسی کرد و نتیجه تحقیقات او منجر به کشف پدیده مخرب و ناشناخته ای به نام bufferbloat شد.
جیم گتیز با بررسی پینگها و سطوح مختلفی از بارگذاری اتصال اینترنت به این نتیجه رسید که زمان بازگشت پاسخ درخواست از اینترنت اغلب بین چهار تا ده برابر از آن چه او انتظار داشت طولانیتر میشد. و این گونه بود که او پدیدهای به نام bufferbloat را معرفی کرد. نتیجه گیری او این بود که بستههای داده ضروری در بافرهایی گیر افتاده بودند که بیش از حد بزرگ شده بود.
از آن زمان گتیز مشاهدات خود را گردآوری و منتشر کرد. محققانی از شرکتهایی مثل سیسکو و گوگل، و همچنین گروههای تعیین استاندارد مثل IETF و محققان ارشد دانشگاهی شروع به تحقیق، آزمایش و نوشتن در مورد bufferbloat کردند. آنچه امروز مشخص است این است که پدیده bufferbloat واقعیت دارد، اما هنوز به طور کامل مشخص نشده است که میزان تاثیرwhy آن روی گردش طبیعی ترافیک اینترنت تا چه اندازه است.
چه کسی بیشترین تاثیر را از کاهش سرعت اینترنت خواهد دید؟
هر کسی که مشغول وبگردی یا استفاده از موتورهای جستجو باشد، درگیر خواهد شد. همچنین کسانی که از اپلیکیشنهای زنده نظیر برنامه های صوتی و تصویری استفاده میکنند نیز تحت تاثیر قرار خواهند گرفت. یک مثال در این مورد کارمندانی هستند که در خانه، جاده، هتل یا هات اسپاتهای وایفای کارهای خود را انجام میدهند. تحقیقات نشان میدهد که هتل ها و مراکز ارائه خدمات وایفای بیشترین تاثیر منفی را از پدیده bufferbloat دریافت میکنند.
کدام نوع از ترافیکها بیشترین تاثیر را از این پدیده خواهند گرفت؟
جریان ترافیک روی لینکهایی که مصرف پهنای باند زیادی دارند درگیر خواهند شد. کاربردهایی مثل VoIP ،DNS و ARP که از بستههای داده کوچک استفاده میکنند نیز میتوانند دچار این مشکل شوند. تاثیر روی VoIP به صورت افزایش تاخیر و تغییر صدا ظاهر میشود. زمان پاسخ تبادلات DNS نیز ممکن است بین دو تا هشت برابر بیشتر از حالت عادی به طول بیانجامد.
Bufferbloat دقیقا چیست؟
به منظور کم کردن تعداد بستههای گم شده داده در اینترنت، اپراتورهای شبکه، توسعه دهندگان و مهندسان برای چندین بار متوالی اندازه بافرهای شبکه را افزایش دادهاند. این کار با وجودی که زمان پاسخگویی را افزایش میدهد اما تاثیر کمی روی عملکرد کلی دارد. به تبع آن، بستههای کوچک ضروری مثل آنهایی که در VoIP ،DNS و TCP استفاده میشود ممکن است در بافرهای بستههای بزرگتر مربوط به انتقال فایل و یا سایر نقل و انتقالات دستهای دیگر مثل بیت ریتهای تطبیقی ویدیو گرفتار شوند.
یک مشکل مفهومی مرتبط با مدیریت بافر، آزمایشات، برگههای سفید و حتی راهنماهایی که اغلب بافرها را به عنوان بخش کوچکی از حافظه معرفی میکنند وجود دارد. خیلی از اوقات بافرها میتوانند صدها یا حتی هزاران بسته را در لحظه نگهداری کنند. اینها تنها محدود به دستگاههای شبکه نمیشوند. آنها را میتوان در پروتکل ایستگاههای کاری، درایور کارت شبکه و هر گذرگاهی در مسیر رسیدن به انتهای ایستگاه نیز مشاهده کرد.
صدمات bufferbloat در عملکرد TCP به چه شکل است؟
بخش عمدهای از ترافیک شبکه ما از TCP به عنوان پروتکل نقل و انتقال استفاده میکند. آشنایی با نحوه عملکرد TCP مشخص میکند که چرا bufferbloat مشکل ساز میشود. وقتی یک اتصال TCP برقرار میشود یک ارتباط سه جانبه برقرار میشود که در آن درخواستهای ارسال و دریافت TCP در مورد تبادل پارامترهای خود (از جمله شماره توالیهای اولیه) با یک دیگر گفتگو میکنند.
در ادامه موضوع کاهش سرعت اینترنت اکنون فرض کنید که از یک سرور FTP خواسته شده تا یک فایل حجیم را منتقل کند. TCP معمولا عملیات انتقال را با ارسال چهار سگمنت آغاز میکند و بعد در انتظار تایید تحویل آنها میماند. سیاست معمول به این صورت است که بعد از هر سگمنت دریافت شده یک نشانه دریافت تاییدیه (ACK) نیز ارسال میشود.
بعد از این که هر چهار سگمنت نشانه دریافت را ارسال کردند، گیرنده با ارسال هشت سگمنت نرخ سرعت ارسال را افزایش میدهد و در انتظار دریافت تاییدیه میماند. بعد از تایید شدن این سگمنتها به همین ترتیب نرخ ارسال به ۱۶ و بالاتر افزایش میابد.
این مرحله از تحویل است که از آن به عنوان شروع کند یاد میشود. ایده رفع آن این است که لینک را با بسته ها اشباع کنند. اما در مرحلهای که آستانه شروع کند نام دارد، ارسال کننده به جای دو برابر کردن نرخ سرعت، با اضافه کردن یک سگمنت در هر چرخه نرخ سرعت را به آهستگی افزایش میدهد. در این بین یک مشکل اساسی به وجود میآید که در آن بر اثر سر ریز شدن یک بافر، اتصال با افزایش بار مواجه میشود. در این شرایط یک یا چند بسته از بین خواهد رفت.
وقتی ارسال کننده تشخیص میدهد که این اتفاق رخ داده است معمولا نرخ ارسال را به نصف کاهش میدهد و یک بار دیگر فرآیند شروع کند را از سر میگیرد. سرانجام نرخ TCP با ظرفیت چرخهای که در ابتدا شروع شده بود مطابقت پیدا میکند. این مجموعه ترکیبی از مراحل به عنوان الگوریتم کنترل تراکم TCP شناخته میشود.
این مطلب رو هم بخونید: روش های عیب یابی مودم ADSL
Bufferbloat چگونه روی این فرآیند تاثیر میگذارد؟
یک اتصال بین یک لینک پر سرعت و یک لینک کم سرعت را در نظر بگیرید. در چنین مواردی است که اهمیت وجود بافر مشخص میشود. برای مثال، فرض کنید ما یک مسیر محلی یک گیگابیت در ثانیه مثل کابل یا مودم DSL در اختیار داریم. حالا تصور کنید این مودم به یک خدمات دهنده اینترنت (ISP) متصل شده است که نرخ دانلود ۱۰ مگابیت در ثانیه و آپلود ۲ مگابیت در ثانیه را فراهم میکند. سرور FTP بافر ارسال شده به اتصال پر سرعت را خیلی سریعتر از نرخ خروج لینک کندتر پر میکند.
حالا اگر این بافر بزرگ باشد دو اتفاق ممکن است رخ دهد: اول، اگر بافر پر شود، آخرین بسته رسیده از بین میرود. به این اتفاق tail drop گفته میشود. نشانه تاییدیه که این از بین رفتن بسته را به ارسال کننده اطلاع میدهد تا زمان رسیدن بسته بعدی ارسال نخواهد شد و در چنین شرایطی عملا این پیام غیر قابل استفاده خواهد بود.
گذر این فرآیند از بین یک بافر بزرگ زمان قابل ملاحظهای را تلف میکند. آزمایشات انجام گرفته روی بیت ریتهای تطبیقی ویدیو نشان میدهد که قبل از این که ایستگاه بتواند سگمنت از بین رفته را دوباره ارسال کند نزدیک به ۲۰۰ سگمنت باید تحویل داده شود. همچنین اگر در زمان انتشار ویدیو چندین رشته جریان در حال عبور باشد، این صف ممکن است از صف ارسال جلو بزند. با وجود بستههای ترمیمی در این صف یک حالت پایدار به وجود میآید. اگر این مقدار به اندازهای نباشد که بتواند بافر را سر ریز کند، هیچ بستهای از بین نمیرود و کنترل تراکم TCP نیز اتفاق نخواهد افتاد.
اما زمان تاخیر برای تمام کاربران این بافر افزایش پیدا خواهد کرد.
مدیریت بافرها برای جلوگیری از کاهش سرعت اینترنت
برای مدتی عقیده بر این بود که باید صف درخواستهای شبکه را مدیریت کرد. برای اولویت دادن به یک ترافیک خاص میتوان بیتهای IP layer diffserv را به گونه ای تنظیم کرد تا به انواع خاصی از ترافیک مثل کنترل شبکه یا VoIP ارجهیت بالاتری داده شود. آنها این کار را با قرار دادن این ترافیکهای اولویتدار در صفهای جداگانه انجام میدادند.
اما انجام این کار از bufferbloat جلوگیری نمیکند. بعضی از صفهایی که ترافیک بدون اولویت در آن قرار دارد همچنان با مشکل بزرگ شدن بیش از حد مواجه هستند. اینها اغلب شامل سگمنتهای TCP خیلی بزرگ هستند. بنابراین ما همچنان با مشکل تاثیر منفی مکانیسم تراکم TCP مواجه هستیم.
در سال ۲۰۱۲، کتی نیکولز و ون جیکوبسن یک تکنیک به نام CoDel یا Controlling Queue Delay را معرفی کردند. این شیوه با ردگیری زمانی که یک بسته در صف قرار دارد این صف را مدیریت میکند و به این ترتیب کاهش سرعت اینترنت از بین خواهد رفت، چرا که مدت زمان اشغال یک صف مسئله بسیار مهمی است.
دو پارامتر فاصله و آستانه از اهمیت بسیار بالایی برخوردار هستند. اگر تاخیر فاصله بین بستهها طولانیتر از مقصد باشد، بستهها به طور تصادفی شروع به از بین رفتن میکنند. توجه داشته باشید که این تکنیک به اندازه صفها و tail-drop وابسته نیست.
نتایج آزمایشات انجام گرفته نشان میدهد که در حالت کلی وضعیت تاخیر در پاسخدهی در این شیوه بهتر از تکنیک RED م(Random Early Discard) رفتار میکند و نتایج کلی به مراتب بهتر است. این موضوع در زمان استفاده از لینکهای بیسیم بیشتر دیده میشود.
توصیه بعدی برای کاهش تاثیر پدیده bufferbloat توسط دیو تات، اریک دومازت، جیم گتیز و چند نفر دیگر مطرح شده است. نام این شیوه fq-codel است و هدف از آن ایجاد یک تاثیر یکنواختتر در جریانهای عبوری از طریق صفها است. حتی کتی نیکولز و ون جیکوبسن نیز تاثیرات مثبت استفاده از fq-codel را تایید کردهاند.
این شیوه به طور پیش فرض صفها را به زیر شاخههای ۱۰۲۴ تقسیم میکند. سپس به طور تصادفی به هر جریان جدید یک صف جداگانه اختصاص میدهد. داخل هر زیر شاخه از Codel برای کمک به کنترل تراکم TCP استفاده میشود.
Codel و fq-codel چه کاری انجام میدهند؟
اول، این دو تکنیک وظیفه نظارت بر انجام صحیح عملیات کنترل تراکم TCP را بر عهده دارند. دوم، با ترکیب بستههای موجود در صفها، باعث میشوند تا بستههای کوچک ضروری مثل پاسخهای DNS و نشانههای TCP در دام صفهای طولانی گرفتار نشوند. به عبارت دیگر، با استفاده از این شیوه نحوه برخورد با بستههای بزرگ و کوچک با تساوی بیشتری انجام خواهد شد. تحقیقات زیادی نشان داده است که مزایای استفاده از fq-codel به مراتب بیشتر است. fq-codel تنها در آخرین توزیعهای لینوکس به کار گرفته شده است.
آینده به چه سمتی پیش خواهد رفت؟
متاسفانه آگاهی از وجود پدیده bufferbloat هنوز فراگیر نشده و کاهش سرعت اینترنت یا Decrease internet speed نیز هنوز برای بسیاری از افراد قابل درک نیست. ما به اپراتورهای شبکه و کاربران بیشتری نیاز داریم تا از آزمونهای در دسترسی مثل ICSI Netylyzr و www.DSLReports/speedtest/ استفاده کنند. بعد از انجام این آزمایشات در صورتی که به میزان قابل ملاحظهای از مشکلات bufferbloat برخورد کردید، میتوانید از چندین روش جایگزین استفاده کنید:
۱- دسترسی سختافزار خود را به دستگاههایی که از یک توزیع جدید لینوکس مجهز به fq-codel استفاده میکنند تغییر دهید. اطمینان حاصل کنید که این قابلیت فعال باشد.
۲- یک دستگاه بین کامپیوتر و روتری که قابلیت fq-codel در آن فعال است قرار دهید. این کار باعث محدود شدن استفاده از بافرهای حجیم روتر میشود.
۳- اگر تمام موارد مطرح شده با شکست مواجه شد، روی لینکهای آپلود و دانلود محدودیت نرخ تبادل به میزان کمی کمتر از نرخ ظرفیت آنها اعمال کنید. این کار کمک میکند تا از تشکیل بافرهای حجیم جلوگیری شود. انجام این کار اگرچه ممکن است در بارهای کاری سبک به میزان اندکی توان عملیاتی را کاهش دهد، اما به شکل قابل ملاحظهای وضعیت جریانهای ضروری مثل تاییدیههای DNS ، ARP و TCP را بهبود میبخشد.
در حال حاضر چندین فروشنده تجهیزات شبکه مشتاق برای کاستن از اثرات مخرب bufferbloat وجود دارد. سیسکو طی یک همکاری مشترک با کامکست، یک تکنیک مدیریت صف به نام PIEو(Proportional Integral controller Enhanced) را توسعه داده است.
Time-Warner Cable نیز گامهای مثبتی را در جهت کم کردن اثرات bufferbloat برداشته است. Actiontec که یک تامین کننده عمده برای شاهراههای محلی Verizon و Centurylink است، تحقیقاتی زیادی در مورد bufferbloat کرده است. آنها مدعی هستند پیشرفتهای زیادی در راه کم کردن تاثیرات این پدیده داشتهاند.
اما برخی از فروشندگان دیگر نیز هستند که به نظر میرسد اطلاع چندانی از bufferbloat ندارند. این وضعیتی است که باید هر چه زودتر تغییر کند. بسیار حیاتی است که یک درک همه جانبه از این موضوع شکل گیرد که نتیجه کلی به ویژه در فعالیتهایی مثل وبگردی، مهمترین عامل ضرر و زیان نیست. بلکه اصلیترین عامل تاخیر در تبادل است.
پاسخهای دریافتی از فرامین HTTP GET اغلب به شکل حجم انبوهی از انتقالات فایلهای کوچک انجام میشود که در آن فرآیند شروع کند به ندرت اتفاق میافتد. بنابراین تاخیر در برقراری و خاتمه session ها به یک تاثیر مخرب قابل توجه در مدت برقراری این sessionها تبدیل و باعث کاهش سرعت اینترنت میشود.
مطلبی دیگر از این انتشارات
مفهوم Hardening چیست؟
مطلبی دیگر از این انتشارات
هماهنگ و خودکار؛ ابزارهای اتوماسیون و ارکستراسیون شبکه
مطلبی دیگر از این انتشارات
مشکلات استفاده از روتر به جای سامانه اکانتینگ اینترنت