Bufferbloat чаще всего возникает, когда ваше подключение к вашему провайдеру занято / насыщено / перегружено. Кажется, вы видите это, когда вы достигаете 80% емкости канала.
Всякий раз, когда есть перегрузка, маршрутизатор начинает помещать в очередь пакеты, которые будут отправлены. Если перегрузка уходит быстро (потому что отправитель останавливается / замедляется), пакеты из очереди отправляются довольно скоро. Но если перегрузка продолжается (скажем, в течение десятков или сотен миллисекунд), эти пакеты остаются в очереди до тех пор, пока их очередь не будет отправлена. Эти миллисекунды добавляются к задержке пакета и дают вам Bufferbloat.
Маршрутизатор отвечает за обнаружение этой ситуации и за замедление отправителей, которые заполняют очередь пакетов. Smart Queue Management (SQM) делает это, используя fq_codel или (более новый) торт qdisc.
А как насчет получения более быстрой ссылки от вашего интернет-провайдера? Это может не помочь. Вот почему:
Ваша более быстрая линия действительно переместит больше данных. Но ваши отправители (загружающие / загружающие компьютеры в вашей сети) всегда стремятся насытить ссылку на интернет-провайдера, что приводит к перегрузке (опять же). Таким образом, маршрутизатор по- прежнему может ставить в очередь пакеты, что приводит к буферизации.
Правильное решение состоит в том, чтобы получить маршрутизатор, который может предоставлять отправителям обратную связь для замедления при перегруженности. Интуитивно понятное описание проблемы см. В моем блоге Bufferbloat и Ski Shop