Странные задержки
От: metacoder Россия http://blogmyxa.ru,
Дата: 20.09.10 13:54
Оценка:
Привет всем! Поднимаю проект годовой давности, который пришлось заморозить из за странных глюков. Попытаюсь описать все как можно подробнее.

Есть две машины под управлением Windows связаны гигабитной сетью Ethernet. Программа на C# синхронно пишет и читает аудио трафик с переодичностью 8мс. Сниффер показывает, что все пакеты доставляются через сеть вовремя. Размер пакета ~512байт, время пересылки меньше 1мс. Тест встроенный в саму программу показывает задержки с неравным периодом примерно на 10-20мс, а иногда даже 200мс. После чего пакеты приходят все вместе (неактуальные программа отбрасывает). Локальный трафик (loopback) при этом проигрывается без задержек, что может свидетельствовать о то, что сам процесс не тормозит. Пробовали протоколы UDP и RTP. Результат идентичен.

Резюмируя можно сказать, что сам процесс не тормозит, трафик доставляется на машину вовремя, а вот в программу поступает с непонятными задержками. При этом звук искажается через каждые ~30 секунд. Искажение длится тоже ~30 секунд (становится как-бы электронным), а затем опять становится нормальным. Что бы это могло быть?
Re: Странные задержки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 20.09.10 18:57
Оценка:
Здравствуйте, metacoder, Вы писали:

M>Привет всем! Поднимаю проект годовой давности, который пришлось заморозить из за странных глюков. Попытаюсь описать все как можно подробнее.


M>Есть две машины под управлением Windows связаны гигабитной сетью Ethernet. Программа на C# синхронно пишет и читает аудио трафик с переодичностью 8мс. Сниффер показывает, что все пакеты доставляются через сеть вовремя. Размер пакета ~512байт, время пересылки меньше 1мс. Тест встроенный в саму программу показывает задержки с неравным периодом примерно на 10-20мс, а иногда даже 200мс. После чего пакеты приходят все вместе (неактуальные программа отбрасывает). Локальный трафик (loopback) при этом проигрывается без задержек, что может свидетельствовать о то, что сам процесс не тормозит. Пробовали протоколы UDP и RTP. Результат идентичен.


RTP обычно бегает поверх UDP (я не учитываю неживой на винде SCTP и отчаянные попытки спасти неизвестно что передачей RTP по TCP), так что его можно было не вспоминать.

Локальный трафик сразу доставляется в сокет получателя с пинком соответствующей задачи, поэтому это тоже ничего не значит, хотя может служить намёком на то, что проблема связана с внешней сетью. А вот тут начинаются интересности. Если сниффер всё показывает вовремя, то проблема по пути от сетевого драйвера до IP стека и далее до сокета получателя. Может, какой антивирус вмешивается или сверхумный файрволл с анализом трафика?

M>Резюмируя можно сказать, что сам процесс не тормозит, трафик доставляется на машину вовремя, а вот в программу поступает с непонятными задержками. При этом звук искажается через каждые ~30 секунд. Искажение длится тоже ~30 секунд (становится как-бы электронным), а затем опять становится нормальным. Что бы это могло быть?
The God is real, unless declared integer.
Re[2]: Странные задержки
От: metacoder Россия http://blogmyxa.ru,
Дата: 20.09.10 19:16
Оценка:
Здравствуйте, netch80, Вы писали:

N>RTP обычно бегает поверх UDP (я не учитываю неживой на винде SCTP и отчаянные попытки спасти неизвестно что передачей RTP по TCP), так что его можно было не вспоминать.


N>Локальный трафик сразу доставляется в сокет получателя с пинком соответствующей задачи, поэтому это тоже ничего не значит, хотя может служить намёком на то, что проблема связана с внешней сетью. А вот тут начинаются интересности. Если сниффер всё показывает вовремя, то проблема по пути от сетевого драйвера до IP стека и далее до сокета получателя. Может, какой антивирус вмешивается или сверхумный файрволл с анализом трафика?


И правда есть и антивирусы и файервол есть. Спасибо большое, попробую без них.
Re[2]: Странные задержки
От: metacoder Россия http://blogmyxa.ru,
Дата: 20.09.10 19:18
Оценка:
Здравствуйте, netch80, Вы писали:

N>RTP обычно бегает поверх UDP (я не учитываю неживой на винде SCTP и отчаянные попытки спасти неизвестно что передачей RTP по TCP), так что его можно было не вспоминать.


N>Локальный трафик сразу доставляется в сокет получателя с пинком соответствующей задачи, поэтому это тоже ничего не значит, хотя может служить намёком на то, что проблема связана с внешней сетью. А вот тут начинаются интересности. Если сниффер всё показывает вовремя, то проблема по пути от сетевого драйвера до IP стека и далее до сокета получателя. Может, какой антивирус вмешивается или сверхумный файрволл с анализом трафика?


Правда были и антивирусы и файэрволы. Буду пробовать без них, спасибо большое!
Re: Странные задержки
От: Mountaineer  
Дата: 20.09.10 19:37
Оценка:
Здравствуйте, metacoder, Вы писали:

M>Привет всем! Поднимаю проект годовой давности, который пришлось заморозить из за странных глюков. Попытаюсь описать все как можно подробнее.


M>Есть две машины под управлением Windows связаны гигабитной сетью Ethernet. Программа на C# синхронно пишет и читает аудио трафик с переодичностью 8мс. Сниффер показывает, что все пакеты доставляются через сеть вовремя. Размер пакета ~512байт, время пересылки меньше 1мс. Тест встроенный в саму программу показывает задержки с неравным периодом примерно на 10-20мс, а иногда даже 200мс. После чего пакеты приходят все вместе (неактуальные программа отбрасывает). Локальный трафик (loopback) при этом проигрывается без задержек, что может свидетельствовать о то, что сам процесс не тормозит. Пробовали протоколы UDP и RTP. Результат идентичен.


M>Резюмируя можно сказать, что сам процесс не тормозит, трафик доставляется на машину вовремя, а вот в программу поступает с непонятными задержками. При этом звук искажается через каждые ~30 секунд. Искажение длится тоже ~30 секунд (становится как-бы электронным), а затем опять становится нормальным. Что бы это могло быть?


Возможно стоит посмотреть на проблему с другой стороны.
Проблема может быть из за неточности функций работы со временем. 10-20мс вполне может быть погрешностью timeGetTime().
Сталкивался с такой проблемой при разработке игр, там погрешность в 20мс часто нежелательна. Решалось с помощью использования ф-ций для точного измерения времени(напр. QueryPerformanceCounter()), сглаживанием полученных значений времени / повышением приоритета приложения.
Re: Странные задержки
От: ononim  
Дата: 21.09.10 10:27
Оценка:
M>Резюмируя можно сказать, что сам процесс не тормозит, трафик доставляется на машину вовремя, а вот в программу поступает с непонятными задержками. При этом звук искажается через каждые ~30 секунд. Искажение длится тоже ~30 секунд (становится как-бы электронным), а затем опять становится нормальным. Что бы это могло быть?
а что, нельзя добавить в программу буферизацию входящих данных хотябы на секунду, чтобы меньше зависеть от задержек?
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.