Короткое определение

Buffer Occupancy based Lyapunov Algorithm – buffer-based ABR с доказуемыми границами оптимальности. Опубликован Spiteri et al. в 2016, дефолтный ABR в dash.js.

BOLA формализовал buffer-based ABR через Lyapunov-оптимизацию, доказав, что при определённых допущениях алгоритм достигает близкой к оптимальной long-term utility (взвешенная сумма битрейта и избегания rebuffer-ов). Решающее правило на границе сегмента выбирает rendition, максимизирующий `(utility rendition-а) − γ × (стоимость изменения буфера)`, где γ – параметр, настраиваемый под целевой буфер плеера.

Оригинальная статья BOLA (IEEE INFOCOM 2016) и её преемник BOLA-FINITE (2020) разобрали поведение на старте и пограничные случаи конечного буфера. dash.js принял BOLA как дефолтный ABR примерно в 2017 и допиливал в последующих релизах. Исследования на трейсах реальных сетей показывают, что BOLA обходит чистые throughput-based ABR по большинству метрик – меньше rebuffer-ов при сопоставимом битрейте, меньше лишних переключений.

Слабость BOLA в том, что он игнорирует измеренный throughput, поэтому может медленно реагировать на реальные изменения полосы в первые секунды после них. Буфер интегрирует throughput по времени, и резкий обвал полосы проявляется в сигнале буфера не сразу. Продакшен-ABR-ы в 2026 году часто запускают BOLA-подобную buffer-логику в связке с throughput-based safety floor: «используй BOLA, если throughput не упал ниже 50 % битрейта текущего rendition-а на протяжении 3 сегментов; иначе немедленно понижай».

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.