Direct Shreds - UDP Forwarding Standard (Raw Shreds)

UDP Forwarding Standard के लिए प्रारंभिक सेटअप के दौरान एक उपलब्ध region चुनें और destination के रूप में एक मान्य, non-empty public IPv4 address और port कॉन्फ़िगर करें। सेटअप के बाद चुना गया region स्थिर रहता है; destination बाद में अपडेट किया जा सकता है। फ़ॉरवर्डिंग कॉन्फ़िगरेशन लगभग 30 सेकंड के रिफ्रेश चक्र पर लागू होता है और heartbeat सक्रिय करने की आवश्यकता नहीं है।

यह सबसे तेज़ रास्ता क्यों है

  • Shreds सबसे पहले पहुँचते हैं: validator-to-validator Shreds, Geyser gRPC या RPC/WebSocket से पहले land करते हैं, इसलिए latency-critical flows सबसे पहले events देखते हैं।
  • UDP ओवरहेड को बहुत कम रखता है: न connection setup, न retransmit, न ordering; यह validators के बीच on-wire format से मेल खाता है।
  • Trade-off: pre-finalization डेटा गायब/क्रम से बाहर/विफल हो सकता है—इसे speed के सौदे के हिस्से के रूप में संभालें।
नोट: साझा Shreds gRPC endpoint TCP पर चलता है, इसलिए यह UDP Shreds की तुलना में धीमा है।

इसे Solana Stream SDK के साथ आज़माएँ

  • सैंपल कोड (shreds-udp-rs, Rust): new-token detection तो बस एक आम उदाहरण है—इसमें अपना target स्वैप कर दें। https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • UDP Forwarding Standard उपयोगकर्ता: अपने receiver को सैंपल के ip:port पर point करें ताकि detections दिखें।
  • अभी तक UDP पर नहीं हैं? logs को explore करने और hooks को customize करने के लिए इसे locally या अपने स्वयं के server पर चलाएँ।

UDP पैकेट नहीं पहुँच रहे हैं

गंतव्य कॉन्फ़िगर होते ही UDP forwarding अपने-आप शुरू हो जाती है। heartbeat से activation की आवश्यकता नहीं है; heartbeat का UNIMPLEMENTED उत्तर यह नहीं बताता कि forwarding बंद है।
सबसे पहले host के network interface पर traffic capture करें। placeholders को आपके stream के लिए दिखाए गए ERPC source IP और कॉन्फ़िगर किए गए destination port से बदलें।
Linux (tcpdump):
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'
Windows (Pktmon, Administrator के रूप में चलाएँ):
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. यदि capture में लगातार शून्य पैकेट दिखते हैं, तो OS firewall और OS के बाहर के firewalls दोनों जाँचें। Hetzner में Cloud Firewall या switch port का Robot Firewall traffic को filter कर सकता है। AWS में Security Group और subnet का Network ACL जाँचें।
  2. <ERPC_SOURCE_IP>/32 से destination port <DESTINATION_PORT> तक inbound UDP की अनुमति दें। ERPC dynamic UDP source ports का उपयोग करता है, इसलिए source port को सीमित न करें।
  3. यदि capture में पैकेट दिखते हैं लेकिन application उन्हें प्राप्त नहीं करती, तो receiver को localhost के बजाय 0.0.0.0:<DESTINATION_PORT> पर bind करें, फिर local firewall और socket/process settings जाँचें।
नियम अपडेट करने के बाद भी पैकेट न आएँ, तो Support को capture की अवधि, packet count, source IP, destination IP और destination port भेजें।
प्रदाता के आधिकारिक दस्तावेज़: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs, और Microsoft Pktmon।

संसाधन