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

 
 
> Ограничение скорости Ethernet канала, Flow Control
DuHast
сообщение Apr 12 2009, 08:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Схема устройства в первом приближении такая RJ-45 -> PHY -> FPGA -> PHY-> RJ-45. К разъёмам RJ-45 могут подключаться любые сетевые устройства (компы, свитчи и т.д.). В FPGA MII интерфейсы двух PHY просто соединены друг с другом. Встала задача ограничивать скорость Ethernet потока через такое устройство с заданным шагом. Сначала рассуждал так: k интервалов времени пропускаю пакеты через FPGA, n не пропускаю, получаю скорость k/(n+k) от начальной. На практике получил такой результат: UDP поток ограничивается за счёт потери пакетов, TCP еле поднимается на очень низкой скорости, не зависимо от значений n и k. Теперь хочу попробовать Flow Control и использованием Pause фреймов. Вопросы следующие:

1 Подходит ли этот механизм для решения моей задачи (будем считать, что все подключаемые устройства его потдерживают);

2 Если да, то какой выставлять MAC-адрес в поле отправителя pause фрейма, ведь MAC уровень в моём устройстве не реализован и у его портов нет MAC адресов.

3 Какие ещё есть варианты для решения этой задачи.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
Rst7
сообщение Apr 12 2009, 11:53
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Начнем с последнего - варианты Вы сами перечислили - один из них - полисинг - Вы его и реализовали. Только немного неправильно - надо дропать пакеты только тогда, когда средняя скорость превышает заданную. Но результаты Вы сами видите. Правильное решение - это организовывать шейпер, т.е. плавное ограничение. Обычно оно выглядит так:

Код
приемник -> буфер FIFO -> передатчик


Из буфера FIFO пакеты передаются с таким расчетом, чтобы не превысить требуемую скорость передачи.

Приемнику при заполнении FIFO говорится о невозможности приема - например, посылкой pause-фрейма.

В поле отправителя pause-фрейма Вы можете поставить любой MAC. Однако, Вам надо обрабатывать pause-фреймы с обеих сторон - минимум - не пропускать их через себя.

Для простоты, кстати, можно перейти на Half-Duplex (с двух сторон) - там проще обрабатывать, не надо разбирать фреймы.

Кстати, а какое Вам ограничение по скорости нужно? Если устроит ряд
Код
128 кбит/с
256 кбит/с
512 кбит/с
1 Мбит/с
2 Мбит/с
4 Мбит/с
8 Мбит/с
нет ограничения

, то можно взять любой свич-мыльницу на RTL8316,8318,8324 и прошить в нем eeprom с ограничением из данного ряда на нужные порты. Дешевле Вы девайс не разработаете smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DuHast
сообщение Apr 12 2009, 19:00
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Rst7 @ Apr 12 2009, 15:53) *
Правильное решение - это организовывать шейпер, т.е. плавное ограничение. Обычно оно выглядит так:
приемник -> буфер FIFO -> передатчик
А какие требования к размеру FIFO?

Цитата(Rst7 @ Apr 12 2009, 15:53) *
Однако, Вам надо обрабатывать pause-фреймы с обеих сторон - минимум - не пропускать их через себя.
Спасибо, дельное замечание, об этом я как-то сразу не подумал.

Цитата(Rst7 @ Apr 12 2009, 15:53) *
Если устроит ряд...
К сожалению не устроит.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 12 2009, 20:09
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А какие требования к размеру FIFO?


Ну желательно выбрать такой размер, чтобы обеспечить более-менее плавную регулировку. Пакетов 200-300 я бы взял (опираясь на обычные настройки для програмных шейперов на большом брате). Вообще, огласите-ка требуемые скорости после ограничения (до - я так понимаю, 100Мбит/с).

Можно, кстати, поступить еще одинм занятным способом - соединить 2 микросхемы свичей (например, RTL8305) через MII-интерфейс, при этом затактировав его (интерфейс) c частотой, равной требуемой битовой скорости, деленной на 4. Это решение из недорогих.

А если работать с Half-Duplex, то для шейпинга можно обойтись простенькой CPLD, просто регулярно удавливая канал передачей Back-Pressure. Вообще дешево выйдет. Я бы реализовывал именно так - ну неравнодушен я к экстремально дешевым решениям wink.gif

