1 điểm bởi GN⁺ 4 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • 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 giải thích này xong mới hiểu Iroh làm gì rõ hơn cả xem video. Giờ điều tôi tò mò là Iroh triển khai việc này như thế nào
    • Giờ thì hiểu được giá trị mà nó mang lại. Cách giải thích này hay hơn hẳn landing page, đến mức có thể giao luôn phần thông điệp marketing
    • Một câu trả lời khác cho “vì sao không dùng Tailscale” là vì Tailscale là một công ty muốn kiếm tiền, và việc chúng ta tiếp tục tập trung công nghệ phân tán vào tay một số ít chủ sở hữu tập trung là điều khá ngớ ngẩn
      Đặ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
    • Chính xác là như thế. Có vẻ tôi đã tìm ra Iroh sau khi tự hỏi “liệu có thể phân phối kèm Tailscale cùng ứng dụng của mình không?”
      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
    • Đối tượng so sánh gần nhất là OpenZiti
      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...

    • Khi xem tài liệu thì dự án này trông khá hay, và tôi cũng tìm thấy ví dụ chat P2P
      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
    • Với tư cách là người từng xây khá nhiều thứ dựa trên libp2p, tôi muốn xem một so sánh hiện đại hơn từ góc nhìn của nhà phát triển ứng dụng
      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
    • Tôi muốn biết nếu vận hành relay công khai thì sẽ có những rủi ro gì. Về mặt khái niệm, liệu nó có giống vận hành một Tor Guard Node hay relay không
    • Transport Tor có ở https://github.com/n0-computer/iroh-tor-transport
      Ở đâ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
    • Nếu lo code sẽ trở nên không thể bảo trì thì có thể cân nhắc API cờ tính năng
      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

    • Trang đầu không đi quá sâu, nhưng tài liệu giải thích khá nhanh
      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
    • Ngay cả sau khi xem video, tôi vẫn không biết chúng là gì. Ngoài ra, họ nói “sẽ không bao giờ bị khóa phụ thuộc”, nhưng lại có “pricing”, và nếu relay là tự host thì tôi cũng không hiểu vì sao phải trả tiền cho “apps” nữa
    • Câu mô tả “Dial keys. Not IPs.” nghe với tôi giống như triển khai lại DNS
      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
    • Khi đọc chữ “keys”, tôi đã nghĩ đó là một “tên” để truy cập bằng key, giống các host được đặt tên trong .ssh/config
      Như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
    • Sau khi cố hiểu một lúc, có vẻ các key này đóng vai trò kép: vừa là khóa mã hóa, vừa là định danh ổn định kiểu cookie phiên có thể dùng cho cuộc gọi video WebRTC
      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

    • Iroh là QUIC. Nó không cố phát minh lại bánh xe, mà là kết hợp sáng tạo các RFC IETF hiện có
      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
    • Tôi không liên quan gì đến Iroh và cũng không dùng nó, nhưng nói rằng “IP hoạt động tốt” thì không hợp lý. Đây không phải vấn đề đã được giải quyết
    • Ngược lại, việc thiết lập kết nối trực tiếp là một bài toán khó hơn rất nhiều trong hạ tầng Internet hiện tại
    • Theo tôi thấy, Iroh dường như đang cố tạo ra lớp phiên còn thiếu trong mô hình OSI. Location-Identity Separation Protocol của Cisco cũng là một nỗ lực tương tự
      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
    • DNS không hẳn là phi tập trung mà gần với liên hiệp hơn. Ít nhất lần cuối tôi xem thì Iroh có tùy chọn dùng DHT ở đây
  • 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

    • Điều đó ít nhất đã là “tương lai” suốt 20 năm rồi
  • 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ì đó

    • Như người khác đã nói, thư viện lõi và giao thức của iroh hoàn toàn là mã nguồn mở
      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
    • Đây là hội chứng Tailscale
      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
    • Nhìn chính trang giá đó thì tất cả đều là dịch vụ bổ sung. Những thứ như observability, relay hosting, kỹ sư hỗ trợ
    • Nếu ví thứ họ cung cấp với địa chỉ IP, thì nó giống vận hành router BGP hay ISP, hoặc ký hợp đồng với kỹ sư mạng cho networking trong datacenter hơn
      Rõ ràng là để vận hành ISP hay AS thì tốn khá nhiều tiền
    • Có vẻ họ đang cung cấp “hosting và giám sát tùy chỉnh cho các ứng dụng Iroh”
  • 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ếu tôi hiểu đúng, nó có vẻ gần với một cấu hình WebRTC có định hướng gắn ID bền vững cho client. Tức là nó xử lý thay phần xây dựng signaling server, và đủ tổng quát cũng như rẻ để có thể dùng cả máy chủ do cộng đồng host
      Nó cũng hơi giống những gì Steam cung cấp với hạ tầng P2P gamenetworkingsocket độc quyền
    • Tôi hiểu họ đang nhắm tới thị trường nào, nhưng nhìn bảng giá thì nó mở rộng theo số người dùng đồng thời và giới hạn của gói thông thường là 5.000 người. Tôi thấy mức này có vẻ khá thấp
  • Có 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

    • Những khóa đó là khóa công khai. Trong Iroh, chúng đóng vai trò thay thế địa chỉ IP, vốn cũng là thông tin công khai, như một cách để truy cập các node khác
    • Việc lưu trữ hoặc xoay vòng khóa như thế nào là do nhà phát triển quyết định. Ở đây khóa là cặp khóa Ed25519, và vì khóa công khai được dùng làm danh tính, nếu bạn xoay khóa thì phải thông báo khóa công khai mới đó cho các peer bằng cách nào đó
      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?

    • Đúng, “khóa” thay thế URL/DNS nhưng không được gán cho một IP cụ thể. Iroh thực hiện P2P hole punching và relay, còn khóa được công bố lên các máy chủ relay của Iroh. Bạn cũng có thể tự vận hành chú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ạ

    • Tôi nghĩ chỉ riêng đoạn mã bạn đã liên kết cũng đủ để tự host, tách biệt với relay managed trả phí
    • Đúng vậy, bạn có thể tự chạy máy chủ relay và đoạn mã được liên kết là đúng. Ví dụ, DeltaChat chạy nó như một phần của relay chatmail. Cũng có người nhúng relay vào bên trong máy chủ web hiện có
      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