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

5 комментариев
То что вы привели в конце топика, это не 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
кстати если nodejs умеет импортировать c++ библиотеки, то проще конечно взять готовый парсер на c++ и попробовать его залинковать подключить в nodejs, если я корректно выразился 
avatar

теги блога sck

....все тэги



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