Mạng Yggdrasil
(yggdrasil-network.github.io)- Yggdrasil là một mạng thử nghiệm phương án phi tập trung thay thế cho các giao thức định tuyến có cấu trúc, sử dụng phương pháp định tuyến gọn nhẹ hướng tới các mạng mesh quy mô lớn
- Triển khai hiện tại là một router phần mềm chạy trong user space nhẹ, dễ cấu hình, kết nối định tuyến IPv6 được mã hóa đầu cuối giữa các bên tham gia
- Việc peering giữa các node có thể được cấu hình qua LAN, liên kết điểm-điểm và kết nối TCP/TLS trên Internet; peering thực tế có thể chạy trên IPv4 hoặc IPv6
- Đặc trưng gồm hỗ trợ topology quy mô lớn, phục hồi sau sự cố và sự kiện di động, mã hóa đầu cuối luôn bật, hoạt động P2P không có điểm trung tâm, và hỗ trợ nhiều hệ điều hành
- Vẫn đang ở giai đoạn alpha nên còn khả năng xảy ra thay đổi phá vỡ tương thích, nhưng nhìn chung đủ ổn định cho sử dụng hằng ngày và đang được một số người dùng stress test mạnh
Vấn đề mạng mà Yggdrasil muốn giải quyết
- Yggdrasil là một phương pháp định tuyến gọn nhẹ mới mang tính thử nghiệm
- Mục tiêu là trở thành một phương án thay thế hướng tới tương lai và phi tập trung cho các giao thức định tuyến có cấu trúc thường dùng trên Internet
- Được thiết kế như công nghệ giúp hiện thực hóa các mạng mesh quy mô lớn trong tương lai
-
Đặc tính thiết kế mạng
- Khả năng mở rộng: hỗ trợ các topology lớn, phức tạp hoặc ở quy mô Internet
- Tự phục hồi: phản ứng nhanh với lỗi kết nối hoặc các sự kiện di động
- Mã hóa: lưu lượng đi qua mạng luôn sử dụng mã hóa đầu cuối đầy đủ
- P2P: hoạt động theo kiểu ad hoc mà không có điểm tập trung tích hợp sẵn
- Đa nền tảng: hỗ trợ Linux, macOS, Windows, iOS, Android, v.v.
Cách triển khai và tham gia mạng
- Triển khai hiện tại là một router phần mềm chạy trong user space nhẹ
- Dễ cấu hình và hỗ trợ nhiều nền tảng
- Kết nối định tuyến IPv6 mã hóa đầu cuối giữa tất cả người tham gia mạng
- Peering giữa các node có thể được cấu hình bằng kết nối TCP/TLS
- Có thể dùng trên mạng cục bộ, liên kết điểm-điểm và Internet
- Yggdrasil Network cung cấp định tuyến IPv6 giữa các node, nhưng bản thân kết nối peering có thể được thiết lập trên mạng IPv4 hoặc IPv6
- Dự án vẫn đang ở giai đoạn alpha
- Có thể xảy ra thay đổi phá vỡ tương thích trong tương lai
- Dù vậy, nhìn chung vẫn ổn định cho sử dụng hằng ngày
- Một số người dùng đang sử dụng mạnh cho nhiều mục đích khác nhau và thực hiện stress test
-
Cách bắt đầu và đóng góp
- Có thể tham gia mạng từ máy tính cá nhân hoặc router thông qua cài đặt và cấu hình
- Có thể khám phá các dịch vụ nội bộ trong mạng do người dùng vận hành
- Có thể tham gia dự án thông qua trang dành cho nhà phát triển và GitHub
- Có thể báo cáo bug và vấn đề tại GitHub Issues
1 bình luận
Ý kiến trên Hacker News
Điều đầu tiên tôi tìm trên website và GitHub là đặc tả giao thức để có thể triển khai độc lập với bản triển khai tham chiếu, nhưng dù được quảng bá là scheme/protocol, không thấy đặc tả nào được liên kết ở đâu cả
Sau khi tự đào sâu, tôi tìm thấy [1] trong một nhánh phụ của một dự án GitHub khác, và xin dành lời khen cho tác giả. Tài liệu này có khá đầy đủ những nội dung cần thiết như danh tính mã hóa, định dạng thông điệp, giao thức truyền tải, ngữ nghĩa peering và stream, cập nhật spanning tree và chọn root, DHT, logic chuyển tiếp, session, v.v.
Tuy nhiên vẫn có các TODO như cách xác minh/ký cập nhật root, và thuật toán xử lý hòa khi chọn next hop còn mơ hồ. Ngoài ra, mọi gói tin đều phải được truyền đáng tin cậy theo đúng thứ tự và có thể phân mảnh thành các gói nhỏ hơn để phù hợp MTU, nên tầng truyền tải trông có vẻ gắn chặt với TCP
[1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...
Ở v0.4, DHT đã thay đổi khá nhiều, còn ở v0.5 thì DHT bị loại bỏ hoàn toàn. Vì đây là một dự án nghiên cứu, nhiều khả năng nó sẽ tiếp tục thay đổi cho đến khi đạt được thiết kế thỏa đáng hơn; đến lúc đó chắc chắn chúng tôi sẽ dành thêm thời gian cho tài liệu
Việc cần liên kết có thứ tự/đáng tin cậy ở giai đoạn hiện tại chủ yếu là để tiện phát triển, nhưng phần đó rõ ràng có thể sửa được
Theo tôi hiểu, yggdrasil và cjdns là các mạng P2P ảo được xây dựng trên Internet hiện có, và cung cấp dịch vụ định tuyến lớp 3 thông thường
Vì vậy vẫn cần ISP, backbone Internet, v.v. Có dự án nào đang cố tạo một mạng P2P toàn cầu thay thế lớp IP, có thể hoạt động mà không cần router của Verizon hay Cisco không?
Tôi biết một vài công nghệ mạng mesh cho các mạng nhỏ bị cô lập, nhưng không rõ có thứ gì hướng tới người tiêu dùng mà hỗ trợ từ hàng nghìn nút trở lên không
Xem đoạn đầu của https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape.... Đáng tiếc là cách định tuyến đó trên thực tế hóa ra không đủ khả năng mở rộng. Yggdrasil dùng một thuật toán định tuyến khác nên có thể có cơ hội
Cách đó có nhiều ưu điểm, đặc biệt là giúp dễ triển khai. Giờ đây chúng ta chạy mạng điện thoại trên IP để phục vụ các ứng dụng legacy. Nếu Yggdrasil này thành công, tôi nghĩ cuối cùng chúng ta sẽ chạy IP trên nó để phục vụ các hệ thống legacy
Đây không phải chỉ là một vấn đề trong số nhiều vấn đề, mà là giới hạn căn bản trong thiết kế. Internet (ARPAnet) ban đầu cũng khởi đầu như một mạng mesh, và các khái niệm trunk, backbone, định tuyến đã ra đời để giải quyết vấn đề mở rộng đó
Hay ý bạn là lớp IP trên một mạng riêng, chứ không phải trên “Internet”? Nếu vậy tôi tò mò bạn định kết nối mọi người với nhau như thế nào. Khi quy mô lớn dần, vì định tuyến mesh, mesh trở nên kém hiệu quả, và cuối cùng chẳng mấy chốc sẽ tái phát minh ra “Internet của riêng mình”. Chỉ là do không có tài nguyên để thực sự kết nối toàn cầu, nên nó sẽ không thể mang tính toàn cầu
Khi đó, nó gần như là một phản ứng mang tính lý tưởng/chủ nghĩa vô chính phủ trước phán quyết Pirate Bay giai đoạn 2009–2010. Theo tôi nhớ, cjdns xuất hiện sau đó một chút và đã thu hút phần lớn nhóm
Ai mà biết được rằng những hacker bất mãn và dân “cướp biển” phần mềm tạo ra một Internet tệ hơn thì sẽ không tồn tại lâu?
[0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
Liên kết liên quan:
Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - tháng 9 năm 2024, 3 bình luận
Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - tháng 1 năm 2022, 77 bình luận
Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - tháng 6 năm 2021, 102 bình luận
Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - tháng 1 năm 2019, 15 bình luận
Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - tháng 12 năm 2018, 3 bình luận
Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - tháng 12 năm 2018, 1 bình luận
Nếu cần một mạng IP P2P mesh thực sự có thể xuyên qua tường lửa/NAT thì dùng Tailscale/Headscale là được
Nếu muốn một mạng kết nối P2P định địa chỉ bằng khóa mã hóa, trong số các dự án tương đối gần đây có một cái làm việc này khá tốt: https://www.iroh.computer
Nó xuyên qua tường lửa/NAT và thiết lập kết nối QUIC. Đã có hai proof-of-concept dùng được:
https://github.com/n0-computer/sendme
https://github.com/n0-computer/dumbpipe
Có ưu điểm gì không? Nếu chỉ muốn chạy một VPN riêng nhẹ cho cá nhân thì Tailscale rất tuyệt, còn nếu muốn tự host mạng thì cũng có Headscale với nhiều lợi thế
3~4 năm trước tôi khá kỳ vọng vào nó, nhưng giờ trông phần nào giống một dự án bị bỏ bê. Tò mò không biết có ai đang dùng thực tế không và ấn tượng ra sao
Cuối năm ngoái chúng tôi đã phát hành phiên bản 0.5 với thiết kế giao thức mới, và khoảng một tháng trước đã phát hành 0.5.9, cải thiện đáng kể độ trễ mạng nhờ thay đổi chi phí liên kết
Tôi dùng nó như VPN để kết nối điện thoại với mạng gia đình, cả hai đều peering riêng với một VPS
Phức tạp hơn một chút so với kết nối trực tiếp về nhà, nhưng cấu hình dễ hơn so với việc phải bận tâm đến IP động, port forwarding và trao đổi khóa WireGuard
Peering multicast hoạt động ổn, nên ngay cả khi ở nhà tôi vẫn có thể truy cập trực tiếp máy chủ gia đình bằng cùng một Ygg IP. Vấn đề là phải dùng IP. Ứng dụng iOS không hỗ trợ thiết lập máy chủ DNS tùy chỉnh cho kết nối Ygg VPN
Với mục đích này thì Headscale thực ra là giải pháp tốt hơn, nhưng việc chỉ cần thêm một peering là có một Internet thay thế cũng khá thú vị
Hiện tôi dùng yggdrasil trên mọi thiết bị, nên dù ở sau NAT chúng vẫn có thể ssh vào nhau
Dùng termux và ứng dụng Yggdrasil Android trên Android, tôi có thể truy cập các tệp trên máy tính ở nhà khi đang di chuyển mà không cần lưu chúng lên một dịch vụ đám mây nào đó
Việc phát triển khá sôi động, và trong bản phát hành mới nhất, thuật toán định tuyến đã được cải thiện để ưu tiên các hop có độ trễ thấp nhất, đem lại cải thiện cảm nhận được
Nếu kỳ vọng những hub cộng đồng lớn trong mạng thì có thể sẽ thất vọng, nhưng bạn cũng có thể tự tạo một cái. Có nhiều người dùng nó theo nhu cầu riêng, và dự án còn lâu mới là bị bỏ bê
Tôi cứ tưởng đây là một bản phân phối Linux
https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X
Trong lĩnh vực này còn có Reticulum Network Stack: https://reticulum.network/
Trong FAQ có ghi “Yggdrasil có ẩn danh không? Không, mục tiêu của dự án Yggdrasil không phải là cung cấp tính ẩn danh”
Tôi hiểu vấn đề này khó và có những điểm cần giải quyết vượt ra ngoài vấn đề kỹ thuật đơn thuần, nhưng nói thật thì với tôi, như vậy là bị loại ngay từ điểm xuất phát. Nếu là sự tiến hóa của Internet thực tế, tôi nghĩ nó phải bao gồm tính ẩn danh thực chất
Nếu bỏ phần đó ra, tôi không rõ với cấu hình hiện tại nó thực sự giải quyết được vấn đề nào của Internet hiện có vốn chưa được giải quyết
Mạng ẩn danh thường có chi phí và overhead rất lớn. Vì để che giấu, chúng cố ý tạo ra các tuyến đường dài và gián tiếp. Nhìn vào hiệu năng và độ tin cậy nhìn chung thấp của các circuit Tor, có thể hiểu vì sao ta không muốn toàn bộ Internet vận hành theo cách đó
Không có lý do gì không thể chạy mạng Yggdrasil rồi vận hành mạng I2P bên trong nó. Như vậy, các giao tiếp không cần ẩn danh sẽ ít bị mất hiệu năng hơn, và cũng có thể tạo peer ẩn danh mà không cần đưa lên clearnet
Ý tưởng địa chỉ được suy ra từ khóa công khai thật sự rất hay, nhưng cách tiếp cận này có vấn đề. Vì Yggdrasil hiện dùng địa chỉ IPv6 nên độ dài bị giới hạn rất nhiều và có thể tìm được va chạm
Có một cách đi vòng là brute-force để tìm khóa có nhiều bit tiền tố hơn. Theo tôi hiểu, kế hoạch dài hạn là bổ sung một giao thức tùy chỉnh không bị giới hạn độ dài địa chỉ
Nhưng việc tạo va chạm với tập địa chỉ đang được sử dụng vẫn có vẻ phi thực tế. Trong bối cảnh Yggdrasil, trường hợp đầu thực sự là vấn đề đến mức nào?
Dù vậy, hiện tại điều đó có nghĩa là gần như mọi ứng dụng hỗ trợ IPv6 hiện có đều chạy trên Yggdrasil mà không cần sửa đổi, và đó là một đặc tính tốt đối với một testnet
Có câu “Yggdrasil is a new experimental compact routing scheme”, nhưng giờ nó đâu còn mới đến vậy nữa nhỉ? Ít nhất cũng đã 6 năm rồi