Перейти к содержанию
    

Ethernet + Stratix II + Nios

Здравствуйте. Подскажите пожалуйста как увеличить скорость Ethernet по TCP/IP протоколу.

 

Задача следующая: Есть пример Simple socket server, devboard Stratix II. Использую пример Standart.

SSS изменил след образом: убрал все task в RTOS, кроме инициализации. После инициализации добавил функцию

void sss_send_menu(SSSConn* conn)
{


  alt_u8  *a = TESTSTREAMTOAVALONMM_0_BASE; /* указатель на память с данными */
  alt_u8 strb; // сигнал на отправку пакета

while(1)
{
    IOWR_ALTERA_AVALON_PIO_DATA(SEND_PACKET_BASE, 0); // сигнал об отправке пакета, если единица
    strb = IORD_ALTERA_AVALON_PIO_DATA(STRB_PULSE_BASE); // считываю сигнал на отправку пакета, если 1




if(strb != 65)
{
    send(conn->fd, a, 1452, 0); // отправляю 1452 байта
}


IOWR_ALTERA_AVALON_PIO_DATA(SEND_PACKET_BASE, 1);// формирую сигнал для обнуления strb

}
  return;
}

 

Записываю в память в НИосе данные, после записи отправляю на компьютер. Данные следуют импульсами по 1024 байта каждые 850 мкс. То есть скорость достигается около 10 Мбит/с.

Ethernet на плате 10/100 Мбит. Тем не менее принимается только один пакет (импульс данных). Другие пакеты иногда можно наблюдать не по TCP протоколу, а по FMTP, но не 1452 байта. а разбитые ппакеты по 509 байт. Другими словами все импульсы подряд выслать не получается.

 

Что может влиять на скорость передачи данных? Есть предположение, что RTOS ограничивает быстродействие stack'а, выделяя на передачу пакета определенное время.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

размер буферов

размер окна ТСР

так же сетевое оборудование может от себя пакеты резать

 

также надо проверить кто считает контрольные суммы, это долгая задача

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста как увеличить скорость Ethernet по TCP/IP протоколу.

А какую скорость в итоге хотите, какими пакетами, весь ли TCP/IP протокол нужен?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какую скорость в итоге хотите, какими пакетами, весь ли TCP/IP протокол нужен?

 

Ethernet рассчитан на 100/10 Мбит/с. Пока получил только 3,5 Мбит/c. Необходимо догнать хотя бы до 20-30 Мбит/с. При попытке увеличить скорость, некоторые пакеты просто теряются (последовательно передаю четыре пакета, и сниффером контролирую содержимое принятых пакетов).

 

размер буферов

размер окна ТСР

так же сетевое оборудование может от себя пакеты резать

 

также надо проверить кто считает контрольные суммы, это долгая задача

Размер буфера оставил фиксированный 1458 байт, для предотвращения нарезки пакетов сервером (stratix II). Размер окна пока не варьировал. Хочу отказаться от RTOS но пока не понимаю как (мне кажется причина медленной скорости в RTOS???). Может подскажите можно ли переделать Simple socket server под UDP? как один из вариантов повышения скорости?

 

весь ли TCP/IP протокол нужен?

Поясните пожалуйста, что значит весь протокол? Я рассматривал в качестве начальной точки сокет Беркли, в SSS он и реализован. Если я правильно понял как то можно уменьшить структуру TCP/IP протокола? Пока на очереди идея только с UDP, сам stack в SSS обрезал до минимума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На осцилограф вывел два сигнала: сигнал о наличии пакета (голубым цветом по rising edge) и сигнал о том что пакет отправлен (желтым цветом)

Для 3.5 Мбит/с

post-77312-1393402738_thumb.png

 

Для 7 Мбит/c

post-77312-1393402770_thumb.png

 

На 7 Мбит/с происходит пропуск пакетов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...