Traefik UDP 라우터 문서
본문
Router
UDP Router
UDP 라우터는 들어오는 UDP 패킷을 처리할 수 있는 서비스에 연결하는 일을 맡아요. HTTP, TCP 라우터와 달리 UDP 라우터는 전송 계층에서 동작하며, UDP가 비연결성(connectionless)이라는 특성 때문에 고유한 특징들을 갖고 있어요.
UDP 라우터의 특징
-
UDP는 비연결성이라서 매칭할 요청 URL 경로나 Host SNI 개념이 없어요
-
UDP 라우터는 본질적으로 패킷을 백엔드 서비스에 분배하는 로드 밸런서예요
-
UDP 라우터는 UDP 서비스만 대상으로 삼을 수 있어요 (HTTP나 TCP 서비스는 불가)
-
클라이언트와 백엔드 사이의 상태를 유지하기 위해 세션을 설정 가능한 타임아웃으로 추적해요
설정 예시
Structured (YAML)
udp:
routers:
my-udp-router:
entryPoints:
- "udp-ep"
- "dns"
service: my-udp-service
Structured (TOML)
[udp.routers]
[udp.routers.my-udp-router]
entryPoints = ["udp-ep", "dns"]
service = "my-udp-service"
Labels
labels:
- "traefik.udp.routers.my-udp-router.entrypoints=udp-ep,dns"
- "traefik.udp.routers.my-udp-router.service=my-udp-service"
Tags
{
"Tags": [
"traefik.udp.routers.my-udp-router.entrypoints=udp-ep,dns",
"traefik.udp.routers.my-udp-router.service=my-udp-service"
]
}
설정 옵션
| Field | Description | Default | Required |
| entryPoints | 라우터가 연결되는 엔트리포인트 목록이에요. 지정하지 않으면 UDP 라우터는 모든 UDP 엔트리포인트에 연결돼요. | All UDP entry points | No |
| service | 매칭된 UDP 패킷을 처리할 서비스의 이름이에요. UDP 서비스는 보통 여러 백엔드 서버에 패킷을 분배하는 로드 밸런서 서비스예요. 자세한 내용은 UDP Service 문서를 참고하세요. | | Yes |
세션과 타임아웃
UDP는 비연결성이지만, Traefik의 UDP 라우터 구현은 클라이언트와 백엔드 사이의 진행 중인 통신에 대한 상태를 유지하기 위해 세션에 의존해요. 이 덕분에 프록시가 백엔드에서 온 응답 패킷을 어디로 전달해야 할지 알 수 있어요.
각 세션에는 연관된 타임아웃이 있어서, 지정된 시간 동안 비활성 상태인 세션을 정리해요.
세션 타임아웃은 정적 구성의 entryPoints.name.udp.timeout 옵션으로 설정할 수 있어요. 자세한 내용은 EntryPoints 문서를 참고하세요.
라우터 이름 짓기
-
라우터 이름에는
@문자를 쓸 수 없어요 -
라우터 이름은 설명적으로 짓고 여러분의 명명 규칙을 따르는 게 좋아요
-
프로바이더별 구성(Docker, Kubernetes)에서는 라우터 이름이 서비스 이름을 바탕으로 자동 생성되는 경우가 많아요