برنامه ریز شبکه
یک برنامه ریز شبکه ، یا برنامه ریز بسته ها ، یا نظم دهنده صف بندی ، qdisc یا الگوریتم صف بندی ، یک تصمیم گیرنده برای گره در شبکه ارتباطی سوئیچینگ بسته ها است که توالی بسته های شبکه را در صف های انتقال و دریافت، در کنترل کننده رابط شبکه مدیریت می کند. در حال حاضر چندین برنامه ریز شبکه برای سیستم عامل های مختلف موجود است که بسیاری از الگوریتم های برنامه ریزی شبکه موجود را اجرا می کنند .
منطق برنامه ریز شبکه تصمیم می گیرد که کدام بسته شبکه را در مرحله بعد ارسال کند. برنامه ریز شبکه با یک سیستم نوبت دهی در ارتباط بوده و بسته های شبکه را به طور موقت ذخیره می کند تا زمانی که انتقال یابند. سیستم ها ممکن است یک صف یا چند صف داشته باشند که در هر موقعیت هر کدام می توانند بسته های یک جریانه ، طبقه بندی یا اولویت را در خود داشته باشند.
در بعضی موارد ممکن است نتوان برای تمام انتقال ها در محدوده محدودیت های سیستم برنامه ریزی کرد. در این موارد ، مسئولیت برنامه ریز شبکه ، تصمیم گیری برای انتقال یا عدم انتقال بخش های ترافیک شبکه (بسته ها) است
اصطلاحات و مسئولیت ها[ویرایش]
یک برنامه ریز شبکه ممکن است مسئولیت پیاده سازی بخش های به خصوصی از راه حل های مشکلات کنترل ترافیک شبکه را داشته باشد. کنترل ترافیک شبکه یک اصطلاح چتر گونه (کلی) برای تمام اقدامات انجام شده با هدف کاهش ازدحام ، تأخیر و از بین رفتن بسته است. به طور خاص ، مدیریت فعال صف (AQM) عبارت است از حذف انتخابی بسته های موجود در صف انتظار برای رسیدن به هدف بزرگتر جلوگیری از ازدحام بیش از حد شبکه. برنامه ریز شیکه بایستی انتخاب کند کدام یک از بسته ها از قلم انداخته شوند. شکل دادن به ترافیک با به تأخیر انداختن بسته های انتقالی هنگامی که در صف انتظار قرار می گیرند ، نیاز به پهنای باند برای جریان های ترافیکی را هموار می کند. برنامه ریز زمان بندی بسته های ارسالی را تعیین می کند. کیفیت خدمات رسانی (QoS) اولویت بندی ترافیک براساس کلاس خدمات ( سرویس های متفاوت ) یا اتصال اختصاصی ( خدمات مجتمع ) است.
الگوریتم ها[ویرایش]
در طول زمان تعداد زیادی از قواعد صف بندی شبکه توسعه یافته اند ، که هر یک ، یک تغییر در ترتیب یا از قلم انداختن خاصی از بسته های شبکه را در بافرهای مختلف انتقال یا دریافت ارائه می دهد. [۱] [۲] قواعد صف بندی معمولاً به عنوان تلاشی برای جبران شرایط مختلف شبکه مانند کاهش تأخیر برای کلاسهای خاصی از بسته های شبکه استفاده می شوند و معمولاً به عنوان بخشی از اقدامات QoS استفاده می شوند. [۳] [۴] [۵]
نمونه هایی از الگوریتم های مناسب برای مدیریت ترافیک شبکه عبارتند از:
- AVQ (adaptive virtual queue)[۶]
- CBQ (class-based queueing) discipline
- CHOKe (CHOose and Keep for responsive flows, CHOose and Kill for unresponsive flows) is a variant of RED
- CoDel (controlled delay) and fair/flow queue CoDel
- CAKE (Common Applications Kept Enhanced), implemented in linux kernel[۷]
- Credit-based fair queuing
- DRR (deficit round robin) and DWRR, implementation e.g. written by Patrick McHardy for the Linux kernel[۸] and published under the GNU General Public License.
- FaQ (FavourQueue)[۹]
- FQ-PIE (Flow Queue Proportional Integral controller Enhanced)
- GCRA (generic cell rate algorithm)
- HFF (heavy-hitter filter)[۱۰]
- HFSC (hierarchical fair-service curve)
- HTB (hierarchical token bucket)[۱۱]
- QFQ (quick fair queueing)[۱۲]
- FQ (fair queuing) and WFQ (weighted fair queuing)
- FIFO (first in, first out)
- pkt_sched: fq: fair queue packet scheduler [۱۳]
- NETEM network emulator[۱۴]
- PIE (proportional integral controller enhanced)[۱۵]
- RED (random early detection)
- RR (round-robin) and WRR (weighted round robin)
- SFB (stochastic fair blue) as well as RSFB (resilient SFB)
- SFQ (stochastic fairness queuing)[۱۶]
- TBF (token bucket filter)[۱۷]
- TEQL (trivial link equalizer)
چندین مورد فوق به عنوان ماژول های هسته لینوکس پیاده سازی شده اند [۱۸] و به صورت رایگان در دسترس هستند .
بافر[ویرایش]
Bufferbloat پدیده ای در شبکه های بسته-سوئیچ شده است که در آن بافر کردن اضافی بسته ها باعث تأخیر زیاد و تغییر تاخیر بسته می شود . Bufferbloat را می توان توسط یک برنامه ریز شبکه که بسته ها را با استفاده از استراتژی دور می ریزد تا از بافر کردن بیش از حد و غیر ضروری انباشته ها (backlog) جلو گیری شود ، برطرف کرد. به عنوان مثال می توان CoDel و Random early detection را نام برد .
پیاده سازی ها[ویرایش]
هسته لینوکس[ویرایش]
برنامه ریز بسته در هسته لینوکس بخشی جدایی ناپذیر از پشته (stack) شبکه هسته لینوکس است و با کار بر روی لایه 2 از مدل OSI و مدیریت فریم های اترنت ، انتقال و دریافت بافرهای حلقه ای همه NIC ها را مدیریت می کند.
برنامه ریز بسته با استفاده از ابزاری موسوم به tc
(مخفف "کنترل ترافیک") پیکربندی شده است. به عنوان قواعد صف بندی پیش فرض ، برنامه ریز بسته از پیاده سازی FIFO به نام pfifo_fast استفاده می کند، [۱۹] هچنین systemd پس از نسخه 217 ، قواعد صف بندی پیش فرض را به fq_codel تغییر می دهد. [۲۰]
برنامه های ifconfig
و ip
مدیران سیستم را قادر می سازند تا اندازه بافر txqueuelen
و rxqueuelen
را برای هر دستگاه به طور جداگانه از نظر تعداد فریم اترنت بدون در نظر گرفتن اندازه آنها پیکربندی کنند. پشته (stack) شبکه هسته لینوکس حاوی چندین بافر دیگر است که توسط برنامه ریز شبکه مدیریت نمی شوند. [persian-alpha ۱]
فیلترهای بسته برکلی را می توان به طبقه بندی کننده برنامه ریز بسته ها متصل کرد. عملکرد eBPF که توسط نسخه 4.1 هسته لینوکس در سال 2015 ارائه شده است ، طبقه بندی کننده های قابل برنامه ریزی BPF کلاسیک را به eBPF گسترش می دهد. [۲۱] اینها را می توان با استفاده از بک اندLLVM eBPF کامپایل کرد و با استفاده از ابزار tc
در هسته در حال بارگذاری بارگذاری کرد. [۲۲]
BSD و OpenBSD[ویرایش]
ALTQ پیاده سازی یک برنامه ریز شبکه برای BSD ها است . از زمانی که OpenBSD نسخه 5.5 ALTQ با برنامه ریز HFSC جایگزین شد.
همچنین ببینید[ویرایش]
- ازدحام شبکه
- صف (نوع داده انتزاعی)
- نظریه صف
- مالتی پلکسینگ تقسیم زمانی آماری
- شکل دهی ترافیک
- طبقه بندی ترافیک
- نوع خدمات
یادداشت[ویرایش]
منابع[ویرایش]
- ↑ The overall size of all buffers has been the point of critique by the Bufferbloat project, which provided a partial solution with CoDel that has been primarily tested in OpenWrt.
- ↑ "Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs)". tldp.org. Retrieved November 24, 2013.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Saravanan Radhakrishnan (September 30, 1999). "QoS Support in Linux: Queuing Disciplines". qos.ittc.ku.edu. Retrieved March 18, 2014.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Traffic Control HOWTO: Components of Linux Traffic Control". tldp.org. Retrieved November 24, 2013.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Traffic Control HOWTO: Traditional Elements of Traffic Control". tldp.org. Retrieved November 24, 2013.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Queuing Disciplines: Order of Packet Transmission and Dropping" (PDF). tau.ac.il. October 25, 2006. Retrieved March 18, 2014.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4477&rep=rep1&type=pdf
- ↑ "Let them run CAKE". LWN.net.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "DRR Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "FavorQueue: a Parameterless Active Queue Management to Improve TCP Traffic Performance" (PDF).صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Heavy-Hitter Filter qdisc". kernel.org.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "HTB Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "QFQ Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Fair Queue packet scheduler committed to Linux kernel 3.12".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Network emulator Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Proportional Integral controller Enhanced (PIE)". kernel.org.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "SFQ Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "TBF Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "The Linux kernel network scheduler". kernel.org. 2012-12-26. Retrieved 2013-09-07.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Linux Advanced Routing and Traffic Control HOWTO, Section 9.2.1. pfifo_fast". lartc.org. 2012-05-19. Retrieved 2014-09-19.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "systemd System and Service Manager: NEWS file". freedesktop.org. 2015-05-22. Retrieved 2015-06-09.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Linux kernel 4.1, Section 11. Networking". kernelnewbies.org. 2015-06-21.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "BPF and XDP Reference Guide". Cilium documentation web site.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
This article "برنامه ریز شبکه" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:برنامه ریز شبکه. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.