Прокси для повышения производительности

Прокси для повышения производительности (англ. performance-enhancing proxies, PEP) — это сетевые агенты, предназначенные для улучшения сквозной производительности некоторых сетевых протоколов. Стандарты таких прокси определены в RFC 3135 (PEP, предназначенные для смягчения деградаций, связанных с каналами связи) и RFC 3449 (влияние асимметрии сетевого пути на производительность TCP).

undefined

Классификация

Существующие реализации PEP используют различные методы для повышения производительности.

  • Тип прокси: PEP может либо «разделять» соединение, либо «подсматривать» в него. В первом случае прокси выступает как противоположный конец соединения в каждом направлении, буквально разделяя соединение на две части. Во втором случае прокси контролирует передачу TCP-сегментов в обоих направлениях с помощью фильтрации и восстановления подтверждений в существующем соединении. Это зависит от уровня реализации PEP по OSI[1].
  • Распределённость: PEP может быть интегрированным или распределённым. Интегрированный PEP работает на одном устройстве, а распределённый требует установки на обеих сторонах канала, где возникает деградация производительности. Это часто встречается в коммерческих PEP-устройствах, которые действуют как чёрные ящики, используя более или менее открытые протоколы для взаимодействия между ними вместо TCP.
  • Симметричность: Реализация PEP может быть симметричной или асимметричной. Симметричные PEP используют одинаковое поведение в обоих направлениях; предпринимаемые действия не зависят от интерфейса получения пакета. Асимметричные работают по-разному в каждом направлении, что может привести, например, к увеличению производительности только в одном направлении канала.

Виды

Существует несколько различных видов PEP, каждый из которых применяется для устранения соответствующей проблемы с каналом связи. Наиболее распространённые типы:

  • Split TCP (разделённый TCP)
  • Фильтрация/децимация подтверждений (Ack decimation)
  • Snoop
  • D-proxy

Split TCP

Split TCP обычно применяется для решения проблем TCP при больших временах двойного оборота. Типичная система использует PEP типа Split TCP для повышения производительности TCP на спутниковых линиях связи. Split TCP работает за счёт разбиения сквозного соединения на несколько отдельных соединений и использования различных параметров для передачи данных между каждым из участков. Конечные системы используют стандартный стек TCP без модификаций и не требуют знания о наличии PEP между ними. Split TCP перехватывает TCP-соединения от конечных систем и завершает их, что позволяет обходиться без изменений на концах и преодолевать, в частности, проблему слишком малых окон TCP для спутниковых коммуникаций.

Фильтрация/децимация подтверждений

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

Snoop

Прокси Snoop[2] — пример интегрированного прокси. Он предназначен для скрытия потерь пакетов из-за помех или коллизий в беспроводном соединении. Snoop обнаруживает потери, отслеживая TCP-передачи и фиксируя дублирующиеся подтверждения. Получая повторяющиеся подтверждения (свидетельство потери пакета), Snoop их «молча» отбрасывает и повторно передаёт утраченный пакет данных. Отправитель TCP не должен знать о потере, что предотвращает ненужное уменьшение TCP-окна.

D-Proxy

D-Proxy[3][4] также предназначен для устранения потерь пакетов по радиосвязи вследствие помех и коллизий. D-Proxy — новый распределённый прокси TCP, требующий размещения прокси по обе стороны «шумного» канала. Как и Snoop, он использует номера последовательности TCP для обнаружения потерь, но работает проактивно — контролируя номера последовательности непосредственно на данных, а не на подтверждениях. При потере пакета TCP-поток временно буферизуется до восстановления и пересортировки пропущенного пакета.

Примечания

  1. PERFORMANCE ENHANCEMENT PROXY (PEP): TCP in Wireless Network (англ.). Tech Blog. Дата обращения: 6 июля 2024. Архивировано 11 июня 2022 года.
  2. Balakrishnan, Hari; Srinivasan Seshan; Randy H. Katz (декабрь 1995). “Improving TCP/IP Performance over Wireless Networks”. ACM Wireless Networks [англ.]. 1 (4): 469—481. DOI:10.1007/BF01985757. S2CID 2204005. Проверьте дату в |date= (справка на английском)
  3. Murray, David; Терри Козиниек; Майкл Диксон (2009). “Solving Ack Inefficiencies in 802.11 Networks”. IEEE International Conference on Internet Multimedia Systems Architecture and Applications [англ.].
  4. Murray, David; Терри Козиниек; Майкл Диксон (2010). “D-Proxy: Reliability in Wireless Networks”. 16th Asia-Pacific Conference on Communications (APCC) [англ.].

Литература

Ссылки

  • PEPsal — реализация интегрированного раздельного PEP с лицензией GPL для Linux
  • PEP server MediaSputnik — сервер MediaSputnik 2402, совместимый с I-PEP и соответствующий рекомендациям SatLabs Group (ESA) для поддержки стандартов и сетей DVB-RCS
  • RFC 3135 — полный текст стандарта (PEP для смягчения деградаций каналов связи)

Категории