Блог им. sck

Декодирование пакетов от тестового FAST UDP Multicast MOEX

    • 26 января 2024, 14:14
    • |
    • sck
  • Еще

Всем добрый день!

Подключился к тестовому контуру FAST от MOEX и возникли трудности с декодированием UDP пакетов, поэтому решил обратиться за помощью к сообществу.
Написал небольшой скрипт на NodeJS для получения данных от сервера FAST.
При попытке вывода получаемых сообщений в консоль вылезают нечитабельные символы (декодирую в ASCII, также проверял UTF8 — там тоже есть проблемы с читабельностью):
Декодирование пакетов от тестового FAST UDP Multicast MOEX

Пробую перехватывать эти же пакеты с помощью Wireshark и вижу следующее:
Декодирование пакетов от тестового FAST UDP Multicast MOEX

Кроме того пробовал загрузить в Wireshark дампы пакетов с ftp сервера ftp.moex.com/pub/FAST/ASTS/dump/ они имеют следующий вид:
Декодирование пакетов от тестового FAST UDP Multicast MOEX

Вопрос в следующем: действительно ли так должны выглядеть пакеты от тестового FAST UDP (как в Wireshark) или я делаю что то неправильно?

PS: на сколько я понимаю сообщение должно прилетать примерно такого вида:

8=FIXT.1.19=47535=d49=MOEX34=1355252=200116063011036670460=3423=1911=279261128=9347=UTF-855=RU000A1011E948=RU000A1011E922=4461=DBXXXX167=CORP107=SberIOS 001P-167R 1Y SX5E T-W15=RUB120=RUB5217=4B0217201481B001P5385=RPS969=0.01223=0.00015508=10005850=6489997595=648999350=37351=СберИОС 001Р-167R 1Y SX5E T-W5382=175383=СберИОС167541=20201204224=2020120464=20200116870=2871=27872=2871=8872=3721310=1561=11309=1336=PSOB326=179680=3625=N10=052

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
461
7 комментариев
То что вы привели в конце топика, это не fast, это FIX. И они действительно читабельны.

А FAST по UDP хрен «зачитаешь» глазами, за исключением некоторых текстовых полей и то не полностью. Там данные нужно распаковывать по специальному алгоритму и потом парсить
avatar
Андрей К, Спасибо за комментарий. Посоветуйте, пожалуйста, что можно почитать по теме декодирования FAST. Документацию на ftp биржи читал, но так и не понял по какому принципу декодировать, видимо сказывается отсутствие опыта в данном направлении. 
avatar
sck, да вроде знаете, гуглится много статей, например jettekfix.com/education/fix-fast-tutorial/

для меня сейчас это как холодный душ, всопмнить все это и написать высокопроизводительный FAST парсер со всеми нюансами ). Будут какие то локальные вопросы, задавайте

для начала попринтуйте seq_num FAST пакета и его template_id.
seq_num хоть не пакуется и не кодируется и инкрементируется, будет видно наглядно

template_id дешифруется тож достаточно быстро
avatar
Андрей К, благодарю!
avatar
sck, получилось сделать?
sck, Добрый день, такая же проблема с декодирование, случайно наткнулся на эти комметарии) 
 

Мне приходит такое сообщение (это шаблон сердцебиения): \xe1.\x01\x00\xc0\x10\xbc\x04]\xe1\x03,$\x07\x0be[\x0e\xc3

После того как убираю первые 4 байта (преамбулу). Получаю:
\xc0\x10\xbc\x04]\xe1\x03,$\x07\x0be[\x0e\xc3

Смотрю на первый байт С0 = 1100 0000. pmap = 1000 000, но в этом сообщение (сообщение сердцебиения) вообще нет опциональных полей.

Буду очень благодарен подсказке)
Сам шаблон:
<template name=«0» id=«2108» xmlns="http://www.fixprotocol.org/ns/fast/td/1.1"><string name=«MessageType» id=«35»><constant value=«0» /></string><string name=«BeginString» id=«8»><constant value=«FIXT.1.1»/></string><string name=«SenderCompID» id=«49»><constant value=«MOEX»/></string><uInt32 name=«MsgSeqNum» id=«34»></uInt32><uInt64 name=«SendingTime» id=«52»></uInt64></template>  
кстати если nodejs умеет импортировать c++ библиотеки, то проще конечно взять готовый парсер на c++ и попробовать его залинковать подключить в nodejs, если я корректно выразился 
avatar

Читайте на SMART-LAB:
Фото
Хэдхантер проведёт Headconf 2026
Фото
НМТП: отчет по МСФО за 2-й квартал - прибыль идет по прогнозу, но впереди тяжелый 3-й квартал
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 28 августа 2026 г.
Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт
Фото
Рубль снова упал - на календаре третий квартал. Анализ исторической сезонности курса рубля
Здравствуйте! Мне стало интересно проверить, существует ли статистически значимая сезонность курса рубля относительно равновзвешенной корзины...

теги блога sck

....все тэги



UPDONW
Новый дизайн