Перейти к содержанию
    

Уже всю голову сломал. Проблема следующая - с ез-кита шлю на ПЭВМ UDP-пакеты (в каждом пакете 642 байта данных). Первые 13-14 пакетов принимаются нормально, затем начинают приниматься через 4-5. Передача идет непрерывно пакет за пакетом. Если сделать задержку между пакетами не менее 2 мс, то пакеты принимаются все. Сетка 100Мбит. Соединение точка-точка. В чем дело, кто знает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая-нибудь дыра в драйвере. MAC - Lan91c111?

Вы сниффером смотрели пакеты отправляются или нет вообще, отправляются битые, что-то еще?

 

Сниффер может быть любой, пусть будет Ethereal.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подключите кит напрямую к ПЭВМ, чтоб колизий не было от других машин.

Поставте на машину нормальную ОС (QNX или другой UNIX).

Лет 6 назад мы кидали по ~1500 UDP пакетов в секунду (по 1.5кб), винда (XPsp2) успевала хавать, но виндовые програмисты считают что максимальный размер пакета 64кб и принимают как-то буферами по 10-64кб, а не пакетами. Это проблемы API, ибо в карте должен быть буфер на 16384 пакетов.

Мы передавали кадры 4096х1024 4 цвета за ~3 секунды, и как я понял на винде сие собиралось более-мение , не с первого кадра конечно (на QNX работало стабильно даже в сети из более 100 машин).

 

Кстати если в сети были машины с виндой98 и 1С, то они жутко тормозили ибо они мрут как мухи от частых UDP пакетов вне зависимости от номера порта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая-нибудь дыра в драйвере. MAC - Lan91c111?

Вы сниффером смотрели пакеты отправляются или нет вообще, отправляются битые, что-то еще?

 

Сниффер может быть любой, пусть будет Ethereal.

 

Дыра в драйвере WinXP?

Cмотрел и снифером. Вижу то же самое, что показывает принимающая прога.

 

 

Подключите кит напрямую к ПЭВМ, чтоб колизий не было от других машин.

Поставте на машину нормальную ОС (QNX или другой UNIX).

Лет 6 назад мы кидали по ~1500 UDP пакетов в секунду (по 1.5кб), винда (XPsp2) успевала хавать, но виндовые програмисты считают что максимальный размер пакета 64кб и принимают как-то буферами по 10-64кб, а не пакетами. Это проблемы API, ибо в карте должен быть буфер на 16384 пакетов.

Мы передавали кадры 4096х1024 4 цвета за ~3 секунды, и как я понял на винде сие собиралось более-мение , не с первого кадра конечно (на QNX работало стабильно даже в сети из более 100 машин).

 

Кстати если в сети были машины с виндой98 и 1С, то они жутко тормозили ибо они мрут как мухи от частых UDP пакетов вне зависимости от номера порта.

Кит подключен напрямую. Винда ХР. Смотрел снифером процесс копирования файлов с машины на машину. Пакеты нормально уходят, практически без задержки, правда через ТСР. Может блокируется слишком большой поток (по мнению ХР или сетевой карты) по UDP?

ЗЫ. Хотелось бы чтобы все работало под ХР. :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>Дыра в драйвере WinXP?

Нет. Какая-нибудь дыра в драйвере MAC на плате с Blackfin, что бывает.

 

Хорошо, предположим, что все пакеты отправляются и доходят.

 

У нас все аналогичные приложения сделаны так: в потоке, по событиям читаете данные из сокета. Размер буфера сокетов установлен setsockopt в несколько мегабайт. Ничего не теряется на скоростях от 8-10 мегабайт и выше в XP и др.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дыра в драйвере WinXP?

Cмотрел и снифером. Вижу то же самое, что показывает принимающая прога.

Стоп!

Снифер смотрит что реально делается на интерфейсе(переводит карточку, а точнее драйвер карточки, в режим, когда она принимает всё и вся), программа видит данные уже на более высоком уровне, после прохождения их по стеку протоколов.

Я бы сделал вывод, что винда может отбрасывать часто идущие пакеты только уже на более высоком уровне, до того она их не классифицирует(UDP не UDP, часто не часто...).

Следовательно пакеты не доходят просто и скорее всего проблема с устройством их генерирующим.

Для чистоты эксперимента я бы использовал Linux с tcpdump.

Также может быть другую карточку для перестраховки....

Как насчёт генерации пакетов с другой машины?

Опять таки в Linux есть для этого удобный механизм прямо в ядре )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже всю голову сломал. Проблема следующая - с ез-кита шлю на ПЭВМ UDP-пакеты (в каждом пакете 642 байта данных). Первые 13-14 пакетов принимаются нормально, затем начинают приниматься через 4-5. Передача идет непрерывно пакет за пакетом. Если сделать задержку между пакетами не менее 2 мс, то пакеты принимаются все. Сетка 100Мбит. Соединение точка-точка. В чем дело, кто знает?

