Direct Shreds - UDP Forwarding (Raw Shreds)

UDP Forwarding 通过 UDP 将原始 Shreds 送达您配置的单个公共 IPv4 地址和端口。UDP Forwarding Standard 与 UDP Forwarding Premium 的区别在于 Shreds 从您所选区域送达您的方式:使用 Standard 时,ERPC 从该区域的一个节点将 Shreds 转发给您;使用 Premium 时,则由网状网络转发。

UDP Forwarding Standard

UDP Forwarding Standard 通过 UDP 将原始 Shreds 转发到为您的订阅配置的公共 IPv4 地址和端口。请在初始配置时选择一个可用区域,并将有效且非空的公共 IPv4 地址和端口保存为目标。目标之后可以更新。ERPC 按 30 秒的刷新周期应用转发配置,无需通过 heartbeat 激活。您也可以之后在仪表盘中更改区域,次数不限。更改区域会改变源 IP,因此接收端的防火墙需要允许新的源 IP。订阅迁移到新区域期间,数据投递会短暂中断。如果新区域目前没有可用容量,则不会执行此次更改,区域和目标都保持不变。
  • ERPC 从您所选区域的一个节点通过 UDP 将原始 Shreds 转发到已配置的目标地址,因此 Shreds 会从单个源 IP 送达您。

UDP Forwarding Premium

UDP Forwarding Premium 通过 UDP 将原始 Shreds 从网状网络送达为您的订阅配置的公共 IPv4 地址和端口。该网状网络转发每个 Shred 的副本中最先到达该网络的那一份;仪表盘上显示的每个源 IP 都可能是发送方。Premium 的 Shreds 往往比 Standard 早 1–3 ms 到达。2026 年 10 月 30 日,位于法兰克福的 ERPC 接收端在一次 120 秒的测量中同时接入 Standard 和 Premium,并对两者都收到的每个 Shred,比较其在 Standard 与 Premium 上的首次到达时间。
请输入您自己的接收主机的公共 IPv4 地址和端口,并从 7 个可用区域中选择一个。保存目标后,状态会显示为“应用中”,设置应用完成后即开始数据投递。
请在接收端防火墙中,逐一允许仪表盘上显示的所有源 IP,每个 IP 使用一条 /32 规则。
更改区域后,防火墙需要允许的源 IP 也会随之改变。在新区域应用完成之前,数据投递会一直中断;应用完成后,新的源 IP 会显示在仪表盘中。如果所选区域目前无法受理此次更改,该更改不会保存,已保存的区域和目标保持不变。上一次更改仍在应用中时,或刚受理某次更改之后,不会受理新的更改。
即使不更改区域,源 IP 也可能发生变化。如果这种变化需要添加新的防火墙规则,我们会通过电子邮件或支持团队通知您。

UDP 须知

  • UDP 不提供连接建立、重传或顺序保证;您的接收端应据此处理数据包。
注意:共享的 Shreds gRPC 端点基于 TCP 运行,因此比 UDP Shreds 慢。

使用 Solana Stream SDK 动手试试

收不到 UDP 数据包时

首先,在主机的网络接口上抓包。

UDP Forwarding Standard

配置目标地址后,UDP 转发会自动开始。无需通过 heartbeat 激活;heartbeat 返回 UNIMPLEMENTED 并不表示转发已被禁用。
请将占位符替换为针对您的数据流显示的 ERPC 源 IP,以及您配置的目标端口。
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

UDP Forwarding Premium

请将源 IP 占位符替换为仪表盘中显示的源 IP,并将 <DESTINATION_PORT> 替换为您配置的目标端口。
Linux(tcpdump):
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and (src host <SOURCE_IP_1> or src host <SOURCE_IP_2>)'
请保留括号:去掉括号后,udp dst port 过滤条件只作用于第一个源 IP,而第一个之后的每个源 IP 发出的所有流量,无论协议和端口,都会被抓取。每个源 IP 使用一个 src host 条件;只有一个源 IP 时,请去掉 or 部分和括号。
Windows(Pktmon,以管理员身份运行):
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
请为每个源 IP 添加一行 pktmon filter add,并按示例为过滤器名称编号;如果在一个过滤器中列出多个 IP,匹配的将是这些 IP 之间的流量。只有一个源 IP 时,只保留第一行过滤器。

防火墙与接收端检查

  1. 如果抓包结果一直为零,请同时检查操作系统防火墙和操作系统之外的防火墙。Hetzner 可能会在 Cloud Firewall 或交换机端口上的 Robot 防火墙中过滤流量。在 AWS 上,请检查 Security Group 和子网的 Network ACL。
  2. 请按您使用的服务添加允许规则:
    • UDP Forwarding Standard:允许从 <ERPC_SOURCE_IP>/32 发往目标端口 <DESTINATION_PORT> 的入站 UDP 流量。ERPC 使用动态 UDP 源端口,因此请不要限制源端口。
    • UDP Forwarding Premium:允许从每个 <SOURCE_IP_n>/32 发往目标端口 <DESTINATION_PORT> 的入站 UDP 流量,仪表盘中显示的每个源 IP 各一条规则。请不要限制源端口。
  3. 如果抓包中能看到数据包,但应用程序收不到,请将接收端绑定到 0.0.0.0:<DESTINATION_PORT> 而不是 localhost,然后检查本地防火墙以及 socket/进程设置。
更新规则后如果仍然收不到数据包,请将抓包时长、数据包数量、源 IP、目标 IP 和目标端口发送给支持团队。

资源