Блог им. 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

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
445
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:
Фото
Новые возможности с БКС API: торги заблокированными активами, внебиржевой валютой и другое
Делимся новостями БКС API¹ — мы выпустили три важных обновления, которые расширяют торговые инструменты и упрощают работу с рыночными...
Обновление кредитных рейтингов в ВДО и розничных облигациях (ООО "Лизинг-Трейд" понижен ruBB+, ООО «Оил Ресурс» и АО «Кириллица» отозван)
🔴ООО «Лизинг-Трейд» Эксперт РА понизил рейтинг кредитоспособности до уровня ruBB+ и изменил прогноз на развивающийся. Ранее у Компании...
Фото
Токио против рынка: сколько резервов хватит для защиты иены
Цены на нефть продолжают снижение, начавшееся в среду, хотя темпы падения уже замедлились. За последние сутки новостной фон по Ближнему Востоку...
Фото
ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...

теги блога sck

....все тэги



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