Пытаясь понять непредвиденное поведение с управлением потоком Ethernet.

Вопрос или проблема

У меня есть коммутатор на 100 Мбит, подключенный к трем камерам на 100 Мбит и компьютеру на 100 Мбит. Ограничение пропускной способности вызвано используемыми кабелями и не может быть изменено для решения проблемы, поскольку я работаю в промышленной/автомобильной среде.

                ┌------------ Камера
Компьютер-----Коммутатор---------- Камера
                └------------ Камера

Камеры транслируют RTP через UDP. Все камеры настроены на использование постоянной скорости передачи данных по 24 Мбит/с каждая.

Диспетчер задач подтверждает, что используется ожидаемая пропускная способность:
введите описание изображения здесь

Когда я запускаю анализ IO в Wireshark, я вижу, что, хотя средняя пропускная способность ниже 100 Мбит, есть всплески, превышающие 100 Мбит, что приводит к потере пакетов и невозможности декодирования потока.
Эти всплески возникают от камер, которые захватывают изображение каждые 33 мс и отправляют его. Затем они остаются бездействующими до следующего захвата изображения.

введите описание изображения здесь

В красной рамке мы видим, что достигнут предел 100 Мбит, и пакеты теряются. Мы не можем увидеть это здесь, но анализ потока RTP показывает это.

Все камеры и коммутатор поддерживают управление потоком (https://en.wikipedia.org/wiki/Ethernet_flow_control). Я ожидал, что коммутатор будет использовать управление потоком для “сглаживания” сетевого трафика, избегая этой проблемы.

  • Неправильно ли я понимаю управление потоком?
  • Существует ли другой механизм, который может помочь?

Изменение транспортного протокола с RTP на что-то другое невозможно. Переключение на гигабит не возможно.

.

Ответ или решение

Проблема с неожиданным поведением Ethernet Flow Control в вашем случае действительно может вызвать путаницу. Давайте разберемся в деталях, почему вы сталкиваетесь с этой проблемой и что можно предпринять.

Теория

Ethernet Flow Control — это механизм на канальном уровне, который предназначен для управления потоком данных между узлами в сети, чтобы избежать перегрузки. Он использует PAUSE-кадры, чтобы временно приостанавливать передачу данных с одного устройства на другое, если принимающее устройство не успевает обрабатывать входящий поток. Однако, у этого механизма есть свои ограничения и нюансы работы:

  1. Точечное управление: Flow Control обычно работает на уровне точка-точка. Если у вас несколько устройств, подключенных к одному коммутатору, и одно из них забивает канал, PAUSE-кадры могут не помочь эффективно распределить ресурс среди всех устройств.

  2. Буферизация в коммутаторе: Коммутаторы перераспределяют трафик на основе своих буферов. Если увеличивается нагрузка на один из портов, буфер может заполниться до того, как сработает Flow Control. Это часто становится причиной потери пакетов.

  3. Ограниченное управление трафиком: Flow Control работает на уровне Ethernet, и не всегда обеспечит идеальную работу для протоколов верхнего уровня, таких как UDP, который по своей природе не имеет механизмов обеспечения доставки.

  4. Спайки трафика: Аппараты, такие как камеры в вашем случае, могут создавать внезапные всплески трафика из-за периодической передачи больших объемов данных. Даже если средняя полоса пропускания не превышает лимит, мгновенные пики могут это сделать.

Пример

В вашем случае, три камеры по 24 Мбит/с каждая создают совокупный трафик в 72 Мбит/с при постоянной нагрузке. Однако, поскольку камеры передают данные с интервалом в 33 мс, могут возникать пики передачи, когда все три камеры пытаются передать данные одновременно. Эти всплески могут превышать возможности вашего 100 Мбит/с канала, что приводит к потере пакетов, так как коммутатор не имеет достаточно возможностей для буферизации всего входящего трафика одновременно.

Применение

Что можно предпринять в данном случае?

  1. Настройка QoS (Quality of Service): Внедрение QoS позволит приоритизировать трафик и более эффективно управлять существующими ресурсами. Вы сможете задать более высокий приоритет для RTP трафика, что снизит вероятность потерь пакетов.

  2. Регулирование IP-очередей и управление трафиком: Исследуйте возможность конфигурировать очереди на уровне ваших устройств, если они поддерживают более продвинутые функции трансфера данных. Это может включать увеличение размера очереди и изменение алгоритмов обработки пакетов.

  3. Использование более продвинутых протоколов: Хотя изменение RTP-протокола невозможно, можно попробовать использовать ассистивные протоколы или фильтры, которые минимизируют вероятность передачи данных одновременно от всех камер.

  4. Рассмотрите использование распределенных конфигураций: Если возможно, распределите нагрузку, задействовав другую сеть или дополнительное сетевое оборудование, чтобы разгрузить существующий канал.

  5. Изменение конфигурации оборудования: Проверьте все доступные настройки оборудования для оптимизации работы с потоками данных. Это может включать настройку размера буферов в камерах и коммутаторах.

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

Заключение

Ваше понимание Flow Control нуждается в корректировках. Он может быть полезен, но не решит все проблемы, особенно с UDP-трафиком и в условиях, когда несколько устройств конкурируют за ограниченный канал. Абстрактно, лучшие результаты можно получить из комбинации различных методов контроля качества сервиса, буферизации и распределения трафика. Это позволит стабилизировать поток данных и минимизировать потери пакетов в вашем конкретном сценарии.

Оцените материал
Добавить комментарий

Капча загружается...