Алгоритм «ведра жетонов» (Token Bucket) на практике применяется как для профилирования, так и для формирования трафика.

Используется этот алгоритм в целях:

♦ обеспечения возможности пропуска через какое-либо сетевое устройство пульсирующего трафика без сглаживания (но с ограничением его интенсивности сверху) в условиях отсутствия конкуренции потоков за сетевые ресурсы (что благоприятствует более эффективному использованию ресурсов сети в таких условиях);

♦ уменьшения неравномерности в скорости продвижения пакетов через сетевое устройство, когда из-за значительных пульсаций эти пакеты сбиваются в плотные группы.

Работа алгоритма показана на рисунке 5.5, на котором отображен сервер, осуществляющий, помимо прочего, функцию ограничения интенсивности вводного трафика согласно алгоритму «ведро жетонов».

На входе вводного порта сервера создается очередь пакетов, а его внутренние механизмы моделируют так называемое «ведро» и генерируют последовательность так называемых «жетонов», направляемых в «ведро».

Рисунок 5.5 - Формирование трафика согласно алгоритм «ведро жетонов» Под жетоном в данном случае понимается абстрактный объект -носитель «порции» информации, который используется для построения модели обслуживания трафика. «Ведро» имеет предельную вместимость размером в Ь байт, а длина жетона составляет т байт. Генератор жетонов заполняет «ведро» со скоростью г байт за секунду. Параметр г регулируется администратором сети и устанавливается таким, чтобы скорость поступления жетонов в «ведро» равнялась согласованной средней скорости формируемого трафика. Другими еловами, поток жетонов представляет собой идеально усредненный трафик, к форме которого стараются привести входной трафик.

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

Взвешенное справедливое обслуживание | Сети передачи пакетных данных | Планирование качества обслуживания