- GotaTun คือ อิมพลีเมนเทชัน WireGuard ที่เขียนด้วย Rust โดยมีเป้าหมายเพื่อการเชื่อมต่อ VPN ที่รวดเร็ว มีประสิทธิภาพ และเสถียร
- พัฒนาขึ้นจากการ fork โปรเจกต์ BoringTun ของ Cloudflare และผสานฟีเจอร์ความเป็นส่วนตัวของ Mullvad เช่น DAITA และ Multihop
- เพื่อนำมาจัดการปัญหาการแครชที่เกิดใน wireguard-go เดิม จึงเริ่มนำมาใช้กับเวอร์ชัน Android ก่อน ทำให้อัตราการแครช ลดจาก 0.40% → 0.01%
- การย้ายมาใช้ Rust ช่วยขจัดปัญหา ความซับซ้อนของ FFI และ ความไม่เสถียรของ Go runtime พร้อมปรับปรุงการบำรุงรักษาและประสิทธิภาพในการดีบัก
- Mullvad มีแผนในปี 2026 ที่จะ ขยาย GotaTun ไปยังทุกแพลตฟอร์ม พร้อมทั้ง ตรวจสอบความปลอดภัยและปรับปรุงประสิทธิภาพ
ภาพรวมของ GotaTun
- GotaTun คือ อิมพลีเมนเทชัน WireGuard® บน Rust ที่พัฒนาโดย Mullvad VPN โดยมุ่งเน้นความเร็ว ความเสถียร และประสิทธิภาพ
- พัฒนามาจากการ fork BoringTun ของ Cloudflare
- ชื่อนี้เป็นการผสมระหว่าง BoringTun กับอุโมงค์ Götatunneln ในเมืองเยินเชอปิงของสวีเดน
- ผสานฟีเจอร์เสริมความเป็นส่วนตัวของ Mullvad เช่น DAITA และ Multihop
- ปรับแต่งประสิทธิภาพด้วย safe multithreading ของ Rust และ กลยุทธ์หน่วยความจำแบบ zero-copy
- ปล่อยใช้งานบน Android แล้วเมื่อปลายเดือนพฤศจิกายน 2024 และแพลตฟอร์มอื่นมีกำหนดเปิดตัวในปี 2026
ข้อจำกัดของ wireguard-go เดิม
- แอปมือถือของ Mullvad ใช้ wireguard-go ที่พัฒนาด้วย Go มาหลายปี
- ผู้ให้บริการ VPN หลายรายก็ใช้อิมพลีเมนเทชันเดียวกันนี้
- ตั้งแต่กลางปี 2024 Mullvad ได้ fork และดูแล wireguard-go เองเพื่อรองรับ DAITA และ Multihop
- อย่างไรก็ตาม การแครชที่ถูกรายงานใน Google Play Developer Console มากกว่า 85% เกิดจาก wireguard-go
- บางปัญหาได้รับการแก้ไขแล้ว แต่ยังมีอีกหลายส่วนที่คงอยู่
- มีความซับซ้อนและความไม่เสถียรจากการใช้ FFI (foreign function interface) ระหว่าง Rust กับ Go
- การทำงานของ Go runtime ไม่โปร่งใสเมื่อดูจากฝั่งโค้ด Rust และเมื่อแครชก็ กู้ stack trace ได้ยาก
- ทำให้ การดีบักและการบำรุงรักษาระยะยาว เป็นเรื่องยาก
ผลลัพธ์บน Android
- หลังนำ GotaTun มาใช้ ไม่พบการแครชแม้แต่ครั้งเดียว
- การแครชทั้งหมดที่เคยเกิดจาก wireguard-go ถูกกำจัดออกไป
- หลังแอป Android เวอร์ชัน 2025.10 (ออกปลายเดือนพฤศจิกายน) อัตราการแครชที่ผู้ใช้รับรู้ได้ ลดจาก 0.40% → 0.01%
- ในฟีดแบ็กของผู้ใช้ก็มีรายงานว่า ความเร็วดีขึ้นและใช้แบตเตอรี่น้อยลง
แผนในอนาคต
- มีแผนทำ การตรวจสอบความปลอดภัยโดยบุคคลที่สาม ในช่วงต้นปี 2026
- มีแผนแทนที่ wireguard-go ด้วย GotaTun บน ทุกแพลตฟอร์ม (รวมเดสก์ท็อปและ iOS)
- จะเดินหน้าทำ การปรับปรุงประสิทธิภาพ อย่างต่อเนื่อง
- Mullvad กำหนดให้ปี 2026 เป็น จุดเปลี่ยนสำคัญของการขยาย GotaTun
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บน Pixel 8 รู้สึกได้ชัดเจนเลยว่า ประสิทธิภาพดีขึ้น
ก่อนหน้านี้ wireguard-go ดันความเร็วได้ไม่ถึง 100Mbps แต่เวอร์ชัน GotaTun ทำได้เกิน 500Mbps
แต่มีบั๊กใหม่ทำให้เข้า โหมด deep sleep ไม่ได้ เลยมีปัญหาแบตหมดเร็วขึ้นแบบกะทันหันถึง 10 เท่า
Pixel 8 แรงกว่ามาก ถ้ามีปัญหาแบบนี้ก็น่าจะเป็นบั๊กฝั่ง Android มากกว่า
ฉันชอบ WireGuard มากจนทำโปรเจ็กต์ชื่อ WrapGuard ขึ้นมาเอง
เขียนด้วย Go เพื่อให้รันแอปได้โดยไม่ต้องมีสิทธิ์ root
ฉันไม่ค่อยรู้ Rust เลยสงสัยว่า Rust เหมาะกับเฟิร์มแวร์หรืองานซอฟต์แวร์เครือข่ายมากกว่ากันไหม
ลิงก์ GitHub ของ WrapGuard
Rust มี timing ที่คาดเดาได้ และระบบ type ที่แข็งแรง เลยเชื่อถือได้สูง
แต่สำหรับซอฟต์แวร์เครือข่าย Go ก็ถือว่าดีพอ และสุดท้ายข้อสรุปคือ “ใช้ภาษาที่คุ้นเคยดีกว่า”
ตั้งใจจะลองใช้ container tool ใหม่ของ Apple
เช่น airVPN อนุญาตให้เชื่อมต่อพร้อมกันได้ 5 จุด ถ้าสามารถ รวมมันเข้าด้วยกันเพื่อรวมทราฟฟิก ได้ก็น่าสนใจ
อยากให้ GotaTun ถูกนำไปใช้กับ แอป Tailscale บน Android ด้วย ฉันใช้ Tailscale เพื่อเชื่อมต่อกับ Mullvad
ทีม Tailscale เชี่ยวชาญในการปรับแต่งไลบรารีฝั่ง Go อยู่แล้ว
และในเดือนเมษายน 2023 ก็ทำ ประสิทธิภาพ 10Gbps ได้ด้วย wireguard-go
บล็อกโพสต์ที่เกี่ยวข้อง
ประเด็นเรื่อง memory paging ของ Go และการป้องกัน stack overflow ของ goroutine น่าสนใจมาก
สงสัยว่าทำไม GoString ถึง page in หน่วยความจำเยอะขนาดนั้น
ดู อีสชู #6727, อีสชู #7728
อยากให้โปรโตคอล WireGuard เองได้รับการปรับปรุงด้วย
ตอนนี้มันยังมีข้อจำกัดคือทะลุ การบล็อกจากรัฐบาลหรือ ISP ได้ยาก
WireGuard ถูกออกแบบมาให้เป็น L3 UDP tunnel แบบเรียบง่าย
แต่ถ้ามีอยู่ในตัวโปรโตคอลเลยก็น่าจะดีกว่า
ถ้ามีทีมพัฒนาอยู่ตรงนี้ ฉันอยากถามว่า — ทำไมถึงไม่ upstream การเปลี่ยนแปลงกลับไปที่ BoringTun
ยิ่งมีหลาย implementation ก็ยิ่งช่วยเพิ่ม ความเสถียรและความน่าเชื่อถือของโปรโตคอล
ส่วนตัวฉันไว้ใจ Mullvad มากกว่า Cloudflare
ใน Obscura VPN ได้ย้ายไปใช้ฟอร์ก NepTUN
ลิงก์ GitHub ของ NepTUN
ฉันสงสัยว่าทำไม Mullvad ถึงสร้างฟอร์กใหม่ขึ้นมาเอง และมีแผนจะรวมกับฟอร์กเดิมหรือไม่
ฉันคิดว่า Mullvad เป็นตัวเลือกที่ น่าเชื่อถือที่สุด ในบรรดา VPN
แต่คนส่วนใหญ่มักสนใจ โค้ดส่วนลด จากยูทูบเบอร์มากกว่า
NordVPN หลบเรื่องนั้นได้ดีกว่า เช่น ตอนเข้า Imgur หรือเข้าจากในสหราชอาณาจักร Mullvad จะโดนบล็อก
ฉันเคยนึกว่า WireGuard บน Android ทำงานอยู่ในเคอร์เนล
อยากเห็นข้อมูลวิเคราะห์สาเหตุ การแครชของ wireguard-go มากกว่านี้
สงสัยว่าเป็นบั๊กในไลบรารีเองหรือเป็นปัญหา FFI
ฉันไม่ได้ใช้โค้ดพร็อกซีที่เขียนด้วย Go ในแอป MintFlow
แต่เลือกใช้ Rust ในการทำ โปรโตคอลพร็อกซี บางส่วน
ส่วน WireGuard ใช้ implementation ภาษา C ที่อิงกับปลั๊กอิน fdio vpp
ฉันเองก็เคยเล่นกับ vpp อยู่ประมาณ 6 เดือน และคิดว่ามันน่าสนใจทีเดียว