Форум программистов, компьютерный форум CyberForum.ru

Быстрая передача udp пакетов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 14:08     Быстрая передача udp пакетов #1
Есть задача передать udp пакеты, как можно быстрее. Точнее, данные 1024*768 байт должны передаваться за 5 мс, сейчас добился скорости в 17мс, размеры пакетов могут быть любыми (сейчас 512). Каким образом можно ускорить передачу в 3 раза? Каким способом осуществляется асинхронная передача пакетов?
Использую Visual Studio 13, на windows 7, библиотека winsock2.h
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 14:08     Быстрая передача udp пакетов
Посмотрите здесь:

C++ Быстрая сортировка
C++ Быстрая сортировка
C++ Шифрование трафика (пакетов)
C++ Быстрая сортировка
C++ Быстрая сортировка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 14:13     Быстрая передача udp пакетов #2
У тебя получается больше гигабита в секунду, а есть ведь паузы между пакетами, коллизии, другие пакеты.

Добавлено через 2 минуты
Если стандарт не тянет, то фиг чего получится. На гигабит эзенет, например, нельзя даже ровно гигабит получить, кроме как за время передачи отдельно взятого пакета.
WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 14:19  [ТС]     Быстрая передача udp пакетов #3
Больше гигабита? Как вы так посчитали?(1024*768*8/(17*10^-3) = 300Мb/s), сеть у меня 10Gb/s, и подключена напрямую к плате(FPGA), т.е. лишних пакетов должно быть минимум.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 14:53     Быстрая передача udp пакетов #4
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1024*768*8}{5*10^{-3}}=1258291200.

Добавлено через 1 минуту
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1024*768*8}{17*10^{-3}}=370085647, но эта скорость тебя не устраивает.

Добавлено через 7 минут
Цитата Сообщение от WeDZminxxx Посмотреть сообщение
т.е. лишних пакетов должно быть минимум.
А объявления серверов каждые 5 минут, а ответы получателя хоть иногда, а просто попытки юзверей зайти на расшаренный каталог, или принтер? Прямо к плате - это хорошо. А плата куда? Шнуром в порт коммутатора? Так вот, с него встречные пакеты и свалятся. А ещё если назначение за другим коммутатором, то узкое место будет на кабеле между ними и если кто то с того коммутатора хочет зайти в расшаренный ресурс даже на другой машине, но на твоём коммутаторе, то скорость упадёт. А ещё коммутатор в обще случае может и не быть не блокирующим, тогда при большом трафике разные пары портов делят между собой скорость внутренней магистрали и доля каждой оказывается меньше, чем максимальная скорость, на которой работает данный коммутатор.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 16:56     Быстрая передача udp пакетов #5
Попробую предположить, что 1024x768 это изображение. Если это так, то в таких случаях логичнее применить какое-нибудь быстрое кодирование с потерей качества или без. Это значительно уменьшит размер передаваемых данных, что прямо пропорционально увеличит скорость их передачи. Такое кодирование легко выполняется в реальном времени на современных ПК.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 16:58     Быстрая передача udp пакетов #6
Если это и изображение, то двухсотпятидесятишестицветное.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 17:05     Быстрая передача udp пакетов #7
Цитата Сообщение от taras atavin Посмотреть сообщение
Если это и изображение, то двухсотпятидесятишестицветное.
Что это меняет? Его нельзя сжать?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 17:09     Быстрая передача udp пакетов #8
Это меняет выбор алгоритма сжатия. Джипег, например, не подойдёт.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 17:39     Быстрая передача udp пакетов #9
WeDZminxxx, кстати, 17 мс на кадр - это 58,82352941176471 кадров в секунду (почти частота вертикальной развёртки бюджетного монитора).
5 мс на кадр - это 200 кадров в секунду.
Собственно, вопрос.. Тебе куда столько?

Цитата Сообщение от taras atavin Посмотреть сообщение
Это меняет выбор алгоритма сжатия. Джипег, например, не подойдёт.
А никто про конкретный алгоритм и не говорил.

