реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Мост 100 Мбит Ethernet <-> E2, Проблема с tcp/ip
xmir
сообщение Jul 2 2013, 09:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 16-08-04
Пользователь №: 501



Здравствуйте.

Разрабатываю устройство сопряжения 100 Мбит/с Ethernet c последовательным интерфейсом 8448 кбит/с (физ. уровень E2, протокол самопальный). Проблема в том, что не удается выжать 8 Мбит/с на протоколе tcp/ip.
Устройство работает следующим образом: тетрады ethernet фрейма считываются ПЛИС из PHY микросхемы по MII и записываются во внутреннее ФИФО объемом 32 кбайт. По накоплению цельного фрейма в E2 выдается синхропоследовательность, а затем ethernet фрейм из ФИФО. При заполнении ФИФО выше определенного порога (например 30 кбайт), ethernet фреймы начинают отбрасываться. В обратную сторону аналогично - фреймы по E2 пишутся в ФИФО и по накоплению цельного фрейма выдаются в PHY. Ethernet фреймы ходят без ошибок (проверял анализатором BERcut-GE1). Пропускная способность канала на сырых ethernet кадрах 8 с копейками Мбит/с.
Проверяю передачу по tcp/ip следующим образом: соединяю 2 устройства по E2, ethernet порты подключаю к двум компьютерам и копирую файлы между ними под виндой. Смотрю загрузку сети в диспетчере задач. График загрузки сети дерганный, в среднем 4-5 %. При установке уровня отсечки ФИФО буфера 28 или 29 кбайт удалось добиться ровного графика загрузки сети на уровне 8% (8 Мбит/с) при копировании в одну из сторон (с ноутбука), но при копировании на ноутбук - дерганный график загрузки, в среднем 4-5 %. Пробовал еще уменьшать порог отсечки ФИФО постепенно до 24 кбайт, требуемого результата это не дало. Сетевая видеокамера загружает канал на требуемые 8% (но тут видимо UDP).
Вопрос собственно в чем: это проблема tcp/ip и невозможно добиться стабильной пропускной способности 8 мбит/с при передаче 100 мбит -> 8 мбит при любом оконечном устройстве (компьютере) или это особенность моего устройства. Если второе, то подскажите как можно выправить ситуацию.

Go to the top of the page
 
+Quote Post
prig
сообщение Jul 2 2013, 13:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 869
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595



Цитата(xmir @ Jul 2 2013, 13:00) *
...
Если второе, то подскажите как можно выправить ситуацию.

По-хорошему, для Ethernet нужен flow control. Дропать пакеты при переполнении FIFO не есть гуд.
Вариантов несколько.
- Прикрутить самопальный flow control к имеющейся на ПЛИС схеме
- Поставить нормальный MAC, который это поддерживает
- Прикрутить вместо PHY какой-нибудь мелкий дешёвый свитчик (пара встроенных PHY и MII) и использовать его возможности.
Go to the top of the page
 
+Quote Post
vadimp61
сообщение Jul 2 2013, 15:52
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872



Цитата(prig @ Jul 2 2013, 17:13) *
По-хорошему, для Ethernet нужен flow control. Дропать пакеты при переполнении FIFO не есть гуд.
Вариантов несколько.
- Прикрутить самопальный flow control к имеющейся на ПЛИС схеме
- Поставить нормальный MAC, который это поддерживает
- Прикрутить вместо PHY какой-нибудь мелкий дешёвый свитчик (пара встроенных PHY и MII) и использовать его возможности.

Сделайте хотя бы 3-й пункт и все будет хорошо. Мы пользуем 88Е6060, правда на Е1. У нее внутри есть все что вы сейчас делали а матрице, останется добавить сериализатор и ESC последовательности.
Go to the top of the page
 
+Quote Post
krux
сообщение Jul 4 2013, 17:12
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Проблема в размере приемного окна TCP. крутится в windows в реестре, по умолчанию - 16 кбайт. На медленных каналах в большим временем задержки его надо бы уменьшать.
Ваш промежуточный буфер в 32к на FIFO делает только хуже, Приемная сторона видит отправку последовательной очереди из 32 кбайт, отправленных одним куском, считает что канал без потерь, и увеличивает окно, (при том что его надо бы уменьшить), а на следующей пачке передачи ждёт потерянные пакеты, посылая перезапросы только по истечении времени ожидания. читайте про bufferbloat.

Почему на стали делать GFP? Ведь он не слишком сложный, да ещё и через нефреймированный канал может работать.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
ZASADA
сообщение Jul 4 2013, 17:49
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 738
Регистрация: 13-01-11
Из: Минск
Пользователь №: 62 210



проверять скорость методом копирования -не лучший способ, для это существуют специальные программы, считающие скорость на пакетах различной длины. А для точных измерений есть специальные анализаторы Ethernet,одним из них вы пользовались и получили:
Цитата
Пропускная способность канала на сырых ethernet кадрах 8 с копейками Мбит/с.
.Вполне приличный результат.
вариант выправить ситуацию-установить у себя принудительно Ethernet на 10 Мбит. это позволит компу не накидывать кучу пакетов и потом переповторять передачу.
выведите наружу с плис сигнал "есть пакет из Ethernet, но нету места в ФИФО", он позволит лучше понимать процесс переполнения буфера.
Можно ограничивать более интелектуально -контролировать свободное место в ФИФО, смотреть длину пакета и отбрасывать его только если он не влезает. Например осталось место на 1400 байт, длинный пакет 1500 байт отбросить и можно набить кучу коротких пакетов по 64 байта.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 03:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.07471 секунд с 7
ELECTRONIX ©2004-2016