- Là ngăn xếp mạng dựa trên mật mã học, hoạt động trên nhiều loại môi trường truyền dẫn như LoRa, packet radio, WiFi và hỗ trợ liên lạc ổn định ngay cả trong môi trường tốc độ cực thấp, độ trễ cao
- Bao gồm các tính năng tập trung vào bảo mật như mã hóa đầu cuối, ẩn danh người gửi, định tuyến multihop tự cấu hình, xác nhận chuyển phát không thể giả mạo
- Không phụ thuộc vào ngăn xếp IP và có thể chạy trong không gian người dùng trên môi trường Python 3 mà không cần kernel module
- Hướng đến xây dựng mạng chi phí thấp, tự chủ, có thể liên kết hàng nghìn mạng độc lập với nhau mà không cần kiểm soát tập trung hay kiểm duyệt
- Là công cụ mã nguồn mở có giá trị ứng dụng cao cho nhà phát triển và nhà nghiên cứu trong xây dựng hạ tầng truyền thông phân tán và mạng off-grid
Tổng quan về Reticulum
- Reticulum là ngăn xếp mạng dựa trên mật mã học, cho phép xây dựng mạng cục bộ và mạng diện rộng bằng phần cứng phổ thông
- Hoạt động cả trong môi trường độ trễ cao, băng thông thấp
- Cung cấp các tính năng mã hóa đầu cuối, ẩn danh người gửi, truyền multihop tự cấu hình, đánh địa chỉ hiệu quả, xác nhận chuyển phát không thể giả mạo
- Mục tiêu là để bất kỳ ai cũng có thể trở thành nhà vận hành mạng của chính mình, xây dựng các mạng tự chủ, có thể liên kết mà không cần kiểm soát tập trung
- Reticulum không phải là một mạng đơn lẻ mà được thiết kế như công cụ để xây dựng hàng nghìn mạng độc lập
- Nó cũng có thể hoạt động dựa trên IP, nên có thể tunnel qua Internet hoặc mạng riêng
- Chạy trong môi trường Python 3, không cần kernel module hay driver
Tính năng chính
- Hỗ trợ đánh địa chỉ duy nhất toàn cục và định tuyến multihop tự cấu hình
- Có thể truyền dữ liệu trên nhiều loại môi trường vật lý và topo mạng khác nhau
- Đảm bảo ẩn danh người gửi: gói tin không chứa địa chỉ nguồn
- Giao tiếp dựa trên mã hóa bất đối xứng X25519 và chữ ký Ed25519
- Sử dụng bộ khóa Curve25519 512 bit
- Hỗ trợ Forward Secrecy, mã hóa AES-256-CBC và xác thực SHA256 HMAC
- Hệ thống interface có khả năng mở rộng cho phép thêm interface tùy chỉnh
- Cung cấp API đơn giản giúp dễ phát triển ứng dụng phân tán
- Hỗ trợ truyền dữ liệu dung lượng lớn, bao gồm nén tự động, checksum và điều chỉnh truyền tải
- Cơ chế Request/Response nhẹ và thiết lập liên kết hiệu quả (3 gói tin, 297 byte)
Triển khai tham chiếu và giao thức
- Mã Python trong repository này là triển khai tham chiếu chính thức và là tiêu chuẩn cho định nghĩa giao thức
- Được phát hành theo Reticulum License, còn giao thức đã được hiến tặng vào public domain năm 2016
- Tính tương thích được định nghĩa bằng khả năng tương tác hoàn toàn với triển khai tham chiếu
Ví dụ sử dụng
- rnsh: phiên shell từ xa dựa trên Reticulum
- LXMF: giao thức truyền tin nhắn phân tán
- LXST: framework truyền âm thanh và tín hiệu thời gian thực
- Nomad Network: nền tảng nhắn tin mesh được mã hóa cho môi trường off-grid
- Sideband: ứng dụng GUI có chức năng truyền tệp, gọi thoại và bản đồ
- MeshChat: client LXMF nền web, hỗ trợ truyền hình ảnh, âm thanh và tệp
Môi trường truyền dẫn và thiết bị được hỗ trợ
- Hoạt động trên mọi môi trường truyền dẫn hỗ trợ tối thiểu kênh bán song công từ 5bps trở lên và MTU 500 byte
- Có thể dùng LoRa, packet radio, WiFi, Ethernet, liên kết quang học
- RNode là interface LoRa cho Reticulum, có thể tự chế tạo hoặc mua thành phẩm
- Có thể kết hợp LoRa, packet radio và WiFi trên Raspberry Pi và các thiết bị tương tự
Các interface được hỗ trợ
- Hỗ trợ Ethernet, LoRa(RNode), packet radio TNC, modem KISS, thiết bị serial, TCP/UDP, stdio pipe
- Có thể thêm module interface tùy chỉnh, hoan nghênh PR đã được kiểm chứng trong thực tế
Hiệu năng và trạng thái
- Dải hiệu năng mục tiêu: 250bps~1Gbps, hiện tại khoảng 150bps~500Mbps
- Các chức năng giao thức cốt lõi đã được triển khai đầy đủ, API và định dạng đang ở trạng thái ổn định
Khởi tạo kết nối
- Reticulum là mạng tự chủ, không phải dịch vụ đăng ký tham gia
- Có thể kết nối ban đầu thông qua thư mục entrypoint công khai do cộng đồng vận hành
- Ví dụ:
directory.rns.recipes, rmap.world
Các thành phần mật mã
- Bộ khóa 512 bit dựa trên Curve25519, chữ ký Ed25519, trao đổi khóa X25519
- Sử dụng HKDF, AES-256-CBC, HMAC-SHA256, SHA-256/512
- Mặc định được cung cấp thông qua OpenSSL và PyCA/cryptography
- Cũng bao gồm triển khai Python thuần, nhưng mức độ kiểm chứng bảo mật còn thấp
1 bình luận
Ý kiến trên Hacker News
Tôi đã tìm hiểu khá sâu về mạng mesh trong nhiều cộng đồng địa phương, nhưng chưa từng thấy một mạng lớn nào thực sự sử dụng Reticulum
Lý do chính khiến các cộng đồng không tham gia là vì dự án này về thực chất xoay quanh một nhà phát triển duy nhất, và lịch sử thay đổi trên Git chỉ toàn kiểu như “Update”, “Better Version”, “Cleanup”, nên gần như không thể lần theo được
và nói rằng từ nay sẽ chỉ còn những bản cập nhật ngắt quãng, khó đoán, đồng thời sẽ không còn hỗ trợ hay quản lý cộng đồng gì nữa
Rốt cuộc nó lại trở thành thêm một dự án mã nguồn mở một người bị burnout nữa
Đọc như một lời chào tạm biệt
Reticulum là một network stack hoàn chỉnh ở mức production, với trọng tâm là mã hóa và tính ẩn danh
Nó không dành riêng cho LoRa mà độc lập với transport layer
Nhưng có hai vấn đề
Có lẽ một thư viện nhỏ với C API sẽ tốt hơn
Dù vậy, các ứng dụng như Columba đang dần cải thiện điều này
Hiện có khoảng 4 nỗ lực làm bản ngôn ngữ cấp thấp hơn bằng C++, Zig, Rust, Go
Trong số đó, bản triển khai Rust của Beechat có vẻ trưởng thành nhất, nhưng hầu như chưa có trường hợp sử dụng thực tế nào
“Cách cũ” là tin vào biểu tượng ổ khóa trên trình duyệt, còn “cách Zen” là tự xác minh hash fingerprint
Nhưng cách tiếp cận này có UX rất tệ
Ngay cả tôi là dân kỹ thuật mà còn chật vật khi cấu hình, thì người dùng phổ thông chắc chắn sẽ không dùng
Cuối cùng nếu muốn phổ cập, vẫn cần biểu tượng ổ khóa màu xanh đó
Tôi ngạc nhiên là chưa ai nhắc đến Yggdrasil, một giao thức định tuyến
Nó dùng địa chỉ dựa trên mật mã và cũng chạy được trên TCP/IP hoặc LoRa
Tôi đã dùng nó vài tuần như phương án thay thế Tailscale, độ trễ tương đương và khá ổn định
Tôi tò mò nó khác Reticulum ở điểm nào
Trang chính thức của Yggdrasil
Điều tôi thực sự quan tâm nhất là đảm bảo việc chuyển phát tin nhắn
Reticulum lấy “Store and Forward” làm chế độ mặc định
Dù tin nhắn không được chuyển ngay, nó vẫn sẽ được gửi khi có kết nối sau đó
Nhưng tôi muốn biết khi tin nhắn đến không theo thứ tự, client có kèm metadata để sắp xếp lại đúng cách hay không
Reticulum đã đạt phiên bản 1.0.0 và thực sự hoạt động tốt
Để bắt đầu, bạn có thể thử meshchat hoặc
Sideband cho Android
Thậm chí có thể gửi ảnh và chat thoại qua LoRa, và khi thiếu băng thông hoặc đứt liên kết, nó sẽ tự động chuyển sang phương thức truyền khác
Điều làm tôi bối rối là đặc tả giao thức chính thức dường như chưa được công khai
Nếu nhắm tới các chip vô tuyến như LoRa thì nó phải chạy được trên vi điều khiển, nhưng các bản Python hay Rust std không dùng được trong môi trường như vậy
Nhìn vào giấy phép thì nó không phải phần mềm tự do hoàn toàn
Trong đó có điều khoản “không được gây hại cho con người” và “cấm sử dụng cho AI”
Cả ba đều cần cấu hình node master–slave với cấu trúc cây bao trùm đa nhánh kiểu eBGP
Có vẻ ai đó là fan của Anathem