Еще один интересный момент. Как пример, в современных сетях интернет, с подключением 100Мб, пинг от провайдера до абонента, или от абонента до абонента внутри сети идет ~ 5 мс (между рабочими станциями, в роли которых идут обычные бюджетные ПК). При этом размер пакета равен 32 байта.
Ты так все свои 10Gb/s загрузишь, на другое "места" не останется..
WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 18:08  [ТС]     Быстрая передача udp пакетов #10
Цитата Сообщение от castaway Посмотреть сообщение
Попробую предположить, что 1024x768 это изображение
Да, это кадр видео, но плата обрабатывает сырое видео - требование. Поэтому сжимать нельзя, нужно 14(пока 8) битное изображение в прогрессивной развертке.
Цитата Сообщение от taras atavin Посмотреть сообщение
Если это и изображение, то двухсотпятидесятишестицветное.
Изображение в градациях серого, от 0 до 255, что требует 8 бит.
Цитата Сообщение от taras atavin Посмотреть сообщение
но эта скорость тебя не устраивает.
Не устраивает, минимум 10ms
Цитата Сообщение от taras atavin Посмотреть сообщение
А объявления серверов каждые 5 минут, а
...
Цитата Сообщение от taras atavin Посмотреть сообщение
ь, на которой работает данный коммутатор.
Если что-то и есть, то только запросы windows в сеть. Плата отправлять в ethernet вообще не умеет, работает на прием(после платы cpu через PCIe). Других пользователей в сети нет, только винда(то бишь сетевуха, которой пользуюсь только я) и плата(которая не отправляет пакеты в сеть)
Цитата Сообщение от castaway Посмотреть сообщение
кстати, 17 мс на кадр - это 58,82352941176471 кадров в секунду (почти частота вертикальной развёртки бюджетного монитора).
5 мс на кадр - это 200 кадров в секунду.
Требование - 100 кадров в секунду(10ms), захотел просто запас еще на 100 кадров, так как может появиться еще один пользователь аналогичный данному отправщику.
Цитата Сообщение от castaway Посмотреть сообщение
Ты так все свои 10Gb/s загрузишь, на другое "места" не останется..
ничего другого и не должно быть
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 18:18     Быстрая передача udp пакетов #11
WeDZminxxx, а устройство захвата видео может выдать 200 FPS?
Цитата Сообщение от WeDZminxxx Посмотреть сообщение
ничего другого и не должно быть
Тогда твоя проблема - либо алгоритм программы, либо железо, либо всё вместе.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 18:23     Быстрая передача udp пакетов #12
Кстати, если заведомо известно что связь стабильная, то есть смысл значительно увеличить MTU.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 18:24     Быстрая передача udp пакетов #13
Цитата Сообщение от WeDZminxxx Посмотреть сообщение
ничего другого и не должно быть
То есть сети и не должно быть. Эйси. Выдерни шнур и успокойся.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 18:25     Быстрая передача udp пакетов #14
Цитата Сообщение от WeDZminxxx Посмотреть сообщение
Плата отправлять в ethernet вообще не умеет, работает на прием(после платы cpu через PCIe). Других пользователей в сети нет, только винда(то бишь сетевуха, которой пользуюсь только я) и плата(которая не отправляет пакеты в сеть)
Смысл такой платы? Она не в сети и её ни кто не видит. Ни кто ни когда даже не узнает, на каком порту коммутатора он вообще сидит.
WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 18:30  [ТС]     Быстрая передача udp пакетов #15
Цитата Сообщение от castaway Посмотреть сообщение
а устройство захвата видео может выдать 200 FPS?
выдает кадр за 5ms и 5ms ждет, потом отправляет следующий кадр, поэтому к симулятору такие требования
Цитата Сообщение от castaway Посмотреть сообщение
Тогда твоя проблема - либо алгоритм программы, либо железо, либо всё вместе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        for (int ii = 0; ii<768; ii++)
        {
            for (int kk = 0; kk<max_kk; kk++)
            {
            short b = ((ii * max_kk) + kk);
                rtp[ii * max_kk + kk].header.seq = b << 8 | b >> 8;// + 256;
                if ((ii == 767) && (kk == (max_kk-1)))
                    rtp[ii * 1 + kk].header.word1 = 57488;
            int bs=send(my_sock, (char*)&rtp[ii * max_kk + kk], (width_1 + 20), 0 );
                if (bs == SOCKET_ERROR)//, (SOCKADDR *) &si_other, slen) == SOCKET_ERROR)
                {
                    printf("send() failed with error code : %d", WSAGetLastError());
                    exit(EXIT_FAILURE);
                }
            }
        }
max_kk = 2
C++
1
2
        packet* rtp;
        rtp = new packet[768 * max_kk];
структура packet содержит заголовок rtp пакета - 20 байт
передача идет 20байт заголовка + 512байт данных - пол строки
Пол строки выбрано так как показывает наибольшую скорость
castaway
19.11.2014, 18:34
  #16

Не по теме:

taras atavin, Тарас, ты действительно разбираешься в этом?

WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 18:34  [ТС]     Быстрая передача udp пакетов #17
Цитата Сообщение от taras atavin Посмотреть сообщение
Смысл такой платы?
Она обрабатывает видео
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2014, 18:40     Быстрая передача udp пакетов #18
Не получая его? Интересно, как ты на вникуда получил хоть что то.

Добавлено через 3 минуты
Чтоб хотябы знать, где она сидит, то есть куда именно для неё отправлять видео, она должна отправить хоть что то. Хотябы служебные пакеты. И если в сети только она, то кто же ей видео то посылает? Она по условию не умеет.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
19.11.2014, 18:44     Быстрая передача udp пакетов #19
Цитата Сообщение от WeDZminxxx Посмотреть сообщение
выдает кадр за 5ms и 5ms ждет, потом отправляет следующий кадр
Ок. 100 кадров в секунду, больше "не выжать".

По поводу отрывка кода - он ужасен, правда. Лишнее условие в цикле, лишние математические операции...
Отправляешь по 2048 байт.. блин. Я даже не знаю что посоветовать...
Пробовал отправлять изображение целиком?

Цитата Сообщение от castaway Посмотреть сообщение
Кстати, если заведомо известно что связь стабильная, то есть смысл значительно увеличить MTU.
?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2014, 18:58     Быстрая передача udp пакетов
Еще ссылки по теме:

UDP отправка и прием пакетов C++
Быстрая сортировка C++
C++ Быстрая сортировка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
WeDZminxxx
2 / 2 / 1
Регистрация: 18.04.2014
Сообщений: 26
19.11.2014, 18:58  [ТС]     Быстрая передача udp пакетов #20
С чего вы взяли что она не получает видео? У платы есть ip, mac и порт, прошиты железно, что бы передать на плату, я забиваю arp таблицу вручную, поэтому для винды все хорошо. Она даже не спрашивает кто это.
Yandex
Объявления
19.11.2014, 18:58     Быстрая передача udp пакетов
Ответ Создать тему
Опции темы

Текущее время: 02:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru