Излишняя сетевая буферизация

Излишняя сетевая буферизация (англ. Bufferbloat — распухание буфера) — явление, возникающееся в сетях с коммутацией пакетов, когда чрезмерная буферизация вызывает увеличение времени прохождения пакетов (latency) и разброса задержки пакетов (jitter), и в результате уменьшение пропускной способности (throughput). Проект www.bufferbloat.net иронично определил этот термин, как «ухудшение производительности Интернета, вызванное предыдущими попытками его улучшения»[1].

Термин Bufferbloat в конце 2010 предложил Джим Гетиc (Jim Gettys), член комитета W3C и разработчик спецификации HTTP/1.1[2].

История

Предыстория

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

Первое проявление перегрузки сети в крупном масштабе произошло в 1986г. в сети NSFNet[3]. В ответ на это событие в 1988 г. был разработан протокол контроля перегрузки сети Ван Якобсона (англ. Van Jacobson’s Congestion Control).

Интернет продолжал расти. В 1993 С. Флойд и В. Якобсон разрабатывают алгоритм RED (англ. Random early detection — Произвольное Раннее Обнаружение) для управления переполнением очередей маршрутизаторов[4].

В 1997 выходит RFC 2068, в которой сформулирован «принцип двух соединений»: одному клиенту следует использовать не более двух соединений одновременно с одним и тем же сервером[5]. По словам из этой же RFC, эта рекомендация дана «для уменьшения времени HTTP ответа и избежания чрезмерной загрузки Интернета или других сетей».

Годом позже выходит RFC 2309: «Рекомендации по управлению очередями и избежанию перегрузки в Интернете», в которой были предложены меры по улучшению и сохранению производительности Интернета.

В 2001 году выходит RFC 3168: «Добавление явной нотификации о перегрузке (Explicit Congestion Notification, ECN) в IP», в которой было предложено добавление поля ECN в IP и TCP пакетах, резервируя для этого 2 бита.

В 2004-2007 один из крупнейших интернет-провайдеров США Comcast испытывает трудности в связи с сетевой перегрузкой. Об этом свидетельствуют неоднократные отключения интернета «тяжёлым» пользователям[6]. А в 2007 Comcast, по словам Джима Геттиса, «задыхается» от битторрентов[7]. Компанию обвиняют в блокировании торрент-траффика[8] и даже преследуют судебные иски[9].

Обнаружение проблемы

По утверждению Джима Геттиса, первым, кто обнаружил проблему излишней сетевой буферизации, был Дэйв Кларк[7]. В 2004 г. он наблюдал это явление на своём DSLAMе и использовал его, чтобы отбить у своего сына привычку подолгу играть в WOW[10].

Примечания

  1. ↑ Introduction (англ.). Wiki. www.bufferbloat.net. Дата обращения 2 сентября 2011.
  2. ↑ Проект по избавлению Linux-ядра от излишней сетевой буферизации (неопр.). OpenNET (27 февраля 2011). Дата обращения 5 сентября 2011.
  3. ↑ Internet History :: NSFNET (англ.). www.cybertelecom.org. Дата обращения 6 сентября 2011.
  4. ↑ Floyd, Sally; Jacob
    son, Van. Random Early Detection (RED) gateways for Congestion Avoidance (неопр.) (August 1993). doi:10.1109/90.251892. Дата обращения 26 января 2010.
  5. ↑ «Connections. Persistent Connections. Practical Considerations». с. 45. секция 8.1.4. RFC 2068. RFC2068 на русском языке
  6. ↑ Joseph S. Enoch. Comcast Cuts Off Heavy Internet Users (англ.). ConsumerAffairs.com (24 August 2007). Дата обращения 7 сентября 2011.
  7. ↑ 1 2 Gettys, с 13.
  8. ↑ Declan McCullagh. Comcast really does block BitTorrent traffic after all (англ.). CNet (19 October 2007). Дата обращения 7 сентября 2011.
  9. ↑ Ryan Singel. Comcast Sued Over BitTorrent Blocking (англ.). Wired (14 November 2007). Дата обращения 7 сентября 2011.
  10. ↑ Jim Gettys. Whose house is of glasse, must not throw stones at another (англ.). lwn.net (7 December 2010). Дата обращения 6 сентября 2011.

Литература

Ссылки

  • www.bufferbloat.net  (англ.) (Сайт совместного проекта по решению проблемы излишней сетевой буферизации)
  • jg’s ramblings  (англ.) (Блог Дж. Гетиса, где он впервые описал проблему излишней сетевой буферизации)