WireGuard-Go 성능 차이와 AmneziaWG 간단히 알아보기

와어어가드는 VPN 프로토콜인 것을 아는데 Wireguard-Go는 처음 들어보시는 분들이 많으실거예요. 최근 새로생긴 VPN 리뷰를 하다가 Wireguard-Go 포크버전 기술이 적용되어있는 것을 보고 저도 모르는 부분을 함께 공부할 겸 여기에 간단하게 적어봅니다.

About WireGuard-Go

뒤에 Go가 붙은 이유는 개발언어가 Go 랭귀지여서 그렇습니다. Wireguard-Go 깃헙: https://github.com/WireGuard/wireguard-go에 들어가셔서 다운로드와 소개 글을 보실 수 있습니다.

왜 따로 만든걸까요?

Wireguard-Go는 일종의 도커, Vmware와 비슷한 면이 있다고 봅니다. 시스템에 종속되지 않고 좀 더 자유롭게 독립적인 공간에서 작동됩니다.

그래서인지 공식 사이트 설명에는 “WireGuard의 공식 사용자 공간(User-space) 구현“이라고 나옵니다. 가상 컴퓨터와 비교해보면 상당부분 쉽게 이해가 됩니다. 일반적으로 조금의 성능 손실이 있을 수 있지만 샌드박스화, 다양한 운영체제 위에서 작동 가능, 독립 실행 등의 장점을 가질 수 있기 때문입니다.

Go의 특성상 의존성없이 단일 바이너리로 컴파일이 가능해 앱 안에 내장해 독립적인 VPN 구현, 루트 권한없이 사용 가능한 VPN 구성 등이 가능한 부분 등 결론적으로 유연성, 이식성, 독립성 등의 장점이 있다고 이해하시면 될 것 같습니다.

Wireguard-Go 성능 차이

Wireguard-Go는 느리다?

리눅스를 기준으로 봤을 때, 커널에서 바로 돌아가는게 아니라 Wireguard-Go는 유저 공간에서 작동되는 것이니 일반적으로 볼 때 당연히 조금 더 느릴거라고 생각할 수 밖에 없습니다.

하지만 이런 글도 있습니다. “Tailscale WireGuard-go PR performs 264% better then Kernel WireGuard” 간단하게 요약해드릴게요.

이 사람은 이 가진 서버 사양은

  • 네트워크: 10G 업링크
  • CPU: Intel i7-8700 @ 3.20GHz
  • 메모리: 64GB DDR4
  • NIC: Intel 82599ES 10G SFP+

이 사양에서 WireGuard 커널 vs Tailscale의 wireguard-go 둘의 성능을 비교했다고해요.

실험 결과

  1. 커널 WireGuard 성능
    • 평균 대역폭: 2.77 Gbps
    • 재전송(Retransmits): 5824
    • ksoftirqd가 단일 CPU 코어를 100% 점유
    • softirq(소프트 인터럽트) 과부하 현상
  2. Tailscale wireguard-go 성능
    • 평균 대역폭: 7.33 Gbps (약 264% 향상)
    • 재전송: 40941 (더 많지만 성능은 더 우수)
    • CPU 사용이 균형적으로 분산됨, htop으로 확인
    • 표준 wireguard-go는 성능이 커널 버전과 유사 → Tailscale의 최적화 효과가 핵심

리눅스 환경에서는 시스템에 통합되어있는 커널 모듈이 더 빠르며 권장된다는데 결과가 혼란스럽기도 합니다. 이는 테스트한 유저의 설정에 따른 결과일수도 있고 절대적인 결과치는 아니라 참고만 해보시라고 올려드립니다.

Tailscale에서 2023년에 올린 글 https://tailscale.com/blog/more-throughput에 좀 더 자세히 나와있습니다.

AmneziaWG

Wireguard는 태생적으로 난독화(통신 패킷 위장) 기능이 없습니다. AmneziaWG는 이런 부분을 보완해서 만들었다고 합니다. – https://docs.amnezia.org/documentation/amnezia-wg/

개요

AmneziaWG는 현재 전 세계적으로 가장 많이 사용되며 성능과 보안면에서도 좋은 평가를 받고있는 VPN 프로토콜인 WireGuard의 기능 보완 버전이라고 할 수 있고 WireGuard-Go를 포크(fork)하여 개발되었습니다. WireGuard의 아키텍처와 고성능은 그대로 유지하되 심층 패킷 검사(DPI: Deep Packet Inspection) 시스템에 의한 탐지로부터의 보호를 제공합니다.

WireGuard고유한 패킷 서명(Signature) 때문에 네트워크 상에서 탐지되기 쉬운 문제를 가지고 있는데, AmneziaWG는 고급 난독화(obfuscation) 기술을 사용하여 이 문제를 해결하고, 그 결과 일반 인터넷 트래픽과 쉽게 구별되지 않도록 트래픽을 위장합니다.

한마디로 Wireguard를 더 유연하게 사용할 수 있는 Wireguard-go에 와이어가드의 부족한 점인 난독화 기능을 추가한 것이라고 이해하면 되겠습니다. 윈도우, iOS, macOS, 안드로이드, OpenWRT 공유기와 같이 다양한 환경에서도 사용이 가능합니다.

마무리

Wireguard-Go, AmneziaWG 둘다 우리가 일반적으로 사용할 일이 거의 없습니다. 저도 NymVPN 리뷰하다가 AmneziaWG를 알게되어 글을 쓰게 됐습니다. (WG는 WireGuard를 뜻 합니다.)

여기까지 간단하게 알아봤습니다. 자세한 내용은 각 홈페이지에서 공식 문서를 통해 정확한 정보를 얻으세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다