Введение

Алгоритм планирования сетевых передач.

Токен-бакет – это алгоритм, используемый в сетях с коммутацией пакетов и телекоммуникационных сетях. Он может применяться для проверки соответствия передаваемых данных в виде пакетов заданным ограничениям по пропускной способности и импульсности (мера неравномерности или вариаций в потоке трафика). Также он может использоваться как алгоритм планирования для определения времени отправки передач, соответствующих установленным ограничениям по пропускной способности и импульсности: см. сетевой планировщик.

Обзор

Алгоритм токенов в ведре основан на аналогии с ведром фиксированной емкости, в которое токены, обычно представляющие единицу байтов или один пакет предопределенного размера, добавляются с постоянной скоростью. Когда пакет должен быть проверен на соответствие заданным ограничениям, ведёрко проверяется на наличие достаточного количества токенов в данный момент времени. Если это так, соответствующее количество токенов, например, эквивалентное длине пакета в байтах, изымается ("обналичивается"), и пакет пропускается, например, для передачи. Пакет не соответствует требованиям, если в ведёрке недостаточно токенов, и содержимое ведёрка не изменяется. Пакеты, не соответствующие требованиям, могут обрабатываться различными способами:

Они могут быть отброшены. Они могут быть поставлены в очередь для последующей передачи, когда в ведёрке накопится достаточное количество токенов. Они могут быть переданы, но помечены как не соответствующие требованиям, возможно, для последующего отбрасывания в случае перегрузки сети. Соответствующий поток таким образом может содержать трафик со средней скоростью до скорости добавления токенов в ведёрко и иметь импульсность, определяемую глубиной ведёрка. Эта импульсность может быть выражена либо в терминах допустимого джиттера, то есть насколько раньше пакет может соответствовать (например, прибыть или быть переданным), чем ожидалось бы исходя из ограничения средней скорости, либо в терминах допустимого импульса или максимального размера импульса, то есть насколько трафик может превышать средний уровень в течение конечного периода времени.

Вариации

Внедряющие этот алгоритм на платформах с недостаточным разрешением часов для добавления одного токена в корзину каждую секунду, могут рассмотреть альтернативную реализацию. При возможности обновления корзины токенов каждые S миллисекунд, количество токенов для добавления каждые S миллисекунд равно .

Средняя ставка

В долгосрочной перспективе количество передаваемых конформных пакетов ограничено скоростью генерации токенов, .

Применение

Токен-бакет может использоваться как для формирования трафика, так и для контроля трафика. При контроле трафика некорректные пакеты могут быть отброшены или понижены в приоритете (чтобы последующие функции управления трафиком могли их отбросить при возникновении перегрузки). При формировании трафика пакеты задерживаются до тех пор, пока не станут соответствующими. Контроль и формирование трафика обычно используются для защиты сети от избыточного или резко возрастающего трафика, см. управление пропускной способностью и предотвращение перегрузок. Формирование трафика часто применяется в сетевых интерфейсах хостов для предотвращения отбрасывания передач функциями управления трафиком в сети. Алгоритм токен-бакета также используется для управления потоком ввода-вывода в базах данных.