Имя: Пароль:
1C
 
Загадки протокола TCP
0 H A D G E H O G s
 
09.10.24
12:17
Дня доброго.
Есть железяка, с которой обмениваются по сети.
Ей отправляешь запрос, она шлет XML-ответ, 19 Кбайт, немного. Ответ идет 0,5-0,8 секунды, что печально, она должна работать на поточной линии.
Железка мощная, дорогая, по эльфийским технологиям.

Смотря ее TCP траффик, понимаешь, что ответ она разбивает на TCP пакеты по 256 байт и проблема в этом.

Это можно увидеть на рисунке.

При этом непонятно, почему она дробит один ответ на пакеты по 256 байт. Размер окна у приемника Win=64296, максимальный размер пакета MSS=16074.

Ответ вроде один, так как ACK=358 у всех пакетов одинаковое . Кто сталкивался с подобным, кто может помочь и что-то знать?
1 NorthWind
 
09.10.24
12:51
Непонятно что за железка, но подозреваю, что встроенный в нее микроконтроллер имеет небольшое быстродействие и это влияет на работу сети. Поэтому и отдают предпочтение куче маленьких пакетов перед одним большим. В целом вопрос к настройкам железки и ее производителю, мне кажется, только он может чего-то внятное сказать по этому вопросу.
2 eklmn
 
гуру
09.10.24
13:05
это с винды, а с линуха так же?
3 Кирпич
 
09.10.24
13:09
так это не загадки протокола. это загадки неизвестной железяки.
4 H A D G E H O G s
 
09.10.24
13:36
(1) Проц в железке 800 Мгц, 256 Мбайт оперативки.
5 Смотрящий
 
09.10.24
13:40
Поройся на шелезяке - mtu какой стоит ?
6 Smit1C
 
09.10.24
13:40
(0) нужно ускорить время ответа ?
7 Vostochnick
 
09.10.24
15:59
Пагинацию не предлагать?
8 vde69
 
09.10.24
16:30
если это wi-fi то присоединяюсь к (5) MTU
9 Garykom
 
гуру
09.10.24
21:31
(0) >Железка мощная, дорогая, по эльфийским технологиям.
поменять на другую железяку или прошивку
которая на Len=0 не отправляет минимальными в 256 байт
10 lEvGl
 
гуру
10.10.24
09:32
а что за протокол обмена?
+
При этом непонятно, почему она дробит один ответ на пакеты по 256 байт

может быть из-за скорости/несогласованности обмена, может она в полудуплексе работает
и каким прог. компонентами запрашиваете и какими она отвечает, это нестыковка в обмене
11 eklmn
 
гуру
10.10.24
10:22
(10) нет, просто на ваершарк уже так приходит, но не все это знают...
12 lEvGl
 
гуру
10.10.24
11:31
(11) Ну тогда всё в порядке.
Значит, просто тормозит.
Обычные школьные ардуины работают где-то так же.
13 H A D G E H O G s
 
10.10.24
13:08
(7) Предлагать. Вы - второй, кто упомянул про выравнивание (Padding) и я начал в это погружаться.
14 Garykom
 
гуру
10.10.24
13:15
Как насчет добавить промежуточную железку?
Одноплатник с двумя lan портами
Одним портом в эту эльфийскую а вторым в общую сетку

Пусть одноплатник постоянно медленно общается с железякой, а по запросу быстро (кэшированное отдает) куда надо
15 Кирпич
 
10.10.24
13:25
(14) да зачем. надо просто на железяке нужный тумблер включить и все заработает.
16 Garykom
 
гуру
10.10.24
13:26
(15) уже давно лишних тумблеров нет, все программно по максимуму
17 Кирпич
 
10.10.24
13:37
(16) Я ж образно. Нет никакого другого пути окромя настройки железяки. Разве что действительно кешировать.
18 Garikk
 
10.10.24
15:04
(0) а ты прям напрямую к ней подключался и она так делает?
прям сетевуха компа - сетевой разъем железки?

по своему опыту скажу что нифига не сделаешь ничего, железячники-производители, максимально криворукие товарищи в этих вопросах...было дело дизельгенератор настраивал с управлением по сети, наш сетевик на стенку лез от глюков этой штуки
мне кажется (14) самый верный вариант
19 H A D G E H O G s
 
10.10.24
15:45
(18) "прям сетевуха компа - сетевой разъем железки? "

