Direct Shreds - UDP Forwarding (Raw Shreds)

UDP Forwarding livre des Raw Shreds en UDP à une seule adresse IPv4 publique et à un port que vous configurez. UDP Forwarding Standard et UDP Forwarding Premium diffèrent par la façon dont les Shreds vous parviennent depuis la région de votre choix : avec Standard, ERPC les transmet depuis un nœud situé dans cette région ; avec Premium, c'est le réseau maillé qui les livre.

UDP Forwarding Standard

UDP Forwarding Standard transmet des Raw Shreds en UDP à l'adresse IPv4 publique et au port configurés pour votre abonnement. Sélectionnez une région disponible lors de la configuration initiale, puis enregistrez comme destination une adresse IPv4 publique valide et non vide avec son port. Vous pouvez mettre à jour la destination ultérieurement. ERPC applique la configuration de transmission selon son cycle d'actualisation de 30 secondes, et aucune activation par heartbeat n'est nécessaire. Vous pouvez également modifier la région plus tard dans le tableau de bord, aussi souvent que nécessaire. Changer de région modifie l'IP source ; le pare-feu côté réception doit donc autoriser la nouvelle IP source. L'acheminement est brièvement interrompu pendant que l'abonnement passe à la nouvelle région. Si la nouvelle région n'a pas de capacité disponible pour le moment, la modification n'est pas effectuée et ni la région ni la destination ne changent.
  • Depuis un nœud situé dans la région de votre choix, ERPC transmet des Raw Shreds en UDP vers la destination configurée, de sorte qu'ils vous parviennent depuis une seule IP source.

UDP Forwarding Premium

UDP Forwarding Premium livre des Raw Shreds en UDP depuis le réseau maillé à l'adresse IPv4 publique et au port configurés pour votre abonnement. Le réseau maillé transmet, pour chaque Shred, la copie qui lui parvient en premier ; chaque IP source affichée dans le tableau de bord peut être l'émetteur. Avec Premium, les Shreds arrivent souvent 1–3 ms plus tôt qu'avec Standard. Le 30 octobre 2026, un récepteur d'ERPC situé à Francfort a reçu Standard et Premium en parallèle lors d'une seule mesure de 120 secondes. Pour chaque Shred reçu sur les deux, il a comparé le moment de sa première arrivée sur Standard et sur Premium.
Saisissez l'adresse IPv4 publique et le port de votre propre hôte de réception, et sélectionnez l'une des 7 régions disponibles. Une fois la destination enregistrée, le statut affiche Application en cours, et l'acheminement commence dès que les paramètres sont appliqués.
Dans le pare-feu côté réception, autorisez chaque IP source affichée dans le tableau de bord, avec une règle /32 par IP.
Un changement de région modifie l'ensemble des IP sources que votre pare-feu doit autoriser. L'acheminement reste interrompu jusqu'à ce que la nouvelle région soit appliquée, et les nouvelles IP sources apparaissent dans le tableau de bord dès qu'elle l'est. Si la région sélectionnée ne peut pas accepter la modification pour le moment, celle-ci n'est pas enregistrée, et la région et la destination déjà enregistrées restent inchangées. Tant qu'une modification précédente est encore en cours d'application, ou juste après l'acceptation d'une modification, aucune nouvelle modification n'est acceptée.
Les IP sources peuvent aussi évoluer sans changement de région. Lorsque cela nécessite de nouvelles règles de pare-feu, nous vous en informons par e-mail ou via le Support.

Ce qu'il faut savoir sur UDP

  • UDP n'assure ni l'établissement de connexion, ni la retransmission, ni la remise dans l'ordre ; votre récepteur devrait traiter les paquets en conséquence.
Note : l'endpoint partagé Shreds gRPC fonctionne sur TCP ; il est donc plus lent que les Shreds en UDP.

Essayer avec Solana Stream SDK

  • Exemple de code (shreds-udp-rs, Rust) : la détection de nouveaux jetons n'est qu'un exemple courant ; remplacez-la par ce que vous souhaitez détecter.
    https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • Configurez votre récepteur avec la destination ip:port enregistrée pour UDP Forwarding.
  • Vous n'utilisez pas encore UDP ? Exécutez l'exemple de code en local ou sur votre propre serveur pour explorer les logs et personnaliser les hooks.

Les paquets UDP n'arrivent pas

Commencez par capturer le trafic sur l'interface réseau de l'hôte.

UDP Forwarding Standard

La transmission UDP démarre automatiquement après la configuration de la destination. Aucune activation par heartbeat n'est nécessaire ; une réponse de heartbeat UNIMPLEMENTED ne signifie pas que la transmission est désactivée.
Remplacez les espaces réservés par l'IP source ERPC affichée pour votre flux et par le port de destination configuré.
Linux (tcpdump) :
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'
Windows (Pktmon, à exécuter en tant qu'administrateur) :
powershell
pktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-time

UDP Forwarding Premium

Remplacez les espaces réservés des IP sources par les IP sources affichées dans le tableau de bord, et <DESTINATION_PORT> par le port de destination configuré.
Linux (tcpdump) :
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and (src host <SOURCE_IP_1> or src host <SOURCE_IP_2>)'
Conservez les parenthèses : sans elles, le filtre udp dst port ne s'applique qu'à la première IP source, et la capture récupère tout le trafic provenant de chaque IP source suivante, quels que soient le protocole et le port. Utilisez un terme src host par IP source ; avec une seule IP source, supprimez le terme or et les parenthèses.
Windows (Pktmon, à exécuter en tant qu'administrateur) :
powershell
pktmon filter add ERPC-UDP-1 -t UDP -i <SOURCE_IP_1> -p <DESTINATION_PORT>
pktmon filter add ERPC-UDP-2 -t UDP -i <SOURCE_IP_2> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-time
Ajoutez une ligne pktmon filter add par IP source, en numérotant les noms de filtre comme indiqué ; un filtre unique qui liste plusieurs IP capture à la place le trafic échangé entre ces IP. Avec une seule IP source, ne conservez que la première ligne de filtre.

Vérifications du pare-feu et du récepteur

  1. Si la capture reste à zéro, vérifiez à la fois le pare-feu du système d'exploitation et les pare-feux situés hors du système. Chez Hetzner, le trafic peut être filtré par le Cloud Firewall ou par le Robot Firewall au niveau du port du commutateur. Sur AWS, vérifiez le Security Group et la Network ACL du sous-réseau.
  2. Ajoutez la règle d'autorisation correspondant à votre plan :
    • UDP Forwarding Standard : Autorisez le trafic UDP entrant depuis <ERPC_SOURCE_IP>/32 vers le port de destination <DESTINATION_PORT>. Ne limitez pas le port source, car ERPC utilise des ports source UDP dynamiques.
    • UDP Forwarding Premium : Autorisez le trafic UDP entrant depuis chaque <SOURCE_IP_n>/32 vers le port de destination <DESTINATION_PORT>, avec une règle par IP source affichée dans le tableau de bord. Ne limitez pas le port source.
  3. Si les paquets apparaissent dans la capture mais pas dans l'application, faites écouter le récepteur sur 0.0.0.0:<DESTINATION_PORT> plutôt que sur localhost, puis vérifiez le pare-feu local et les paramètres du socket/processus.
Si aucun paquet n'arrive après la mise à jour des règles, transmettez au Support la durée de la capture, le nombre de paquets, l'IP source, l'IP de destination et le port de destination.

Ressources