Кіріспе

Шектелген ресурстарды бөлісуге арналған жоспарлау алгоритмі. Адилет кезек – кейбір процестерді және желілік жоспарлаушыларды қолданатын жоспарлау алгоритмдерінің тобы. Бұл алгоритм шектеулі ресурс бөлісілген кезде әділеттілікті қамтамасыз ету үшін жасалған, мысалы, үлкен пакеттері бар ағындардың немесе кішкентай тапсырмалар жасайтын процестердің басқа ағындарға немесе процестерге қарағанда артық өткізу қабілетін немесе процессор уақытын жұмсауына жол бермейді. Адилет кезек кейбір жетілдірілген желілік коммутаторлар мен маршрутизаторларда іске асырылады.

Тарих

Әділ кезек терминін 1985 жылы Джон Негл жергілікті желі мен интернет арасындағы шлюзде дөңгелек тізбекпен кезекті ұйымдастыруды ұсынғанда, жаман мінез-құлық танытқан хосттардың желідегі кедергісін азайту мақсатымен қолданған. Байттық салмақталған нұсқасын 1989 жылы Алан Демерс, Шринивасан Кешав және Скотт Шенкер ұсынды, ол бұрынғы Нагл әділ кезек алгоритміне негізделген. Байттық салмақталған әділ кезек алгоритмі әр пакет үшін теориялық шығу күнін есептеу арқылы биттік мультиплекстеуді имитациялауға бағытталған. Бұл ұғым одан әрі салмақталған әділ кезекке және трафик пішілдеудің жалпы ұғымына дамыды, онда кезектің басымдықтары қажетті ағын сапасын қамтамасыз ету немесе кейбір ағындарды үдету үшін динамикалық түрде басқарылады.

Принцип

Әділ кезекшелеу әрбір пакеттік ағын үшін жеке кезекше қолданып, оларды кезекпен қызмет көрсетеді, осылайша әрбір ағын "ресурстардың тең үлесін иеленеді". және әділдік көрсеткіші.

Салмақты үлестіруге жалпылау

Бастапқы идея әрбір ағынға бірдей жылдамдық тағайындайды. Оның табиғи кеңейтуі – пайдаланушыға әрбір ағынға бөлінетін жолақтың үлесін анықтау мүмкіндігін беру болып табылады, бұл салмақты әділ кезекке қоюға және жалпы процессорды бөлісуге алып келеді.

Байтпен салмақталған әділ кезекке қою алгоритмі

Бұл алгоритм бәсекелес ағындар арасындағы байланыс ресурстарын біттік түрде дөңгелек тізбекпен бөлісудің әділдігін имитациялауға тырысады. Бірақ пакеттік ағындар пакеттер бойынша және ретімен жіберілуі керек. Байттық салмақталған әділ кезек алгоритмі пакеттердің тарату ретін әрбір пакеттің аяқталу уақытын модельдеу арқылы анықтайды, олар біттік түрде дөңгелек тізбекпен жіберілгендей. Осы модельдеуге сәйкес ең ерте аяқталу уақыты бар пакет келесі таратуға таңдалады. Алгоритмнің күрделілігі O(log(n)), мұнда n – кезектер/ағындар саны.

Алгоритмнің егжей-тегжейі

Нақты аяқталу уақытын модельдеу мүмкін болғанымен, бұл есептеулерді көп қажет етеді. Модельді әрбір пакетті таратуға таңдағанда және кез келген кезекке жаңа пакет келген сайын қайта есептеу қажет. Есептеу жүктемесін азайту үшін виртуалды уақыт тұжырымы енгізіледі. Әрбір пакеттің аяқталу уақыты осы балама, монотонды өсетін виртуалды уақыт шкаласында есептеледі. Виртуалды уақыт пакеттердің таратылуын нақты уақытта модельдемесе де, толыққанды модельдің мақсаттарына жету үшін олардың таратылу ретін дұрыс модельдейді. Виртуалды уақытты пайдалану арқасында бұрын кезекке қойылған пакеттердің аяқталу уақытын қайта есептеудің қажеті жоқ. Жаңа келген пакеттердің болуы бар пакеттердің аяқталу уақытын өзгертуі мүмкін болғанымен, виртуалды уақыт бойынша аяқталу уақыты өзгермейді – виртуалды уақыт сызығы жаңа таратуды қабылдау үшін нақты уақытқа қатысты өзгеріп отырады. Жаңа кезекке қойылған пакеттің виртуалды аяқталу уақыты виртуалды басталу уақыты мен пакет көлемінің қосындысымен анықталады. Виртуалды басталу уақыты – сол кезектегі алдыңғы виртуалды аяқталу уақыты мен ағымдағы сәт арасындағы ең үлкен мән. Барлық үміткер пакеттердің (яғни, бос емес ағын кезектеріндегі пакеттердің) виртуалды аяқталу уақыты есептелгеннен кейін, әділ кезек виртуалды аяқталу уақытын салыстырып, ең кішісін таңдайды. Ең кіші виртуалды аяқталу уақыты бар пакет таратылады.