А не можете ли Вы их терять при передаче? То есть после загрузки в сокет пакета надо прочитать флаг готовности передатчика. И оцените какую Вы требуете от канала скорость передачи. Я на 100 мб сетке получал до 80 мб по пользовательским данным. Хотя в Вашем эксперименте основная сложность обеспечить прием. Зачистите машину(голая W-XP, без какого либо ненужного софта WORD, EXEL ит.д.) установите программму приема и оценки. Не пытайтесь записывать пакеты на диск. И да прибудет с Вами великая сила

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стоп!

Снифер смотрит что реально делается на интерфейсе(переводит карточку, а точнее драйвер карточки, в режим, когда она принимает всё и вся), программа видит данные уже на более высоком уровне, после прохождения их по стеку протоколов.

Вот и я не пойму (то ли лыжи не едут, то ли ... одно из двух :07: )

Может снифер такой (пробовал два), но видят они то же, что и прога. То есть направляю ответ на другой порт (не тот, который открыт в проге на прием) и снифер ничего не показывает! Может я его не донастроил? :wacko: Ткните - какой лучше использовать... У меня такой (на картинке)

 

 

Следовательно пакеты не доходят просто и скорее всего проблема с устройством их генерирующим.

Для чистоты эксперимента я бы использовал Linux с tcpdump.

Также может быть другую карточку для перестраховки....

Как насчёт генерации пакетов с другой машины?

Опять таки в Linux есть для этого удобный механизм прямо в ядре )

 

Пакеты шлются 100%. Программер, который валяет под виндой написал передающую прогу (вместо езкита) - эффект тот же.

 

Линукс не предлагать :crying: - писать под ним некому

post-29807-1210231299.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да под Линукс можно ничего и не писать - его использование даст возможность точно определить, проблема железная или виндовая.

Загрузиться с LiveCD и запустить tcpdump.

На другой машине принимать пробывали?

Что-то странно всё это.

Снифер я использовал WinDump www.winpcap.org/windump/

это аналог tcpdump из Линукс. Штука проверенная - работает хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да под Линукс можно ничего и не писать - его использование даст возможность точно определить, проблема железная или виндовая.

Загрузиться с LiveCD и запустить tcpdump.

Для меня это темный лес :crying:

 

Снифер я использовал WinDump www.winpcap.org/windump/

это аналог tcpdump из Линукс. Штука проверенная - работает хорошо.

Посмотрю. Спасибо!

 

Запустил, увидел вот это :07:

 

Microsoft Windows XP [Версия 5.1.2600]

(С) Корпорация Майкрософт, 1985-2001.

 

C:\Documents and Settings\k>d:\22222222\windump

d:\22222222\windump: listening on \Device\NPF_GenericDialupAdapter

 

Ничего не понял. Пойду напьюсь. Всех с наступающим!!! :beer:

Изменено пользователем _nemo_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для начала: windump -h

 

видим, что -i задает номер интерфейса, который слушать.

-i 1 соответствует NPF_GenericDialupAdapter и задан поумолчанию,

остальные - реальные адаптеры в системе.

К примеру я, дал -i 2 I:\!soft\_╒ръ\WinDump.exe: listening on \Device\NPF_{3BDC2E26-5856-4E27-9658-D7E6B41D2E81}

то, что в {} можно найти в реестре и точно узнать какой это адаптер, но как правило это не требуется и сразу и так всё видно.

Можно и -i 3 и -i 4, если карточек много, как у меня - вот тогда действительно можно и в реестр глянуть:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для начала: windump -h

 

видим, что -i задает номер интерфейса, который слушать.

-i 1 соответствует NPF_GenericDialupAdapter и задан поумолчанию,

остальные - реальные адаптеры в системе.

К примеру я, дал -i 2 I:\!soft\_╒ръ\WinDump.exe: listening on \Device\NPF_{3BDC2E26-5856-4E27-9658-D7E6B41D2E81}

то, что в {} можно найти в реестре и точно узнать какой это адаптер, но как правило это не требуется и сразу и так всё видно.

Можно и -i 3 и -i 4, если карточек много, как у меня - вот тогда действительно можно и в реестр глянуть:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards

 

Фу, наконец-то запустил :a14:

Сниффер показывает, что пакеты приходят :lol: . Но прога упорно видит только первые 13, остальные принимаются через 5. Куда копать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фу, наконец-то запустил :a14:

Сниффер показывает, что пакеты приходят :lol: . Но прога упорно видит только первые 13, остальные принимаются через 5. Куда копать?

 

Под программера, который ваяет под Виндой, очевидно :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под программера, который ваяет под Виндой, очевидно :-)

 

Да это понятно :biggrin:

Но от этого не легче :help:

Может в реестре чего поправить? ПАМАГИТЯ! :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...