Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема переполнения буфера приёма у LPC1786 ...
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
Porty
Добрый день.
Разрабатываем устройство собирающее данные в режиме реального времени непрерывно и выдающее по TCP в локалку поток (хитрый Ethernet - ADC 500kHz).
Для этого используем LPC1786, поначалу нам казалось что у него достаточно памяти для буферов ethernet, окна TCP, и фифо буфера данных АЦП.
Но возникла проблема что когда данное устройство работает в крупных сетях и на него начинают приходить слишком много широковещательных пакетов то буфер приёма переполняется и часть пакетов теряется что приводит к сбоям по TCP - входящий поток управления подвисает на 200-500мс пока не произойдет перепосылка потерянного блока, что критично. После разбора логов было выяснено что большинство широковещательных пакетов это ARP запросы на определение IP адреса. Т.к. устройство работает только в режиме одного соединения с одним сервером - то возникла идея
игнорировать все приходящие ARP пакеты и любые другие не IP пакеты и обрабатывать только IP если соединение уже установлено и так делать до дисконекта.

Но не понятно - будет ли нормально работать такой режим когда при установленном соединении игнорируются все не IP пакеты?
И как ещё можно бороться с переполнением буфера приёма для устройств с малым объёмом ОЗУ (64кбайта)?
andrewlekar
А вам широковещательные пакеты вообще нужны? Поставьте в EMAC фильтр на multicast и broadcast.
С переполнением буфера можно бороться, увеличивая этот буфер. sm.gif Увеличьте количество буферов в DMA на приём. Если памяти не хватает, то уменьшите их размер, но увеличьте количество.
Porty
Цитата(andrewlekar @ Apr 21 2011, 09:44) *
А вам широковещательные пакеты вообще нужны? Поставьте в EMAC фильтр на multicast и broadcast.
С переполнением буфера можно бороться, увеличивая этот буфер. sm.gif Увеличьте количество буферов в DMA на приём. Если памяти не хватает, то уменьшите их размер, но увеличьте количество.

Уже увеличен, пропускать широковещательные пакеты тоже умею,
мне нужно знать - повлияет ли это на логику работы TCP стека, не будет ли ошибки в таком случае, например в случаях обрыва соединения или зависания и тд?
Интересно то разрешена ли такая уловка согласно стандартам ARP, IP, TCP?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.