Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Размер буфера для Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Anatoliy
Ethernet раньше не занимался.
Коллеги,а вот такой вопрос.Встала задача передавать по Ethernet (радиоканал,TCP/IP)небольшой поток информации,порядка 2Мбит при 100 Мбит сети. Девайс сделал на Циклоне-3, всё работает при 25Мбит. Но как только начинаю ограничивать пропускную способность канала связи до нужных 2Мбит - всё валится. Подозреваю что чем меньше пропускная способность канала связи тем большего размера нужен входной буфер. У меня сейчас 256 Кбайт - мало или нет?Если мало то как определить нужный размер?

p.s.
Если это важно, IP никак не обрабатывается,что пришло то и отправляется(требование заказчика).
vadimp61
Цитата(_Anatoliy @ Jan 16 2012, 23:22) *
Ethernet раньше не занимался.
Коллеги,а вот такой вопрос.Встала задача передавать по Ethernet (радиоканал,TCP/IP)небольшой поток информации,порядка 2Мбит при 100 Мбит сети. Девайс сделал на Циклоне-3, всё работает при 25Мбит. Но как только начинаю ограничивать пропускную способность канала связи до нужных 2Мбит - всё валится. Подозреваю что чем меньше пропускная способность канала связи тем большего размера нужен входной буфер. У меня сейчас 256 Кбайт - мало или нет?Если мало то как определить нужный размер?

p.s.
Если это важно, IP никак не обрабатывается,что пришло то и отправляется(требование заказчика).

Делали мост Ethernet , то есть не обрабатывали. Хватило 128 кбайт для скоростей 64-2048 кбит. Циклон1.
_Anatoliy
Цитата(vadimp61 @ Jan 16 2012, 21:50) *
Делали мост Ethernet , то есть не обрабатывали. Хватило 128 кбайт для скоростей 64-2048 кбит. Циклон1.

Интересно,а в чём же тогда проблема может быть?
Alex11
А у Вас источник с какой скоростью данные отправляет? Если 25 МБит, а Вы ограничили выход на 2, то буфера не хватит никакого и никогда.
_Anatoliy
Цитата(Alex11 @ Jan 16 2012, 22:14) *
А у Вас источник с какой скоростью данные отправляет? Если 25 МБит, а Вы ограничили выход на 2, то буфера не хватит никакого и никогда.

А разве протокол TCP не ограничит скорость передачи при потерях пакетов?
Источник - сеть с десятком компьютеров,в том числе и компьютер посылающий/принимающий данные.
Timmy
Цитата(_Anatoliy @ Jan 17 2012, 00:22) *
А разве протокол TCP не ограничит скорость передачи при потерях пакетов?
Источник - сеть с десятком компьютеров,в том числе и компьютер посылающий/принимающий данные.

Для управления скоростью передачи в Ethernet предусмотрены специальные пакеты pause. Странно, а как жили до 1997 года? Всё современное сетевое оборудование вроде бы поддерживает паузу. Надо заметить, что раньше в TCP максимальный размер окна был 64К, и при буфере в 256К можно было держать до 3 TCP линков без потерь пакетов. А сейчас винда с ходу выдаёт окно около мегабайта, и никаких буферов на него не напасешься.
vadimp61
Цитата(_Anatoliy @ Jan 17 2012, 00:00) *
Интересно,а в чём же тогда проблема может быть?

Фильтрацию пакетов по МАС адресам делать надо, зачем пихать все пакеты на другую сторону через узкий канал, если этот пакет предназначен локальной стороне? Стройте в памяти Циклона таблицу МАКов и фильтруйте, а пакет храните во внешней памяти, причем со временем выборки не более 12нс для скорости 10BASE-T, для 100BASE-T надо быстрее или 16 битную
Что за PHY?
Postoroniy_V
Цитата(_Anatoliy @ Jan 17 2012, 04:22) *
Ethernet раньше не занимался.
Коллеги,а вот такой вопрос.Встала задача передавать по Ethernet (радиоканал,TCP/IP)небольшой поток информации,порядка 2Мбит при 100 Мбит сети. Девайс сделал на Циклоне-3, всё работает при 25Мбит. Но как только начинаю ограничивать пропускную способность канала связи до нужных 2Мбит - всё валится. Подозреваю что чем меньше пропускная способность канала связи тем большего размера нужен входной буфер. У меня сейчас 256 Кбайт - мало или нет?Если мало то как определить нужный размер?

p.s.
Если это важно, IP никак не обрабатывается,что пришло то и отправляется(требование заказчика).

делал подобное, но у меня был 1 PC подключенный через через 2 Мбит.с канал к 100Мбит.с сети.
на начальном этапе работало как-то странно, например сообщения в icq появлялись с обалденной задержкой, если вообще появлялись.
оказалось что была проблема в циркулярном буфере(данные от pc хранились во внешней рам, оттуда потом доставались и передавлись в 2мб канал)
начало встречалось с концом и пошло поехало.
когда исправил работу с буфером - заработало как и ожидалось(проверял с ftp, http )
размер буфера был 256Kб
_Anatoliy
Цитата(Timmy @ Jan 16 2012, 23:37) *
Для управления скоростью передачи в Ethernet предусмотрены специальные пакеты pause. Странно, а как жили до 1997 года? Всё современное сетевое оборудование вроде бы поддерживает паузу. Надо заметить, что раньше в TCP максимальный размер окна был 64К, и при буфере в 256К можно было держать до 3 TCP линков без потерь пакетов. А сейчас винда с ходу выдаёт окно около мегабайта, и никаких буферов на него не напасешься.

