Direct Shreds - UDP ส่งต่อ (Raw Shreds)

ถ้าคุณมี...ERPC ชเรดส์ที่สละสิทธิ์แล้ว คุณสามารถเลื่อนชเรดดิบไป UDP แด่ผู้ฟังของคุณ นี่คือ Solanaชั้นสํารวจที่เร็วที่สุด -- ก่อน Geyser gRPC และไกลเกินกว่า RPC/WebSocket. เอส ดีเค รวม เอา เรื่อง ง่าย ๆ Rust ตัว อย่าง; สูบ ปั๊ม.

ทําไมนี่เป็นเส้นทางที่เร็วที่สุด

  • อัตราการสั่นมาถึงก่อน: การตรวจสอบการเยื้องที่ดินก่อน Geyser gRPC or RPC/WebSocketสภาวะฉุกเฉินที่ร้ายแรงมาก เห็นเหตุการณ์ตั้งแต่เริ่มต้น
  • UDP เก็บค่าน้อยที่สุด: ไม่มีการตั้งค่าการเชื่อมต่อ, การเรียงลําดับใหม่, หรือการเรียงลําดับ; ให้ตรงกับรูปแบบสายระหว่างตัวตรวจ
  • แลกเปลี่ยน: ข้อมูลก่อนการวางจําหน่ายสามารถขาด/ออกของลําดับ/ ไม่สําเร็จ -- จัดการกับข้อมูลดังกล่าวเป็นส่วนหนึ่งของการต่อรองความเร็ว
หมายเหตุ: ฌานที่ใช้ร่วมกัน gRPC จุด จบ ของ ที ซี พี จึง ช้า กว่า UDP อาเจียน

ลองกับ Solana เครือข่าย SDK

  • รหัสตัวอย่าง (shreds-udp-rs, Rustปั๊ม ความสนุกสนานเป็นแค่ตัวอย่างทั่วไป https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • ผู้ ใช้ ที่ อุทิศ ตัว แล้ว: ip:port เพื่อดูการตรวจสอบ
  • ไม่เปิด UDP ยัง? เรียกใช้มันในท้องถิ่นหรือบนเซิร์ฟเวอร์ของคุณเอง เพื่อสํารวจปูมบันทึกและตะขอปรับแต่ง

เมื่อแพ็กเก็ต UDP ไม่มาถึง

การส่งต่อ UDP จะเริ่มโดยอัตโนมัติหลังจากตั้งค่าปลายทางแล้ว ไม่ต้องเปิดใช้งานด้วย heartbeat และการตอบกลับ heartbeat เป็น UNIMPLEMENTED ไม่ได้หมายความว่าการส่งต่อถูกปิดใช้งาน
ขั้นแรก ให้จับทราฟฟิกที่อินเทอร์เฟซเครือข่ายของโฮสต์ แทนที่ placeholder ด้วย IP ต้นทางของ ERPC ที่แสดงสำหรับ stream ของคุณและพอร์ตปลายทางที่ตั้งค่าไว้
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 ของ subnet
  2. อนุญาต UDP ขาเข้าจาก <ERPC_SOURCE_IP>/32 ไปยังพอร์ตปลายทาง <DESTINATION_PORT> อย่าจำกัดพอร์ตต้นทาง เพราะ ERPC ใช้พอร์ตต้นทาง UDP แบบไดนามิก
  3. หากเห็นแพ็กเก็ตในการจับทราฟฟิกแต่แอปพลิเคชันไม่ได้รับ ให้ bind ตัวรับกับ 0.0.0.0:<DESTINATION_PORT> แทน localhost แล้วตรวจสอบไฟร์วอลล์ภายในเครื่องและการตั้งค่า socket/process
หากยังไม่มีแพ็กเก็ตหลังจากอัปเดตกฎแล้ว ให้ส่งระยะเวลาการจับแพ็กเก็ต จำนวนแพ็กเก็ต IP ต้นทาง IP ปลายทาง และพอร์ตปลายทางให้ Support
เอกสารอย่างเป็นทางการของผู้ให้บริการ: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs และ Microsoft Pktmon

ทรัพยากร