Aleksei_Rostov 0 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба Здравствуйте. Подскажите пожалуйста как увеличить скорость 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'а, выделяя на передачу пакета определенное время. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба размер буферов размер окна ТСР так же сетевое оборудование может от себя пакеты резать также надо проверить кто считает контрольные суммы, это долгая задача Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serhiy_UA 1 24 февраля, 2014 Опубликовано 24 февраля, 2014 · Жалоба Подскажите пожалуйста как увеличить скорость Ethernet по TCP/IP протоколу. А какую скорость в итоге хотите, какими пакетами, весь ли TCP/IP протокол нужен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба А какую скорость в итоге хотите, какими пакетами, весь ли 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 обрезал до минимума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба На осцилограф вывел два сигнала: сигнал о наличии пакета (голубым цветом по rising edge) и сигнал о том что пакет отправлен (желтым цветом) Для 3.5 Мбит/с Для 7 Мбит/c На 7 Мбит/с происходит пропуск пакетов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться