Здравствуйте, metacoder, Вы писали:
M>Привет всем! Поднимаю проект годовой давности, который пришлось заморозить из за странных глюков. Попытаюсь описать все как можно подробнее.
M>Есть две машины под управлением Windows связаны гигабитной сетью Ethernet. Программа на C# синхронно пишет и читает аудио трафик с переодичностью 8мс. Сниффер показывает, что все пакеты доставляются через сеть вовремя. Размер пакета ~512байт, время пересылки меньше 1мс. Тест встроенный в саму программу показывает задержки с неравным периодом примерно на 10-20мс, а иногда даже 200мс. После чего пакеты приходят все вместе (неактуальные программа отбрасывает). Локальный трафик (loopback) при этом проигрывается без задержек, что может свидетельствовать о то, что сам процесс не тормозит. Пробовали протоколы UDP и RTP. Результат идентичен.
RTP обычно бегает поверх UDP (я не учитываю неживой на винде SCTP и отчаянные попытки спасти неизвестно что передачей RTP по TCP), так что его можно было не вспоминать.
Локальный трафик сразу доставляется в сокет получателя с пинком соответствующей задачи, поэтому это тоже ничего не значит, хотя может служить намёком на то, что проблема связана с внешней сетью. А вот тут начинаются интересности. Если сниффер всё показывает вовремя, то проблема по пути от сетевого драйвера до IP стека и далее до сокета получателя. Может, какой антивирус вмешивается или сверхумный файрволл с анализом трафика?
M>Резюмируя можно сказать, что сам процесс не тормозит, трафик доставляется на машину вовремя, а вот в программу поступает с непонятными задержками. При этом звук искажается через каждые ~30 секунд. Искажение длится тоже ~30 секунд (становится как-бы электронным), а затем опять становится нормальным. Что бы это могло быть?