Re[9]: Частота отправки данных в UDP
От: fddima  
Дата: 08.05.12 17:31
Оценка:
Здравствуйте, ononim, Вы писали:

_>>маршрутизатор должен работать на уровне IP пакетов.

O>Кроме обычных маршрутизаторов еще бывают IDS/IPS, NAT'ы иногда встречаются..
Это да, про них совсем забылось, но как-то с трудом верится, что бы по произвольному порту какое-нибудь IDS/IPS вообще напрягался, в случае с торрентами, например.
Хотя конечно не в курсе.
Re[3]: Частота отправки данных в UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 08.05.12 17:38
Оценка:
Здравствуйте, ononim, Вы писали:

O>То есть еще как может. Желающие найти потенциальные физиологические причины тому — могут покопаться в потрохах всех роутеров существующих в мире, но я бы просто добавил контроль на уровне приложенческого протокола — это проще.


Контролировать надо, спору нет, но вот так чтобы в первом же тесте, написанном и запущенном на скорую руку, такое полезло — простите, не верю. Вероятность очень мала.
Re[9]: Частота отправки данных в UDP
От: avp_  
Дата: 08.05.12 17:58
Оценка:
ononim wrote:

> Кроме обычных маршрутизаторов еще бывают IDS/IPS, NAT'ы иногда встречаются..


Это да, но тут речь о провайдерах "у которых всё колом встаёт". Разве
есть такие провайдеры которые тот же NAT используют для клиентов?
Posted via RSDN NNTP Server 2.1 beta
Re[10]: Частота отправки данных в UDP
От: ononim  
Дата: 08.05.12 18:06
Оценка:
>> Кроме обычных маршрутизаторов еще бывают IDS/IPS, NAT'ы иногда встречаются..
_>Это да, но тут речь о провайдерах "у которых всё колом встаёт". Разве
_>есть такие провайдеры которые тот же NAT используют для клиентов?
В смысле бывают ли провайдеры, которые не раздают белые IP адреса налево и направо? да. по кр мере у нас в Беларуси
Как много веселых ребят, и все делают велосипед...
Re[11]: Частота отправки данных в UDP
От: fddima  
Дата: 08.05.12 19:00
Оценка:
Здравствуйте, ononim, Вы писали:

_>>Это да, но тут речь о провайдерах "у которых всё колом встаёт". Разве

_>>есть такие провайдеры которые тот же NAT используют для клиентов?
O>В смысле бывают ли провайдеры, которые не раздают белые IP адреса налево и направо? да. по кр мере у нас в Беларуси
А при чём тут "белость" IP адресов? Таблицы редиректов при UDP NAT — это никак не огромные структуры данных, скажем больше — они влезут в память обычной рабочей станции, если шлюз будет обслуживать весь IPv4 мир.
Re: Частота отправки данных в UDP
От: sand7e Россия  
Дата: 09.05.12 10:32
Оценка:
Здравствуйте, Alex_Logvinenko, Вы писали:



A_L>В связи с этим вопрос: где может быть баг и какая максимальная частота отправки сообщений для UDP?




Приемный буфер забивается, самые старые удаляются. В некоторых *nix один буфер 64К на систему.
Если приемник спит, а передатчик флудит — получается описанная картина.
Re: Частота отправки данных в UDP
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 10.05.12 14:13
Оценка:
Здравствуйте, Alex_Logvinenko, Вы писали:

A_L>Всем привет!


A_L>Написал приложение (клиент-сервер (C++/Linux(Ubuntu))), использую для асинхронности epoll и неблокирующие сокеты. Аналогичное приложение на Windows, только там WinSock2 и IOCP для асинхронности. В общем никогда не думал, что столкнусь с таким багом: мне сообщений приходит или больше, или меньше, чем я их отослал.


A_L>Теперь подробнее: есть модуль, который разбивает большие объемы данных на более мелкие (по 1000 байт) и отсылает их в цикле (сервер), этот же модуль (на клиенте) склеивает данные и предоставляет пользователю готовое сообщение (например при отсылке картинки). Модуль работает нормально, тестировал без сетевой части.

A_L>Как только начал передавать данные по сети — появились баги.

A_L>Долго не мог понять в чем дело, потом написал тест для сокетов: 2 UDP сокета в цикле отсылают данные друг-другу, а при обработке принятия данных на конкретный сокет — сделал ранее 2 переменные (int), обнулил их и делаю инкремент определенной переменной. Например: отсылаю 1000 раз на каждый сокет по 1024 байта. Тест провален. В результате переменные не равны 1000, а они меньше (в epoll) и больше (в IOCP) этого значения.


A_L>При чем: если поставить после каждой отсылки delay или cout/printf — все работает без сбоев!


A_L>В связи с этим вопрос: где может быть баг и какая максимальная частота отправки сообщений для UDP?


A_L>Спасибо!


Тут уже отписались о твоём непонимании протокола UDP.
На мой взгляд, это бага твоего протокола передачи данных.
Я бы сделал протокол обмена по другому. Создал бы два канала 1 — TCP для управления, второй UDP, дя передачи данных. Делил бы файл на n равных частей причём каждую часть сделал бы кратным (UDP_MAX_PAYLOAD — 8 байт) (4 байта на id пакета и 4 байта на номер части. Это всё вкладывается в пакет за данными). По каналу управления будешь управлять сессией передачи данных, а по каналу данных будешь передавать сами данные. Алгоритм передачи прост. По TCP сообщаешь, id части, которую будешь передавать и после подтверждения о готовности, начинаешь слать данные. Разные части данных можно гнать в несколько потоков. На основе этой схемы можно так же реализовать QoS и уменьшать количество UDP пакетов в ед. времени при высокой частоте запросов на повторную отправку UDP пакета. Канал для управления сессии можно сделать так же на UDP, но при этом появятся проблемы иного рода. В общем, идея, я думаю, ясна.
Sic luceat lux!
Re[2]: Частота отправки данных в UDP
От: Nikolay_Ch Россия  
Дата: 10.05.12 17:44
Оценка:
Здравствуйте, Kernan, Вы писали:

