---
title: "Direct Shreds - UDP Forwarding (Raw Shreds)"
description: "UDP Forwarding은 원시 Shreds를 설정된 공용 IPv4 주소와 포트로 UDP를 통해 전달하며, UDP Forwarding Standard와 UDP Forwarding Premium으로 제공됩니다."
canonical: "https://erpc.global/ko/doc/shredstream/udp-forwarding/"
locale: "ko"
---

# Direct Shreds - UDP Forwarding (Raw Shreds)

UDP Forwarding은 원시 Shreds를 UDP를 통해, 직접 설정한 하나의 공용 IPv4 주소와 포트로 전달합니다. UDP Forwarding Standard와 UDP Forwarding Premium은 선택한 리전에서 Shreds가 전달되어 오는 방식이 다릅니다. Standard에서는 ERPC가 Shreds를 해당 리전의 노드에서 포워딩하고, Premium에서는 메시 네트워크가 포워딩합니다.

## UDP Forwarding Standard

**UDP Forwarding Standard**는 원시 Shreds를 구독에 설정된 공용 IPv4 주소와 포트로 UDP를 통해 포워딩합니다. 초기 설정 중 사용 가능한 리전을 선택하고, 목적지로 유효하고 비어 있지 않은 공용 IPv4 주소와 포트를 저장하세요. 목적지는 나중에 업데이트할 수 있습니다. ERPC는 30초 새로 고침 주기로 포워딩 구성을 적용하며 heartbeat 활성화는 필요하지 않습니다. 리전도 나중에 대시보드에서 필요한 만큼 여러 번 변경할 수 있습니다. 리전을 변경하면 소스 IP가 바뀌므로, 수신 측 방화벽에서 새 소스 IP를 허용해야 합니다. 구독이 새 리전으로 이동하는 동안 전달이 잠시 중단됩니다. 새 리전에 현재 여유 용량이 없으면 해당 변경은 이루어지지 않으며, 리전도 목적지도 바뀌지 않습니다.

- 선택한 리전의 노드에서 ERPC가 원시 Shreds를 설정된 목적지로 UDP를 통해 포워딩하므로, Shreds는 하나의 소스 IP에서 도착합니다.

## UDP Forwarding Premium

**UDP Forwarding Premium**은 메시 네트워크에서, 구독에 설정된 공용 IPv4 주소와 포트로 원시 Shreds를 UDP를 통해 전달합니다. 메시 네트워크는 Shred마다 이 네트워크에 가장 먼저 도착한 사본을 포워딩합니다. 대시보드에 표시된 어느 소스 IP에서든 Shreds가 전송될 수 있습니다. Premium에서는 Shreds가 Standard보다 1–3 ms 먼저 도착하는 경우가 많습니다. 2026년 10월 30일, 프랑크푸르트에 있는 ERPC 수신기로 120초 동안 1회 측정했습니다. 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. 캡처 결과가 계속 0이면 OS 방화벽과 OS 외부의 방화벽을 모두 확인하세요. 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: 대시보드에 표시된 소스 IP마다 규칙을 하나씩 만들어, 각 `<SOURCE_IP_n>/32`에서 목적지 포트 `<DESTINATION_PORT>`로 들어오는 UDP를 허용하세요. 소스 포트는 제한하지 마세요.
3. 캡처에는 패킷이 보이는데 애플리케이션에서 수신되지 않는다면, 수신기를 localhost가 아닌 `0.0.0.0:<DESTINATION_PORT>`에 바인딩한 뒤 로컬 방화벽과 소켓/프로세스 설정을 확인하세요.

규칙을 업데이트한 후에도 패킷이 도착하지 않으면 캡처 지속 시간, 패킷 수, 소스 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
