powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как выжать весь гигабит по UDP?
25 сообщений из 162, страница 3 из 7
Как выжать весь гигабит по UDP?
    #38896438
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК. Я понял. Значит для клиентской части измерителя необходимо указывать -b

Но в этом варианте
Код: plaintext
1.
iperf -c 192.168.0.1 -u -b 500m -w 3m



была достигнута скорость 511 Mbits/sec при отправке пакетов по UDP.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПосмотри как тут.

http://openmaniak.com/iperf.php

Вообще минимум параметров.
Ты там TCP пролистай, про UDP поищи.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
...
Client side:

#iperf -c 10.1.1.1 -u -b 10m
...

Server side:

#iperf -s -u -i 1 

я тут добавил только -w 3m - это размер буфера.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896441
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну значит твоё приложение как-то работает с UDP по другому.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896447
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы для начала создал идеальный тракт.

2 линукс-машинки соединил-бы обратным патч-кордом.
Проверил что карточки включены в гигабит. Погонял-бы
эту утилиту iperf. Убедился-бы что там действительно
достигается скорость хотя-бы порядка приближённого
к паспортному.

И потом аккуратно подключил-бы одну Windows-машинку
в этот измерительный стенд.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896449
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОК. Я понял. Значит для клиентской части измерителя необходимо указывать -b

Но в этом варианте
Код: plaintext
1.
iperf -c 192.168.0.1 -u -b 500m -w 3m



была достигнута скорость 511 Mbits/sec при отправке пакетов по UDP.
Затестил на отправки 500 Мб. Моя посылалка в неразогнаном виде дала 830-840 :)
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896464
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы почитал форумы по Winsock2. Там есть какой-то клин. Limitation. И его наверняка где-то обсуждали.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896492
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу значит твоё приложение как-то работает с UDP по другому.
Я в первом посте писал как работает. Первый пакет окна подтверждается. Окно 32 пакета.
maytonЯ-бы для начала создал идеальный тракт...
Надоело уже. выжал 80% и нормально. Это не 8% как было. Завтра еще затестю iperf`ом скорость через TCP, для сравнения, сразу не догадался.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896494
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только не мучай меня загадками. Когда пишешь "Затестил на отправки" - я терзаюсь.
Чем затестил? Своим софтом?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896553
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТолько не мучай меня загадками. Когда пишешь "Затестил на отправки" - я терзаюсь.
Чем затестил? Своим софтом?
Своим. Те же два компа, тоже самое направление передачи что и iperf`ом.
Условия почти одинаковые, в обоих случаях сетка была не нагружена.

Алгоритм не скрываю (но реализацию не дам, т.к. там еще много чего намешано, не выковырять).

Алгоритм такой: первый пакет описание сообщения (размер пакета, количество пакетов, контрольная сумма и т.п.), далее отправитель шлет окна фиксированного размера (начальное 8 пакетов) каждые 20 мс. В первом пакете окна устанавливает флаг запроса подтверждения. Получатель при получении окна с флагом отправляет подтверждение и в нем указывает список недостающих пакетов. Оправитель приняв подтверждение меняет окно (нет потерь окно+=окно/5+1, есть потери окно-=количество потеряных в окне). В случае запроса потерянных они сразу же высылаются в следующем окне. По результату получения всех пакетов получатель шлет подтверждение приема. Отправитель получив подтверждение останавливает отправку.
В случае быстрой доставки (локалка например) интервал не выдерживается, подтверждение первого пакета последнего отправленного окна сразу запускает отправку следующего.

Суть описал, но есть ньюансы реализации. Главное не вносить никакой синхронности (долго шел до осознания этой банальности). Я ее внес только для ускорения в локалке. Если прохождение пакета до получателя и обратно 50 мс, и при этом ждать подтверждения каждого окна, то эти 50 мс станут основным тормозом.