Проверяли,на некотором оборудовании pause срабатывает,на некотором нет.Хочется универсальности.
Т.е. чтобы работать без проблем нужно сохранять сразу всё окно?А если компьютеров 10 то буфер нужен 10 Мбайт?

Цитата(Postoroniy_V @ Jan 17 2012, 06:38) *
размер буфера был 256Kб

Странно,и у меня такой же.Я проверяю так - копирую через мост файл большого размера и параллельно пингую свой сервер.При скорости 25Мбит всё идёт совсем без проблем.На 10 Мбит редко идут потери пингов,но файл копируется,а при 5 потери пингов очень часто идут,а копирование совсем обрывается.

Цитата(vadimp61 @ Jan 17 2012, 06:05) *
Фильтрацию пакетов по МАС адресам делать надо, зачем пихать все пакеты на другую сторону через узкий канал, если этот пакет предназначен локальной стороне? Стройте в памяти Циклона таблицу МАКов и фильтруйте, а пакет храните во внешней памяти, причем со временем выборки не более 12нс для скорости 10BASE-T, для 100BASE-T надо быстрее или 16 битную
Что за PHY?

dp83848cvv,память 16-ти битная,10нс
petrov
Надо брать другой контроллер Ethernet, которому на MII интерфейс можно любой клок подавать, он сам делает flow control, нет никаких дополнительных буферов в FPGA и потерь пакетов.
Postoroniy_V
Цитата(_Anatoliy @ Jan 17 2012, 15:57) *
....


Странно,и у меня такой же.Я проверяю так - копирую через мост файл большого размера и параллельно пингую свой сервер.При скорости 25Мбит всё идёт совсем без проблем.На 10 Мбит редко идут потери пингов,но файл копируется,а при 5 потери пингов очень часто идут,а копирование совсем обрывается.
....

вообщем страный случай у меня работало и при 64 кб.с ... возможно в вашем случае 256Кб и мало и х.з. как определить "мало"/"номано"/"много". cranky.gif
хм ...и проверял примерно так же как и вы - копирование 2 гигового файла, сидение в тырнете(ася, веб-шмеб )..
vadimp61
Цитата(petrov @ Jan 17 2012, 11:39) *
Надо брать другой контроллер Ethernet, которому на MII интерфейс можно любой клок подавать, он сам делает flow control, нет никаких дополнительных буферов в FPGA и потерь пакетов.

Этот вариант будет потреблять больше минимиум в 2 раза. Если к энергопотреблению нет претензий то этот вариант лучший.
А еще есть контроллеры не с MII, а с 1 битной шиной HDLC, там вообще делать ничего не надо)))
petrov
Цитата(vadimp61 @ Jan 17 2012, 12:18) *
Этот вариант будет потреблять больше минимиум в 2 раза.


Реализация flow control своими силами на FPGA меньше потреблять будет что ли?
_Anatoliy
Цитата(petrov @ Jan 17 2012, 10:30) *
Реализация flow control своими силами на FPGA меньше потреблять будет что ли?

Добавил в проект flow control,полёт нормальный и потерь нет вообще.Хоть 1мбит хоть 50мбит. rolleyes.gif
XVR
Цитата(_Anatoliy @ Jan 17 2012, 00:22) *
А разве протокол TCP не ограничит скорость передачи при потерях пакетов?
ТСР может и ограничит, а может и нет, но в любом случае будет продолжать работать. А вот UDP (и ICMP, т.е. ping) работать перестанут, т.к. не следят за доставкой пакетов crying.gif
_Anatoliy
Цитата(XVR @ Jan 17 2012, 13:13) *
ТСР может и ограничит, а может и нет, но в любом случае будет продолжать работать. А вот UDP (и ICMP, т.е. ping) работать перестанут, т.к. не следят за доставкой пакетов crying.gif

Ага,у меня только TCP будет.
vadimp61
Цитата(petrov @ Jan 17 2012, 12:30) *
Реализация flow control своими силами на FPGA меньше потреблять будет что ли?

Если сравнить реализацию Циклон+память+PHY и любой коммутатор хоть 3-х портовый, потребление всегда в первом варианте будет меньше, по крайней мере у нас так получилось. Циклон+память+PHY vs ADM6993.

Цитата(_Anatoliy @ Jan 17 2012, 15:19) *
Ага,у меня только TCP будет.

Если ping работать не будет, то и TCP то-же.
Проверку работы я делаю так, через "узкий" канал пингую комп пакетом 30000байт, время отклика для канала 2048кбит в районе 240-250мс. Если больше то канал имеет скорость меньше 2048, главное пакеты не должны теряться ни длинные ни короткие.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.