K>На мой взгляд, это бага твоего протокола передачи данных.

А TCP зачем? Можно обойтись и одним UDP. К примеру, как делает TFTP...
Re[3]: Частота отправки данных в UDP
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 11.05.12 09:19
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, Kernan, Вы писали:


K>>На мой взгляд, это бага твоего протокола передачи данных.

N_C>А TCP зачем? Можно обойтись и одним UDP. К примеру, как делает TFTP...
Конечно. Но у тебя появятся проблемы с управлением сессией передачи данных. Например, если отвалится сеть, а клиент хочет дополучить данные, то придётся посылать запросы на досылку данных. Сколько таких запросов слать 10/20/100? В общем, получишь именно такие скользкие кейсы.
Sic luceat lux!
Re[4]: Частота отправки данных в UDP
От: Nikolay_Ch Россия  
Дата: 11.05.12 11:31
Оценка:
Здравствуйте, Kernan, Вы писали:

N_C>>А TCP зачем? Можно обойтись и одним UDP. К примеру, как делает TFTP...

K>Конечно. Но у тебя появятся проблемы с управлением сессией передачи данных. Например, если отвалится сеть, а клиент хочет дополучить данные, то придётся посылать запросы на досылку данных. Сколько таких запросов слать 10/20/100? В общем, получишь именно такие скользкие кейсы.
Ну... Кхм, работать так-же, как и TCP. Раза три послать с интервалом в 30 секунд (или сколько там у него таймаут). Мне кажется это будет проще, чем использовать отдельное соединение TCP для каждого клиента.
Re[5]: Частота отправки данных в UDP
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 11.05.12 12:12
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, Kernan, Вы писали:


N_C>>>А TCP зачем? Можно обойтись и одним UDP. К примеру, как делает TFTP...

K>>Конечно. Но у тебя появятся проблемы с управлением сессией передачи данных. Например, если отвалится сеть, а клиент хочет дополучить данные, то придётся посылать запросы на досылку данных. Сколько таких запросов слать 10/20/100? В общем, получишь именно такие скользкие кейсы.
N_C>Ну... Кхм, работать так-же, как и TCP. Раза три послать с интервалом в 30 секунд (или сколько там у него таймаут). Мне кажется это будет проще, чем использовать отдельное соединение TCP для каждого клиента.
3 это мало. Скорее всего нужно будет заводить таймер с увеличивающимся интервалом, который как-то ограничен сверху и делать несколько ретрансмиттов на один управляющий UDP пакет. Просто это всё надо продумывать и реализовывать. По мне, так проще взять TCP и использовать его для начала.
Sic luceat lux!
Re[6]: Частота отправки данных в UDP
От: Nikolay_Ch Россия  
Дата: 11.05.12 17:25
Оценка:
Здравствуйте, Kernan, Вы писали:

K>3 это мало. Скорее всего нужно будет заводить таймер с увеличивающимся интервалом, который как-то ограничен сверху и делать несколько ретрансмиттов на один управляющий UDP пакет. Просто это всё надо продумывать и реализовывать. По мне, так проще взять TCP и использовать его для начала.

На мой взгляд смысла нет делать два канала — TCP и UDP... Если нужна надежность, сразу делать TCP и не маятся, если нужна скорость передачи и простота — UDP. С минимальными допилами UDP вполне можно использовать для относительно надежной передачи. В Вашем способе мы огребаем сложности и оверхеды TCP при том, что необходимо еще и синхронизировать каналы TCP и UDP. Что нам остается от UDP? При том, что скорость мы относительно не увеличиваем — нам же надо подтверждать все по TCP...
Re[12]: Частота отправки данных в UDP
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.05.12 19:32
Оценка:
Здравствуйте, fddima, Вы писали:

F> А при чём тут "белость" IP адресов? Таблицы редиректов при UDP NAT — это никак не огромные структуры данных, скажем больше — они влезут в память обычной рабочей станции, если шлюз будет обслуживать весь IPv4 мир.


Ну как сказать. На каждый отправленный пакет нужно хранить как минимум пару отправитель-получатель, т.е. 12 байт, плюс метку времени, пусть 4 байта. Для всего «IPv4 мира» это почти 64 гигабайта.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[13]: (-) значит - необычной рабочей станции :)
От: fddima  
Дата: 14.05.12 07:41
Оценка:
Re[14]: (-) значит - необычной рабочей станции :)
От: ononim  
Дата: 15.05.12 21:51
Оценка:
для получения представления так сказать о типичном (хотя уже немного устаревшем) "крутом" железе: http://www.wellit.ru/model.php?id=1303
Как много веселых ребят, и все делают велосипед...
Re[15]: (-) значит - необычной рабочей станции :)
От: fddima  
Дата: 15.05.12 22:30
Оценка:
Здравствуйте, ononim, Вы писали:

O>для получения представления так сказать о типичном (хотя уже немного устаревшем) "крутом" железе: http://www.wellit.ru/model.php?id=1303

О, ну как-то не впечатляет. Я лично работал с оборудованием и покруче, и как-то уже и давно что-ли получается. Я уже и забыл — как это что-нибудь админить.
А вопрос про UDP остался открытым. Какие-то доводы есть. Каких-то нехватает. В целом всё понятно. Просто несовершенный мир.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.