Почему именно так (из наблюдений):
1. Подтверждать первый пакет - обычно он не теряется, теряется хвост если слишком много пакетов не входит в буфер очередного шлюза.
2. Интервал 20 мс - долго думал, с одной стороны кривые часы (в XP шаг 10 мс), с другой квант времени выделяемый процессу виндовсом, с третьей разные скорости каналов (12 кбайт/с GPRS и гигабит в локалке), с четвертой потери на длинных окнах (в магистральных каналах на окне из 48 пакетов уже потери начинаются). Вобщем выбрал максимум 32 пакета за 20 мс (2,3 мбайт/с), минимум 1 (72,5 кбайт/с). Ктати это и привело к поднятию темы, т.к. за 20 мс не уходило 32 пакета.
3. Размер пакета - ставлю флаг запрета дефрагментации пакета (IP_DONTFRAGMENT) и при подключении шлю до сервера проверки разного размера (у серверов в инете 1472 гарантированно), максимально подтвержденная - максимальный размер пакета (в диапазоне 1372-1472). Отправка данных размером минимума из максимумов отправителя и получателя.

Вобщем неплохо работает как для быстрых и медленных каналов, так и для очень далеких точек на быстром канале.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896561
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собсно ... software которое работает на UDP - толерантно даже к потерям первого пакета.
Если это был фрейм mp3, или кадр видео-трансляции то и хер с ним. Восстановится с 100-го пакета
заново. Главное чтобы FSM восстанавливалась в некое "нулевое" состояние периодически.
Если это видео- или аудио- кодек то сам транслируемый сигнал должен периодически
формировать мета-информацию.

Что у тебя за трафик? Что за алгоритм - непонятно. Может тебе не нужен UDP ?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896572
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто у тебя за трафик? Что за алгоритм - непонятно. Может тебе не нужен UDP ?

Тут писал 17343378
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896579
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще это распределенная система обмена сообщениями любого размера. Шина данных. Без какого-либо центрального сервера. Т.е. есть группа серверов готовых соединить двух абонентов, при том что падение одного-двух серверов никак не влияет на работу всей системы. Абсолютно распределенная система со 100% отказоустойчивостью.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896587
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonЧто у тебя за трафик? Что за алгоритм - непонятно. Может тебе не нужен UDP ?

Тут писал 17343378

Я не понимаю как тебе поможет UDP? Ты пишешь про GSM и гигабит? Чувак ! жиэсэм работает на килобитах.
На жалких (!) килобитах. Ты даже не почувствуешь улучшений. Только усложнишь протокол контроля
над приёмом.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896611
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima Tпропущено...


Тут писал 17343378

Я не понимаю как тебе поможет UDP? Ты пишешь про GSM и гигабит? Чувак ! жиэсэм работает на килобитах.
На жалких (!) килобитах. Ты даже не почувствуешь улучшений. Только усложнишь протокол контроля
над приёмом.
У этих жалких килобитов большие буферы для кэша, хуже что они тупо рубят UDP, 1-2 пакета из окна проходят. Это 2-3% клиентов, можно на них пока просто забить, потом сделаю TCP туннель до сервера в инете. Тоже писал 17343472

