|
Ограничение скорости Ethernet канала, Flow Control |
|
|
|
 |
Ответов
(1 - 11)
|
Apr 12 2009, 11:53
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 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 с ограничением из данного ряда на нужные порты. Дешевле Вы девайс не разработаете
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 12 2009, 19:00
|

Местный
  
Группа: Свой
Сообщений: 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)  Если устроит ряд... К сожалению не устроит.
|
|
|
|
|
Apr 12 2009, 20:09
|

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

|
Цитата А какие требования к размеру FIFO? Ну желательно выбрать такой размер, чтобы обеспечить более-менее плавную регулировку. Пакетов 200-300 я бы взял (опираясь на обычные настройки для програмных шейперов на большом брате). Вообще, огласите-ка требуемые скорости после ограничения (до - я так понимаю, 100Мбит/с). Можно, кстати, поступить еще одинм занятным способом - соединить 2 микросхемы свичей (например, RTL8305) через MII-интерфейс, при этом затактировав его (интерфейс) c частотой, равной требуемой битовой скорости, деленной на 4. Это решение из недорогих. А если работать с Half-Duplex, то для шейпинга можно обойтись простенькой CPLD, просто регулярно удавливая канал передачей Back-Pressure. Вообще дешево выйдет. Я бы реализовывал именно так - ну неравнодушен я к экстремально дешевым решениям  В любом случае, я бы на Вашем месте крепко подумал вот над чем - если Ваше устройство получается дороже $30, то проще взять какой-нибудь вайфай/адсл-роутер с линухом и банально поднять на нем шейпер.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 13 2009, 05:55
|

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

|
Цитата С Half-Duplex не совсем понятно, получается, что пользовательские устройства через мой канал связи между собой в Half-Duplex обмениваться будут? Нет, это мне не подходит. Вы не забыли, что 1GE - это полудуплекс? Так что не надо бояться. Кстати, если у Вас есть канал связи, значит должны быть уже заготовленные FIFO, иначе, спрашивается, как Вы согласовываете скорости в канале и в эзернете. Вот их и пользуйте. Или у Вас прозрачная трансляция в канале? Тогда конечно, полудуплекс не прокатит из-за ограничения на время прохождения туда-обратно. А вообще решение изменения скорости передачи в эзернете очень удобно решается на микросхемах свичей с мак-интерфейсом - можно любую желаемую получить без проблем.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 13 2009, 06:28
|

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

|
Цитата(Rst7 @ Apr 13 2009, 09:55)  Вы не забыли, что 1GE - это полудуплекс? Так что не надо бояться.
Кстати, если у Вас есть канал связи, значит должны быть уже заготовленные FIFO, иначе, спрашивается, как Вы согласовываете скорости в канале и в эзернете. Вот их и пользуйте.
Или у Вас прозрачная трансляция в канале? Тогда конечно, полудуплекс не прокатит из-за ограничения на время прохождения туда-обратно.
А вообще решение изменения скорости передачи в эзернете очень удобно решается на микросхемах свичей с мак-интерфейсом - можно любую желаемую получить без проблем. Fifo конечно есть, но не большое, по поводу свчей подумаю. Кинте, пожалуйста, названием и сколько они примерно стоят?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|