Tailscale, 패킷 복사 제거하고 멀티큐 도입해 데이터 평면 가속
- Tailscale이 Linux와 Android에서 패킷을 각각 64KiB 버퍼에 복사하지 않고 큰 읽기 연산 안에서 위치만 표시해, 많은 구성에서 약 5% 속도 향상을 얻음
- wireguard-go는 1KiB짜리 작은 패킷도 64KiB 버퍼에 복사하는 단일 버퍼 크기만 제공했고, 여러 패킷이 하나의 할당을 공유하도록 바꾸면서 메모리 사용량을 줄임
- 패킷 대기 큐 길이를 단축해 대부분 쓰이지 않던 여유 깊이를 걷어내고 지연 시간과 메모리 오버헤드를 낮춤
- 서브넷 라우터, 앱 커넥터, exit node가 여러 스트림을 단일 스레드 파이프라인으로 처리하던 구조를 여러 개의 lane으로 나누는 멀티큐를 2026년 하반기에 도입할 예정임
- 앞으로 나올 안정 버전 클라이언트에 처리량과 메모리 개선을 넣고, 고객이 겪는 성능 측정 도구 문제도 해결 대상으로 꼽음
Hacker News opinions
리눅스랑 안드로이드에만 집중한 게 그냥 거기가 시작점이라 그런 건지, 아니면 거기서만 가능한 기법이라 그런 건지 궁금하네.
아무래도 Darwin이나 NT에는 1:1로 없는 리눅스 기능을 활용하는 느낌임.
"Leaves them where they landed" 이 문구는 slop 냄새가 좀 남. NAT traversal도 마치 자기들이 처음 한 것처럼 말하는 것도 그렇고.
우리 케이스에서는 250개 세션에 겨우 60mb/s 흘렸더니 터널 지연이 파라볼릭으로 튀더라.
exit node 쓸 때 배터리 소모 좀 줄여줬으면 좋겠음.
원래 Tailscale 진짜 좋아했는데, 집 네트워크에 raw WireGuard 깔고 DDNS 연결하니 바로 무의미해졌음. 모바일 DNS 문제로 안 싸워도 되고 더 안정적이고 체감상 더 빠름.
설정 좀 공유해줄 수 있나? 나도 nuc랑 rpi용 자체 호스팅 WireGuard를 알아보다가 장치 추가랑 제거가 너무 편해서 Tailscale로 정리했거든.
난 Tailscale이 아무 포트도 안 열고 SSH/RDP로 서버에 들어갈 수 있는 게 제일 좋음.
Tailscale은 2분에 셋업 끝나고 장치 추가도 제로 컨피그임. WireGuard는 30분에서 한 시간 걸리고 포트포워딩, DDNS, 장치마다 키 배포까지 직접 해야 함. 대신 컨트롤은 100% 내몫이고, 성능 차이는 잘 모르겠음.
raw WireGuard가 엄청 단순하다는 건 좀 과장인데. IPsec보다 단순한 건 맞지만 Tailscale보다 단순한 건 절대 아님. 몇 달 안 만지니까 설정 세부를 다 까먹어서 결국 Tailscale로 이주했음.
케이스마다 다르지. 라즈베리 2대로 본가랑 장모님댁에서 exit node를 돌리는데, 최소한 한 곳 공유기는 포트포워딩도 제대로 안 됨. Tailscale이 5분에 해결해줬음.
내 생각에 이게 Tailscale 최대 약점임. 느림. Windows랑 Mac 클라이언트에서 1Gbps도 못 넘고, 리눅스에서도 큰 패킷 합성 벤치마크로 10Gbps가 간당간당함. 커널 WireGuard에 밀리고 IPsec은 DPDK/XDP로 100/400Gbps가 나오는데 zero-copy 네트워킹에 대한 의지가 이 글에서 안 보임.
리눅스에서 userspace wireguard 그만 좀 해줘. 이슈 426이 6년째 열려 있고 지금은 락이 걸렸음ㅋㅋ. 그리고 이슈 15724 DNS privacy도 부탁함. 엔터프라이즈 SaaS DNS 안 쓰는 일반 유저도 프라이버시를 받을 자격이 있음.
커널 IPsec에는 copy.fail 같은 LPE CVE도 있었잖음. VPN으로 얻는 이득이 유저 보안 기본 보장을 깨먹어서 다 상쇄됨. 차라리 kernel crypto 쓰느니 VPN을 아예 안 쓰는 게 낫다.
커널 wireguard 쓰면 빨라진다는 댓글이 있는데 그렇게 단순하진 않음. 한동안 우리가 튜닝한 wireguard-go가 커널 wireguard보다 빨랐고, 그쪽이 그 개선을 흡수해서 지금은 같이 다음 자릿수를 노리는 중임. 초고대역폭은 DPDK처럼 주로 userspace인 쪽이 장기적으로 맞고, 게다가 wireguard 암호 스위트가 하드웨어 가속을 못 받아서 수백 Gbps로 가려면 패킷 포맷을 통째로 바꿔야 할 수도 있음.
PQ가 붙는 순간 그건 WireGuard가 아님. 단순 handshake랑 최소 상태가 장점인데 PQ 알고리즘은 키가 커서 그 단순함이 안 나옴. 차라리 IPsec으로 가는 게 낫고 하드웨어 가속도 이미 다 있음.
PSK를 정의하면 양자내성은 확보됨. 대역외 키 배포가 필요하긴 한데 어차피 공개키도 그렇게 배포하잖아.
마케팅 말고는 Tailscale이 WireGuard 프로토콜 스펙에 얽매일 이유가 없음. 어차피 이미 호환 안 되고, 하드웨어 가속되는 AES로 가려면 프로토콜 협상에 넣으면 큰 고통 없이 될 듯.
Apple TV는 성능 좀 올려줄 수 있나? exit node로 쓰는데 대역폭이 항상 너무 적음.
수백 Gbps가려면 패킷 포맷을 바꿔야 한다는 건데, 그럼 AES 같은 하드웨어 오프로드가 더 빨라져서 그런 건가, 아니면 100gbps 데이터 패스에서 CPU를 점유하는 게 안 좋아서인 건가? WireGuard 사이트는 ChaPoly가 하드웨어 가속 AES보다 못하지 않고 SIMD로 더 빨라진다고 하던데. 그리고 그 다음 자릿수 작업 지금 진행 중인가?