В любом случае, я бы на Вашем месте крепко подумал вот над чем - если Ваше устройство получается дороже $30, то проще взять какой-нибудь вайфай/адсл-роутер с линухом и банально поднять на нем шейпер.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DuHast
сообщение Apr 13 2009, 05:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Скорости 100 и 1000 Мбит/с. Пока вожусь с сотней. Устройство уже существует и эксплуатируется. Дело в том, что FPGA в моей схеме это на самом деле FPGA->канал ->FPGA, просто решили ещё одну опцию устройству добавить. Вот только с памятью у меня проблемы, похоже, придётся плисину менять.
С Half-Duplex не совсем понятно, получается, что пользовательские устройства через мой канал связи между собой в Half-Duplex обмениваться будут? Нет, это мне не подходит.
Спасибо большущее за ответы. Пока вопросы закончились. Надо отработать имеющиеся советы
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 13 2009, 05:55
Сообщение #6


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
С Half-Duplex не совсем понятно, получается, что пользовательские устройства через мой канал связи между собой в Half-Duplex обмениваться будут? Нет, это мне не подходит.


Вы не забыли, что 1GE - это полудуплекс? Так что не надо бояться.

Кстати, если у Вас есть канал связи, значит должны быть уже заготовленные FIFO, иначе, спрашивается, как Вы согласовываете скорости в канале и в эзернете. Вот их и пользуйте.

Или у Вас прозрачная трансляция в канале? Тогда конечно, полудуплекс не прокатит из-за ограничения на время прохождения туда-обратно.

А вообще решение изменения скорости передачи в эзернете очень удобно решается на микросхемах свичей с мак-интерфейсом - можно любую желаемую получить без проблем.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DuHast
сообщение Apr 13 2009, 06:28
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Rst7 @ Apr 13 2009, 09:55) *
Вы не забыли, что 1GE - это полудуплекс? Так что не надо бояться.

Кстати, если у Вас есть канал связи, значит должны быть уже заготовленные FIFO, иначе, спрашивается, как Вы согласовываете скорости в канале и в эзернете. Вот их и пользуйте.

Или у Вас прозрачная трансляция в канале? Тогда конечно, полудуплекс не прокатит из-за ограничения на время прохождения туда-обратно.

А вообще решение изменения скорости передачи в эзернете очень удобно решается на микросхемах свичей с мак-интерфейсом - можно любую желаемую получить без проблем.

Fifo конечно есть, но не большое, по поводу свчей подумаю. Кинте, пожалуйста, названием и сколько они примерно стоят?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 13 2009, 06:46
Сообщение #8


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Realtek RTL83xx, Micrel KSZ8xxxx, выберете по прикладистости на сайтах производителей. Цены по местному могут сильно гулять, но микрел обычно можно купить без особых заморочек в элтехе СПб. Реалтек непобедим по цене, если место найти wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DuHast
сообщение Apr 13 2009, 12:31
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Rst7 @ Apr 13 2009, 09:55) *
Вы не забыли, что 1GE - это полудуплекс?

Это с каких пор? wacko.gif Вы ничего не путаете?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 13 2009, 12:36
Сообщение #10


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Вы ничего не путаете?


Путаю. Вспылил, был неправ.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Aprox
сообщение Apr 14 2009, 19:30
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(DuHast @ Apr 13 2009, 10:28) *
Fifo конечно есть, но не большое....
Задача у меня примерно такая же, и тоже с 1GE. Я думаю вычислять в FPGA текущую скорость поступления данных и формировать Pause-пакеты с вычисленной задержкой, отправляя их источнику данных. Формат Pause-пакетов очень простой, легко сгенерить в FPGA по темплейту.
Go to the top of the page
 
+Quote Post
DuHast
сообщение Apr 16 2009, 16:20
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Aprox @ Apr 14 2009, 23:30) *
Задача у меня примерно такая же, и тоже с 1GE. Я думаю вычислять в FPGA текущую скорость поступления данных и формировать Pause-пакеты с вычисленной задержкой, отправляя их источнику данных. Формат Pause-пакетов очень простой, легко сгенерить в FPGA по темплейту.

Напишите, если что-нибудь получится
Go to the top of the page
 
+Quote Post

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

 


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


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