---
title: "Direct Shreds - UDP Forwarding (Raw Shreds)"
description: "UDP Forwarding 通过 UDP 将原始 Shreds 送达已配置的公共 IPv4 地址和端口，分为 UDP Forwarding Standard 与 UDP Forwarding Premium。"
canonical: "https://erpc.global/zh/doc/shredstream/udp-forwarding/"
locale: "zh"
---

# 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 动手试试

- 示例代码（`shreds-udp-rs`，Rust）：新代币检测只是一个常见示例，可以换成您自己的检测目标。  
  https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs  
- 在接收端配置您为 UDP Forwarding 保存的目标地址 `ip:port`。
- 还没有使用 UDP？可以在本地或您自己的服务器上运行，查看日志并自定义钩子。

## 收不到 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 和目标端口发送给支持团队。

服务商参考文档：[Hetzner Cloud Firewall](https://docs.hetzner.com/cloud/firewalls/overview/)、[Hetzner Robot Firewall](https://docs.hetzner.com/robot/dedicated-server/firewall/)、[AWS Security Groups](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)、[AWS Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) 和 [Microsoft Pktmon](https://learn.microsoft.com/en-us/windows-server/networking/technologies/pktmon/pktmon)。

## 资源

- 所有代码和 README 文档都在 Solana Stream SDK 仓库中：  
  https://github.com/ValidatorsDAO/solana-stream