Вариант с кэшированием - не вариант. 1С управляет этой железякой в реальном времени, от каждого пакета результата зависит следующее действие, за экраном сидит оператор, фура ждет погрузки.
20 Garykom
 
гуру
10.10.24
15:50
(19) Для начала действительно воткнуть напрямую комп-железка
Или через отдельный свитч
И протестить как оно работает
Если не устраивает - терзать техподдержку

В самом крайнем случае все отсниффить и заменить железку на свой эмулятор, который будет выполнять ее роль полностью
Выдавая команды на оборудование
21 breezee
 
10.10.24
15:56
А зачем XML, может другой протокол есть?
22 trad
 
10.10.24
15:56
(19) 1С управляет
Из-под виртуалки?
23 Djelf
 
гуру
10.10.24
15:55
Может быть и это виновато: https://www.opennet.ru/tips/3249_tcp_tcp_nodelay_optimization_latency.shtml
24 eklmn
 
гуру
10.10.24
15:56
(19) с такой архитектурой важны нюансы, которые мы не знаем,
бестолку так через форум
25 H A D G E H O G s
 
10.10.24
16:08
(22) Физическая машина, железка воткнута через сетевую на материнке.
Пробовал на разных компах.
Если есть маршрутизатор между - то время незначительно, но увеличивается.
26 H A D G E H O G s
 
10.10.24
16:29
(23) nodelay (nagle) пробовал почти сразу. Пробовал играться флагами
TCP_MAXSEG
IP_USER_MTU
TCP_EXPEDITED_1122
IP_NO_DEFRAG

и их компинациями, ничего не помогает. Сейчас попробую IPv6
27 Djelf
 
гуру
10.10.24
16:46
Я так понимаю что все первоначальные удары в админский бубен были уже произведены, типа перепрошивки или сброса настроек.
А что пишут другие пользователи этих эльфийских технологий?
28 H A D G E H O G s
 
10.10.24
16:47
При этом, устройство нормально так шпарит ICMP пакетами размером MSS (1440 байт), нормально хреначит здоровые пакеты по HTTP (умеет в реальном времени в браузере показывать свой дисплей и настраиваться).
Но не умеет показать свой MTU :-(

(27) Других нет. Удары были произведены настолько, что в течении пары месяцев удалось уговорить разрабов из США выпустить новую прошивку, которая должна была поправить, но не поправила. Что заставило задуматься, что проблема на нашей стороне, но походу, нет.
29 Garikk
 
10.10.24
16:47
скорее всего ничего не поможет, обычно наркоманы там сидят которые это делают, это сетевой стек на стороне железки скорее всего кривой, там же небось не обычная сетевуха стоит, а чёнить хитропопое и управляется небось контроллером самодельным, а не линуксом (как у всех нормальных людей)

вообще если поддержка в принципе поймет вашу проблему - уже будет победой...но "не верю"
30 Garikk
 
10.10.24
16:52
(28) У меня была проблема в том, что похожая железка, прикрученная к генератору, не запоминала шлюз... Вот просто не записывала и всё... Куда уж проще была проблема... Разговор с поддержкой был как слепого с глухим, добились того, что они решили, от генератора на 1500 кВт открутить комп и отправить его в Германию будет самым правильным решением... На что были посланы, и силами циски мы просто настроили сеть, чтобы шлюз был не нужен для неё.
А тут явно какая-то особенность реализации.
31 Djelf
 
гуру
10.10.24
16:59
Возможно что и особенность реализации, я как-то участвовал в проекте ускорения шеншейка в nxclient/nxserver (аналог rdp для linux), оптимизация и слияние пакетов дали 3-4х кратный прирост скорости (стало даже немного быстрее чем с rdp).
А тут, совсем вслепую, ничего видимо еще посоветовать не получится, кроме того что уже изложено выше.
32 lEvGl
 
гуру
10.10.24
18:27
других интефейсов нет на ней, rs485 например?
зы. железку можно было и назвать, чтобы знать с чем не связываться, это первое, а второе чтобы понимать о чем речь
33 Garykom
 
гуру
10.10.24
18:48
(28) Тупой вопрос но как железка и комп получают ip?
Вручную прописали на каждом, подключившись с дефолтным ip железки
Или на железке есть dhcp сервер?
А есть ли режим dhcp клиента?