Наверно надо главное рассказать, иначе просто непонятно задлянафига эта хрень. А главное вот в чем: есть приложение (точнее набор приложений) через которое работают мои клиенты со своими котрагентами (тоже мои клиенты), работают ежедневно 24 часа в сутки. Сейчас весь обмен между всеми идет через центральный сервер. Стоит ему упасть - через 5-10 минут все три телефона техподдержки звонят не умолкая, на каждый звонок дается отработанный ответ "попробуйте повторить через 15-20 минут" и ложится трубка чтобы она тут же зазвонила и это сказать следующему. Больше чем на 30-40 минут сервер не падает. Если он не падает, то звонков всего 5-10 в день. У меня техподдержка изучила весь инет и все фильмы посмотрела на работе :)
Но однажды DDoS`ом сервер положили на сутки, точнее меньше, но стандартная реакция провайдеров в подобных случаях "извините, но нам не нужен такой клиент", т.е. идите лесом и не мешайте нам работать. Вот тогда я и пришел к понимаю того что нужна не скорость а надежность. 100% надежность неубиваемая ничем.
Сейчас проблемы частично порешаны дублированием большинства подсистем, но это полумеры.
Рост клиентов и обрастание сервисами требующими трафика тоже привело к тому что сервер в пиковые моменты перегружен. Трафик через него 10 Тб в сутки. А есть потребность еще нагрузку увеличить.
А тут и надежность, и трафик, и масштабируемость неограниченная.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896699
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть ты хочешь сказать что пишешь "мега-распределённую" 100% доступную систему
которая каким-то чудесным образом решает проблемы "падающего" центрального сервера?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896767
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, это продолжение темы http://www.sql.ru/forum/1124178/p2p-po-udp?hl=
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896782
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТоесть ты хочешь сказать что пишешь "мега-распределённую" 100% доступную систему
которая каким-то чудесным образом решает проблемы "падающего" центрального сервера?
Да. Только не любого центрального сервера, а моего. По сути это просто хранилище для обмена документами. Всегда доступный файлообменник с логированием обмена и веб-мордой для администрирования доступа.
Если утрированно описать: есть два типа пользователей, пользователь типа А получает некоторую инфу от пользователей типа Б, работает с ней и результат отправляет Б.
Проблемы выхода в инет на стороне А - решает А. На стороне Б - Б. Но А не интересует что у Б проблемы. Пользователь А может захотеть поработать в любой момент, поэтому пользователь Б регулярно освежает свою инфу на сервере.

В идеале А должен обращаться напрямую к Б. Сервер нужен только потому что пользователи Б не всегда доступны.

И инфа разная: одну главное принять и гарантированно доставить, другая становится неактуальна через несколько минут, третья - несколько миллионов файликов из которых раз в год может понадобится 5-10, но очень срочно, четвертая ...

По сути мне нужна система обмена сообщениями произвольного размера. Начал с джабера, там проблема с размерами (100 кб очень много), изучал очереди сообщений (разные *MQ), там тоже не совсем то, а потом появилась мысль чем UDP-пакет не сообщение? :)

Изначально все строилось под диалап, т.е. зацепился-скачал/отправил-отцепился, сегодня все на выделенках сидят. Тут уже морально устарел мой сервер, пора менять архитектуру.

обещанный тест iperf по TCP
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
C:\Download\iperf-2.0.5-3-win32>iperf.exe -c 192.168.0.1
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 63.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.45 port 49292 connected with 192.168.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   711 MBytes   597 Mbits/sec


С:\Download\iperf-2.0.5-3-win32>iperf.exe -c 192.168.0.1 -w 3m
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 3.00 MByte
------------------------------------------------------------
[  3] local 192.168.0.45 port 49270 connected with 192.168.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.11 GBytes   951 Mbits/sec
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896786
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneЯ так понимаю, это продолжение темы http://www.sql.ru/forum/1124178/p2p-po-udp?hl=
Нет. Тут и там разные части одной темы. Тот пока не реализованный. Заготовка для версии 2.0 :)
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896802
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А работа с документами предполгает только чтение?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896819
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА работа с документами предполгает только чтение?
Да. Чтение имеющихся и создание новых.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896827
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я о другом. Могут ли одновременно два пользователя открыть 1 документ и редактировать его?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896834
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ о другом. Могут ли одновременно два пользователя открыть 1 документ и редактировать его?
Нет. После создания и отправки документ никем не правится. По аналогии с платежкой: отправил в банк - править нельзя. Захотел отменить (пока банк не успел деньги списать) - шли документ "отмена платежа" и т.д.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896851
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПо сути мне нужна система обмена сообщениями произвольного размера.По описанию сильно на E-mail похоже.
Правда, если реализовать через E-mail, то у каждого абонента должен быть свой почтовый сервер, хотя бы простенький, иначе p2p не получится.
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896855
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПо описанию сильно на E-mail похоже.
или просто UUCP ?
...
Рейтинг: 0 / 0
Как выжать весь гигабит по UDP?
    #38896856
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonЯ о другом. Могут ли одновременно два пользователя открыть 1 документ и редактировать его?
Нет. После создания и отправки документ никем не правится. По аналогии с платежкой: отправил в банк - править нельзя. Захотел отменить (пока банк не успел деньги списать) - шли документ "отмена платежа" и т.д.
В твоей системе допускается "дубль" документа? Ну тоесть док который создан 1 раз но дошёл дважды?
...
Рейтинг: 0 / 0
25 сообщений из 162, страница 3 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как выжать весь гигабит по UDP?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]