Схема устройства в первом приближении такая 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 Какие ещё есть варианты для решения этой задачи.
|