Direct Shreds - UDP Forwarding Standard (Raw Shreds)

UDP Forwarding Standard пересылает Raw Shreds по UDP на публичный IPv4-адрес и порт, настроенные для вашей подписки. Выберите доступный регион при первоначальной настройке, затем сохраните в качестве назначения корректный непустой публичный IPv4-адрес с портом. Назначение можно обновить позже. ERPC применяет конфигурацию пересылки в рамках 30-секундного цикла обновления; активация heartbeat не требуется. Регион тоже можно изменить позже в веб-панели — столько раз, сколько потребуется. При смене региона меняется исходный IP-адрес, поэтому брандмауэр на принимающей стороне должен разрешать новый исходный IP-адрес. Пока подписка переходит в новый регион, доставка ненадолго прерывается. Если в новом регионе сейчас нет свободных мощностей, переход не выполняется, и ни регион, ни назначение не меняются.

Как работает пересылка UDP

  • ERPC пересылает Raw Shreds по UDP на настроенный адрес назначения.
  • UDP не обеспечивает ни установки соединения, ни повторной передачи, ни упорядочивания пакетов; вашему приёмнику следует обрабатывать пакеты с учётом этого.
Примечание: общий эндпоинт Shreds gRPC работает поверх TCP, поэтому он медленнее, чем UDP Shreds.

Попробуйте с помощью Solana Stream SDK

  • Пример кода (shreds-udp-rs, Rust): обнаружение новых токенов здесь лишь типичный сценарий — подставьте свою цель.
    https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • Укажите в настройках приёмника адрес назначения ip:port, сохранённый для UDP Forwarding Standard.
  • Ещё не используете UDP? Запустите пример локально или на своём сервере, чтобы изучить логи и настроить хуки под себя.

UDP-пакеты не приходят

Пересылка UDP запускается автоматически после настройки адреса назначения. Активация через heartbeat не требуется; ответ heartbeat UNIMPLEMENTED не означает, что пересылка отключена.
Сначала выполните захват трафика на сетевом интерфейсе хоста. Подставьте вместо заполнителей исходный IP-адрес ERPC, указанный для вашего потока, и настроенный вами порт назначения.
Linux (tcpdump):
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'
Windows (Pktmon, запускайте от имени администратора):
powershell
pktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-time
  1. Если захват по-прежнему показывает ноль пакетов, проверьте как брандмауэр ОС, так и брандмауэры за пределами ОС. В Hetzner трафик может фильтроваться в Cloud Firewall или в Robot Firewall на порту коммутатора. В AWS проверьте Security Group и Network ACL подсети.
  2. Разрешите входящий UDP-трафик с <ERPC_SOURCE_IP>/32 на порт назначения <DESTINATION_PORT>. Исходный порт не ограничивайте: ERPC использует динамические исходные UDP-порты.
  3. Если пакеты видны в захвате, но не доходят до приложения, привяжите приёмник к 0.0.0.0:<DESTINATION_PORT>, а не к localhost, затем проверьте локальный брандмауэр и настройки сокета/процесса.
Если после обновления правил пакеты всё ещё не приходят, отправьте в службу поддержки длительность захвата, количество пакетов, исходный IP-адрес, IP-адрес назначения и порт назначения.

Ресурсы