- Iroh 1.0 là bản phát hành ổn định đầu tiên, bảo đảm tính ổn định của wire protocol và API ngôn ngữ, cho phép các endpoint iroh v1 giao tiếp với nhau bất kể minor version hay ngôn ngữ
- Ngoài Rust crate, còn chính thức hỗ trợ Python, Node.js, Swift, Kotlin, và có thể nhúng iroh vào ứng dụng Swift iOS cũng như ứng dụng Kotlin Android
- Các thay đổi ảnh hưởng đến tính ổn định của wire sẽ luôn đi kèm major release, và trong tương lai phiên bản API ngôn ngữ và khả năng tương thích wire có thể được quản lý phiên bản độc lập
- Sau 1.0, major và minor version sẽ được hỗ trợ theo lịch hỗ trợ, còn minor version 0.35 sẽ không nhận thêm bản phát hành nào
- Hỗ trợ Public relay sẽ được vận hành đến End of Life đối với v1.0, đến ngày 31 tháng 12 năm 2026 đối với v0.35x, và đến ngày 30 tháng 9 năm 2026 đối với v0.9x và v1.0.0-rcX
- Public relay thường được nâng lên phiên bản mới nhất trong vòng 24 giờ ngay sau mỗi bản phát hành, và các thay đổi relay phá vỡ wire sẽ dùng URL mới để các client hiện có tiếp tục hoạt động
- Các tính năng kết nối bao gồm QUIC multipath, QUIC NAT traversal, cấu hình local-first, chạy trên WASM và trình duyệt, hook điều khiển kết nối, và hỗ trợ custom transport
- Thông thường 95% dữ liệu trong kết nối được truyền trực tiếp giữa các thiết bị, và kết nối trực tiếp giúp giảm hop đi qua cloud cũng như chi phí egress {p:95}
- Lưu lượng được relay qua public relay có áp dụng rate limit, và giới hạn này có thể thay đổi bất cứ lúc nào
2 bình luận
Ý kiến Hacker News
Nếu mới biết đến Iroh, có thể hiểu đại khái nó là Tailscale ở tầng ứng dụng chứ không phải tầng mạng
Câu hỏi “sao không dùng luôn Tailscale?” thì từ góc nhìn của lập trình viên ứng dụng là khác. Nếu muốn các instance ứng dụng kết nối với nhau dễ dàng, về lý thuyết có thể nhúng chức năng của Tailscale vào ứng dụng, nhưng như vậy người dùng sẽ cần tài khoản Tailscale và ứng dụng cũng sẽ phụ thuộc vào Tailscale
Iroh cho phép nhúng trực tiếp chức năng này, đồng thời còn cung cấp các relay dự phòng công khai. Nếu ứng dụng phát triển đến mức relay công khai không còn gánh nổi thì chuyển sang relay riêng cũng gần như chỉ là bật một công tắc
Đặc biệt là khi Iroh khiến việc làm đúng cách trở nên dễ dàng và tốt đến vậy
Trong các môi trường mà người dùng cần truy cập vào instance cục bộ, tôi nghĩ Iroh có thể là một bước ngoặt lớn. Với chúng tôi, nó dùng để giúp điều khiển phần mềm dễ dàng từ điện thoại hay thiết bị khác
Trước đây có thể phải kiểm tra xem có cùng LAN hay không, nhưng dùng Iroh thì nó hoạt động trong mọi môi trường
Iroh và OpenZiti đều có thể nhúng vào ứng dụng, và cả hai đều là trường hợp sử dụng tốt cho các nhà phát triển muốn nhúng vào dịch vụ của mình
OpenZiti được dùng cho các dịch vụ coi trọng quy mô và bảo mật, còn Iroh có thể rất tiện vì cho phép cả những bên tham gia không có quan hệ từ trước cùng tham gia
Tôi là một trong các nhà phát triển của Iroh
Một câu hỏi rất hay gặp là khi nào Iroh sẽ hỗ trợ WebRTC, BLE, LoRa, v.v.
Hiện tại Iroh mặc định chỉ hỗ trợ IPv4, IPv6 và truyền qua relay. Có quá nhiều cơ chế truyền dẫn thú vị, nên nếu cố hỗ trợ tất cả thì codebase sẽ biến thành một mê cung cờ tính năng không thể bảo trì nổi
Thay vào đó, chúng tôi cho phép triển khai transport tùy chỉnh, và phần triển khai transport có thể nằm trong một crate hoàn toàn riêng biệt
Các transport tùy chỉnh thử nghiệm hiện có gồm Tor, Nym và BLE. https://github.com/mcginty/iroh-ble-transport
Có thể xem cách nó hoạt động bên trong ở đây: https://www.iroh.computer/blog/iroh-0-97-0-custom-transports...
Nếu dùng nó để tạo mô hình client/server P2P hoặc tạo hai máy peer, tôi muốn biết giới hạn ở chỗ ngoài kết nối giữa hai ứng dụng ra thì còn phải cấu hình thêm gì nữa không
Ví dụ nếu làm một ứng dụng chạy trên điện thoại và một ứng dụng chạy trên laptop, liệu thực sự có thể có được kết nối trực tiếp và an toàn giữa hai bên hay không, hay nó đang giải quyết một vấn đề khác
-[0]: p2p chat, in rust, from scratch: https://www.youtube.com/watch?v=ogN_mBkWu7o
Năm ngoái khi phải chọn một trong hai thì tôi đã chọn bên quen thuộc hơn, nhưng giờ có cảm giác Iroh đang có động lực phát triển rõ rệt
Ở đây họ dùng daemon Tor. Tor có triển khai bằng Rust, và khi dùng trong Rust thì có thể sử dụng dưới dạng đối tượng stream chẳng hạn
Ví dụ sử dụng có thể xem tại https://gitlab.torproject.org/tpo/core/oniux
Mẫu chiến lược và quản lý tính năng tập trung là khá tốt
Tôi không biết trong video có nhắc đến “dial keys” hay không, nhưng tôi nghĩ ngay đoạn đầu cần làm rõ đó là loại key gì và vì sao nó cần thiết
Không có giải thích nào về việc đó là khóa mật mã hay khóa bất đối xứng, hoặc ít nhất là nó hoạt động thế nào ở mức cơ bản nhất. Bài viết lập tức chuyển sang những tuyên bố trừu tượng về tính vượt trội và thống kê mức sử dụng
Có vẻ relay có liên quan, nhưng tốt hơn là nên nói ngay từ đầu thay vì bắt người đọc phải mò ra trong thảo luận HN
Trước hết là https://docs.iroh.computer/what-is-iroh, rồi tiếp theo là phần giải thích cách nó hoạt động. Tính đến lúc này, tài liệu có vẻ thực sự ổn và những câu hỏi được nêu ra dường như được trả lời khá nhanh
Có thể là phi tập trung, có thể miễn phí, có thể không nguyên khối, nhưng xét rộng ra thì vẫn cùng một nhóm
.ssh/configNhưng nghe thêm thì nó lại giống một cách làm mạng mới chạy trên QUIC
Tóm tắt trên Lobste.rs của tôi, với lưu ý rằng tôi không phải chuyên gia và hôm nay mới biết tới dự án này, là: nó gần giống một cấu hình WebRTC có quan điểm rõ ràng hơn, gán ID bền vững cho client. Phần xây dựng signaling server đã được xử lý sẵn, và giải pháp đủ tổng quát cũng như rẻ để có thể dùng cả server do cộng đồng host. Nó hơi giống những gì bạn có được từ hạ tầng P2P gamenetworkingsocket độc quyền của Steam
https://lobste.rs/s/cslljn/iroh_1_0_dial_keys_not_ips#c_s3na...
Ngay từ đầu tôi đã không hiểu họ đang cố giải quyết vấn đề gì. IP và DNS vốn hoạt động tốt mà
Đã có IPv6 và QUIC, và để có được lực kéo đáng kể trong lĩnh vực này thì cần có vendor và phần mềm lớn tham gia
Cụ thể, giả sử có một thiết bị ở sau NAT của mạng WLAN tại nhà và một thiết bị khác ở sau NAT khác trên mạng 4G hoặc mạng công ty
Trong phần lớn trường hợp, có thể dùng hole punching để tạo kết nối trực tiếp giữa hai thiết bị rất nhanh, nhờ đó đạt băng thông tốt nhất và độ trễ thấp nhất có thể
Đây không phải là vấn đề đã được giải quyết từ trước đến nay
Vì TCP/IP không có lớp phiên đúng nghĩa, nên vMotion thường chỉ khả thi trong một broadcast domain duy nhất. Trong bối cảnh đó, việc định địa chỉ trên thực tế chỉ dùng địa chỉ MAC, và ngay cả khi địa chỉ MAC thay đổi sau vMotion thì vẫn có thể dùng IP làm định danh ổn định. Việc ánh xạ được xử lý bởi bảng địa chỉ MAC của switch
Tương lai của networking là phi tập trung. Tôi rất thích Yggdrasil và I2P
Bạn nên có thể mua một mini PC chạy 24/7 để host thứ mình cần, và kết nối trơn tru với người khác. Nhiều người làm kỹ thuật đã có sẵn những máy dự phòng cũ chỉ đang bám bụi, và hoàn toàn có thể biến chúng thành server
Về lâu dài, cách này rẻ hơn nhiều và cũng dễ bảo trì hơn so với xử lý domain và thuê host server. Tôi thực sự đánh giá cao công việc của đội ngũ Iroh
Iroh thực sự rất dễ làm việc cùng, và các kỹ sư trong kênh Discord cũng rất thân thiện
Cách tiếp cận thực dụng để khiến P2P cứ thế hoạt động rất dễ hiểu, và nội dung trên kênh YouTube của họ cũng rất tuyệt. Chúc mừng bản phát hành v1
https://youtube.com/@n0computer
Việc một giao thức đang cố làm chức năng tương tự địa chỉ IP lại có bảng giá nghe chẳng phải hơi kỳ sao? Có thể là tôi đang hiểu sai gì đó
Họ chỉ cung cấp thêm các dịch vụ bổ sung để trang trải chi phí phát triển, nhất là giúp triển khai và vận hành dễ hơn cho những trường hợp dùng lớn hơn hoặc đặc thù hơn
Tức là muốn vừa là hạ tầng cho mọi người, vừa là doanh nghiệp cho dân chuyên
Nó bị kẹt giữa “cần tiền để vận hành” và “muốn trở thành một hệ thống hạ tầng hàng hóa công”, còn mặt tiêu cực của công ty vì lợi nhuận thì được gạt đi bằng câu “nhưng vẫn là mã nguồn mở mà”
Miễn là cái mác “mã nguồn mở” không đi kèm một codebase hoàn toàn tùy biến và bất khả hiểu, thì tôi thấy kiểu mô hình kinh doanh này ở mức nào đó vẫn ổn
Rõ ràng là để vận hành ISP hay AS thì tốn khá nhiều tiền
Công ty tôi đang dùng Iroh trong production và thực sự rất thích nó
Tôi chủ yếu sẽ mô tả nó là hole punching kiểu Tailscale được cung cấp dưới dạng Rust crate, nhưng tất nhiên bạn còn có thể đặt rất nhiều tính năng P2P hay ho lên trên kết nối QUIC nền tảng
Công ty chúng tôi đã dùng Iroh cho hệ thống huấn luyện machine learning phân tán trong production và thực sự rất hài lòng
Ngay cả trước khi ký hợp đồng hỗ trợ doanh nghiệp, đội ngũ này đã phản hồi nhanh đến khó tin, hiểu biết cực kỳ sâu, và bản thân thư viện cũng hoạt động đáng kinh ngạc. Tôi sẽ chọn lại thư viện này thay vì libp2p bất cứ lúc nào
Chúc mừng ra mắt
Cần gấp một trang so sánh với tailscale/netbird/netmaker/zerotier/twingate/openziti
Chỉ nhìn vào các trường hợp sử dụng thì hiện giờ chưa thấy có gì mà Tailscale không làm được
Ý kiến trên Lobste.rs
Có vẻ cả ở đây lẫn trên HN, nhiều người đang nhầm lẫn Iroh khác gì so với các mạng mesh chạy đè lên VPN như Tailscale, ZeroTier, Netbird, v.v. Theo cách tôi hiểu thì Iroh dành cho các nhà phát triển ứng dụng muốn các thiết bị chạy ứng dụng của họ có thể giao tiếp P2P, còn mạng mesh dành cho các quản trị viên mạng muốn kết nối các thiết bị mà họ sở hữu hoặc quản lý với nhau
Ví dụ, nếu bạn tạo một ứng dụng nhắn tin P2P, thì một người dùng có thể đang dùng thiết bị di động liên tục chuyển qua lại giữa WiFi và dữ liệu di động nên không có địa chỉ ổn định, còn phía kia có thể là một laptop nằm sau NAT và CGNAT. Nếu muốn hai bên này vẫn liên lạc được kể cả khi địa chỉ IP thay đổi, bạn cần một cơ chế xử lý việc đó
Trước đây, cách phổ biến thường là cả hai endpoint kết nối tới một máy chủ trung gian do nhà phát triển ứng dụng vận hành để chia sẻ trạng thái, còn Iroh có vẻ gần với việc chuẩn hóa điều này và cung cấp nó như một dịch vụ
Nó cũng hơi giống những gì Steam cung cấp với hạ tầng P2P
gamenetworkingsocketđộc quyềnCó thể tôi đã bỏ sót gì đó, nhưng việc đặt mọi thứ lên một khóa duy nhất trông cực kỳ rủi ro. Tôi tò mò không biết điều gì xảy ra nếu khóa đó bị mất hoặc bị đánh cắp
Tôi đã thử tìm nhanh “key rotation” trong tài liệu Iroh nhưng không thấy
Một số ứng dụng dùng Iroh lưu khóa vĩnh viễn, một số khác tạo khóa mới cho mỗi phiên
Nếu khóa riêng bị lộ, kẻ tấn công có thể mạo danh tôi khi bắt đầu hoặc nhận kết nối. Nếu mất khóa, tôi sẽ không còn khả năng chứng minh danh tính của mình với các peer. Theo cách tôi hiểu thì rủi ro này tương tự như khi mật khẩu hoặc khóa riêng thông thường bị mất hay bị lộ
Có lựa chọn thay thế tương tự nào không? Host Identity Protocol? https://mkomu.kapsi.fi/hipl/index.php?index=how
Tôi đang cố hiểu dự án này nhưng chưa thật sự nắm được sự khác biệt giữa khóa và IP. Rốt cuộc đến một thời điểm nào đó khóa vẫn phải được ánh xạ sang địa chỉ IP để dùng định tuyến IP đúng không?
Khóa có phải là cách gắn một định danh tồn tại lâu dài lên địa chỉ IP, như một sự thay thế cho URL hay DNS không?
Nếu bạn cố kết nối một node này với node khác bằng khóa, nó sẽ tra khóa đó trên một trong các máy chủ relay rồi thử nhiều cách khác nhau, từ kết nối IP trực tiếp, hole punching, cho tới cuối cùng là kết nối chuyển tiếp qua máy chủ relay
Ngoài ra, khóa cũng được dùng cho mã hóa đầu cuối qua QUIC
Có cách nào tự host máy chủ relay cho ứng dụng riêng không? Có vẻ là có. Tuy nhiên việc có hẳn một trang giá cho relay chuyên dụng trông hơi lạ
Relay được host sẵn nhằm cung cấp điều này mà không bắt bạn tự quản lý máy chủ, đồng thời cho bạn khả năng quan sát mạng tốt hơn
Cảm giác cái này giống Reticulum hơn là Yggdrasil hay Netbird
Khá khó để hiểu nó là gì. Tôi có liên tưởng tới Yggdrasil, nhưng không rõ nên so sánh hai bên như thế nào