1 คะแนน โดย GN⁺ 2024-11-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Yggdrasil เป็นเครือข่ายที่ทดลองทางเลือกแบบกระจายศูนย์สำหรับโปรโตคอลการกำหนดเส้นทางแบบมีโครงสร้าง โดยใช้แนวทาง compact routing ที่คำนึงถึง mesh network ขนาดใหญ่
  • การใช้งานปัจจุบันเป็น เราเตอร์ซอฟต์แวร์ใน user space ขนาดเบาที่ตั้งค่าได้ง่าย และเชื่อมต่อการกำหนดเส้นทาง IPv6 ที่เข้ารหัสแบบ end-to-end ระหว่างผู้เข้าร่วม
  • การ peering ของโหนดสามารถตั้งค่าได้ผ่าน LAN, ลิงก์ point-to-point และ การเชื่อมต่อ TCP/TLS บนอินเทอร์เน็ต โดยการ peering จริงทำได้บน IPv4 หรือ IPv6
  • มีจุดเด่นคือรองรับโทโพโลยีขนาดใหญ่, การกู้คืนจากเหตุขัดข้องและเหตุการณ์การเคลื่อนย้าย, การเข้ารหัส end-to-end ที่เปิดใช้อยู่เสมอ, การทำงานแบบ P2P โดยไม่มีจุดศูนย์กลาง และรองรับหลายระบบปฏิบัติการ
  • ยังอยู่ใน ระยะอัลฟา จึงยังมีความเป็นไปได้ที่จะเกิดการเปลี่ยนแปลงที่ทำให้ความเข้ากันได้เสียหาย แต่โดยรวมเสถียรพอสำหรับการใช้งานประจำวัน และมีผู้ใช้บางส่วนกำลัง stress test อย่างหนัก

ปัญหาเครือข่ายที่ Yggdrasil ต้องการแก้ไข

  • Yggdrasil เป็นแนวทาง compact routing แบบใหม่เชิงทดลอง
  • มีเป้าหมายเป็น ทางเลือกแห่งอนาคตแบบกระจายศูนย์ แทนโปรโตคอลการกำหนดเส้นทางแบบมีโครงสร้างที่ใช้กันทั่วไปบนอินเทอร์เน็ต
  • ออกแบบให้เป็นเทคโนโลยีที่ช่วยให้เกิด mesh network ขนาดใหญ่ในอนาคต
  • คุณลักษณะการออกแบบเครือข่าย

    • ความสามารถในการขยายระบบ: รองรับโทโพโลยีขนาดใหญ่และซับซ้อน หรือโทโพโลยีระดับอินเทอร์เน็ต
    • การกู้คืนด้วยตนเอง: ตอบสนองต่อการเชื่อมต่อขัดข้องหรือเหตุการณ์การเคลื่อนย้ายได้อย่างรวดเร็ว
    • การเข้ารหัส: ทราฟฟิกที่ผ่านเครือข่ายใช้การเข้ารหัสแบบ end-to-end อย่างสมบูรณ์เสมอ
    • P2P: ทำงานแบบ ad hoc โดยไม่มีจุดรวมศูนย์ที่ฝังอยู่ในระบบ
    • ข้ามแพลตฟอร์ม: รองรับ Linux, macOS, Windows, iOS, Android เป็นต้น

วิธีการใช้งานจริงและการเข้าร่วมเครือข่าย

  • การใช้งานปัจจุบัน เป็น เราเตอร์ซอฟต์แวร์ใน user space ขนาดเบา
    • ตั้งค่าได้ง่ายและรองรับหลายแพลตฟอร์ม
    • เชื่อมต่อ การกำหนดเส้นทาง IPv6 แบบเข้ารหัส end-to-end ระหว่างผู้เข้าร่วมเครือข่ายทั้งหมด
  • การ peering ระหว่างโหนดสามารถตั้งค่าได้ผ่าน การเชื่อมต่อ TCP/TLS
    • ใช้ได้บนเครือข่ายท้องถิ่น, ลิงก์ point-to-point และบนอินเทอร์เน็ต
    • Yggdrasil Network ให้บริการการกำหนดเส้นทาง IPv6 ระหว่างโหนด แต่การเชื่อมต่อ peering เองสามารถตั้งค่าบนเครือข่าย IPv4 หรือ IPv6 ได้
  • โปรเจกต์ยังอยู่ใน ระยะอัลฟา
    • อาจเกิดการเปลี่ยนแปลงที่ทำให้ความเข้ากันได้เสียหายในอนาคต
    • อย่างไรก็ตาม โดยรวมเสถียรพอสำหรับการใช้งานประจำวัน
    • มีผู้ใช้บางส่วนใช้งานอย่างหนักเพื่อวัตถุประสงค์ต่าง ๆ และกำลัง stress test อยู่
  • ช่องทางเริ่มต้นและการมีส่วนร่วม

1 ความคิดเห็น

 
GN⁺ 2024-11-17
ความเห็นจาก Hacker News
  • สิ่งแรกที่ผมมองหาในเว็บไซต์และ GitHub คือ สเปกของโปรโตคอล ที่สามารถนำไปทำ implementation แยกจาก implementation อ้างอิงได้ แต่ทั้งที่โปรโมตว่าเป็น scheme/protocol กลับไม่มีลิงก์ไปยังสเปกอยู่ที่ไหนเลย
    พอขุดเองก็เจอ [1] ในไซด์บรานช์ของโปรเจกต์ GitHub อีกอันหนึ่ง และขอปรบมือให้ผู้เขียน เนื้อหาที่จำเป็นมีอยู่ค่อนข้างครบ ทั้งตัวตนเชิงเข้ารหัสลับ รูปแบบข้อความ โปรโตคอลส่งข้อมูล ความหมายของ peering และ stream การอัปเดต spanning tree และการเลือกรูท, DHT, logic การส่งต่อ, session ฯลฯ
    อย่างไรก็ตาม ยังมี TODO อย่างวิธีตรวจสอบ/ลงนามการอัปเดตรูท และอัลกอริทึมจัดการกรณีเสมอกันในการเลือก next hop ก็ยังคลุมเครืออยู่ อีกทั้งทุกแพ็กเก็ตต้องถูกส่งแบบเชื่อถือได้และตามลำดับ และต้องสามารถแตกเป็นแพ็กเก็ตที่เล็กลงให้พอดีกับ MTU ได้ จึงดูเหมือนว่า transport layer จะ ผูกติดกับ TCP อย่างมาก
    [1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...

    • เราเคยใช้เวลาบ้างกับการทำเอกสารของ โปรโตคอล v0.3 เดิมที่ลิงก์ไว้ แต่หลังจากนั้นดีไซน์ก็เปลี่ยนใหญ่สองครั้ง
      ใน v0.4 DHT เปลี่ยนไปค่อนข้างมาก และใน v0.5 เราถอด DHT ออกทั้งหมด นี่เป็นโปรเจกต์วิจัย จึงมีแนวโน้มว่าจะเปลี่ยนต่อไปเรื่อย ๆ จนกว่าจะได้ดีไซน์ที่น่าพอใจกว่านี้ และเมื่อถึงจุดนั้นเราจะใช้เวลากับการทำเอกสารมากขึ้นแน่นอน
      ความจำเป็นที่ลิงก์ต้องรับประกันลำดับ/ความเชื่อถือได้ ณ ตอนนี้ส่วนใหญ่เป็นเรื่องความสะดวกในการพัฒนา แต่ส่วนนั้นแก้ได้แน่นอน
    • การผูกกับ TCP เป็นปัญหาตรงไหน? มันมีพฤติกรรมที่ขัดกับเป้าหมายเรื่อง การกระจายศูนย์อย่างสมบูรณ์ หรือเปล่า?
  • ตามที่ผมเข้าใจ yggdrasil กับ cjdns เป็น เครือข่าย P2P เสมือน ที่สร้างอยู่บนอินเทอร์เน็ตเดิม และให้บริการ routing ระดับเลเยอร์ 3 แบบทั่วไป
    ดังนั้นก็ยังต้องพึ่ง ISP และ backbone ของอินเทอร์เน็ตอยู่ดี มีโปรเจกต์ไหนที่พยายามสร้างเครือข่าย P2P ทั่วโลกซึ่งแทนที่ IP layer และทำงานได้โดยไม่ต้องมี Verizon หรือเราเตอร์ของ Cisco ไหม?
    ผมรู้จักเทคโนโลยี mesh network สำหรับเครือข่ายขนาดเล็กที่ถูกตัดขาดอยู่บ้าง แต่ไม่ค่อยรู้จักแบบที่มุ่งผู้บริโภคและรองรับโหนดได้ตั้งแต่หลักพันขึ้นไป

    • นั่นเคยเป็น เป้าหมายของ cjdns ตั้งแต่แรก จึง peering อัตโนมัติกับโหนดอื่นที่เข้าถึงได้ผ่าน Ethernet รวมถึง WiFi ด้วย (ไม่ต้องใช้ IP)
      ดูย่อหน้าแรกของ https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape... น่าเสียดายที่วิธี routing แบบนั้นพิสูจน์แล้วว่าในทางปฏิบัติขยายขนาดได้ไม่ดีพอ Yggdrasil ใช้อัลกอริทึม routing อีกแบบ จึงอาจมีความเป็นไปได้อยู่
    • เดิมที IP เองก็เป็น เครือข่าย overlay บนเครือข่ายโทรศัพท์
      วิธีนั้นมีข้อดีมากมาย โดยเฉพาะทำให้การนำมาใช้จริงง่ายขึ้น ตอนนี้เรากำลังรันเครือข่ายโทรศัพท์บน IP เพื่อรองรับแอป legacy ถ้า Yggdrasil นี้สำเร็จ ผมคิดว่าสุดท้ายเราก็จะรัน IP อยู่บนมันเพื่อรองรับระบบ legacy เช่นกัน
    • mesh network เป็นสิ่งที่ทุกคนใฝ่ฝันมานานแล้ว แต่น่าเสียดายที่ ขยายขนาดได้แย่มาก
      นี่ไม่ใช่แค่หนึ่งในหลายปัญหา แต่เป็นข้อจำกัดพื้นฐานของดีไซน์ อินเทอร์เน็ต (ARPAnet) ตอนแรกก็เริ่มจากการเป็น mesh network และแนวคิดเรื่อง trunk, backbone และ routing ก็เกิดขึ้นเพื่อแก้ปัญหาการขยายขนาดนั้น
    • ทำไมถึงอยากเอา IP layer ออก?
      หรือหมายถึง IP layer บนเครือข่ายแยกต่างหาก ไม่ใช่บน “อินเทอร์เน็ต”? ถ้าอย่างนั้นผมสงสัยว่าจะเชื่อมคนเข้าหากันอย่างไร ยิ่งขนาดใหญ่ขึ้น mesh ก็ยิ่งไม่มีประสิทธิภาพ เพราะ mesh routing และสุดท้ายไม่นานก็จะต้องประดิษฐ์ “อินเทอร์เน็ตของตัวเอง” ขึ้นมาใหม่อยู่ดี เพียงแต่คงไม่เป็นระดับโลก เพราะไม่มีทรัพยากรพอจะเชื่อมทั้งโลกจริง ๆ
    • ก่อน cjdns พวกเราหลายคนได้แรงบันดาลใจจาก Athens[0] แล้วเริ่ม project meshnet ที่ตั้งใจจะทดแทนหรือเสริมอินเทอร์เน็ต
      ตอนนั้นค่อนข้างเป็นการตอบสนองแบบอุดมคติ/อนาธิปไตยต่อคำตัดสินคดี Pirate Bay ช่วงปี 2009–2010 เท่าที่จำได้ cjdns ออกมาหลังจากนั้นไม่นาน และดึงคนส่วนใหญ่ในกลุ่มไป
      ใครจะไปรู้ว่าถ้าแฮกเกอร์ขี้บ่นกับโจรสลัดซอฟต์แวร์มารวมกันสร้างอินเทอร์เน็ตที่ห่วยกว่าเดิม มันจะอยู่ได้ไม่นาน?
      [0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
  • ลิงก์ที่เกี่ยวข้อง:
    Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - กันยายน 2024, 3 ความคิดเห็น
    Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - มกราคม 2022, 77 ความคิดเห็น
    Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - มิถุนายน 2021, 102 ความคิดเห็น
    Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - มกราคม 2019, 15 ความคิดเห็น
    Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - ธันวาคม 2018, 3 ความคิดเห็น
    Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - ธันวาคม 2018, 1 ความคิดเห็น

  • ถ้าต้องการเครือข่าย IP แบบเมช P2P ที่ใช้งานได้จริงและทะลุไฟร์วอลล์/NAT ได้ ก็ใช้ Tailscale/Headscale ได้เลย
    ถ้าอยากได้เครือข่ายเชื่อมต่อแบบ P2P ที่กำหนดที่อยู่ด้วยคีย์เข้ารหัส มีโปรเจกต์ที่ค่อนข้างใหม่และทำเรื่องนี้ได้ค่อนข้างดี: https://www.iroh.computer
    มันทะลุไฟร์วอลล์/NAT แล้วสร้างการเชื่อมต่อ QUIC ได้ ตอนนี้มี proof of concept ที่พอใช้ได้แล้วสองตัว:
    https://github.com/n0-computer/sendme
    https://github.com/n0-computer/dumbpipe

    • กำลังจะถามเรื่องนี้พอดี ทำไมใครสักคนถึงควรใช้ Yggdrasil แทน Tailscale หรือ WireGuard?
      มีข้อดีอะไรไหม? ถ้าแค่อยากรัน VPN ส่วนตัวแบบเบา ๆ Tailscale ก็ยอดเยี่ยมอยู่แล้ว และถ้าอยากโฮสต์เครือข่ายเองก็มี Headscale ซึ่งมีข้อดีเยอะ
  • เมื่อ 3–4 ปีก่อนผมค่อนข้างคาดหวังกับมัน แต่ตอนนี้ดูเหมือนเป็น โปรเจกต์ที่ถูกปล่อยทิ้ง ไปพอสมควร อยากรู้ว่ามีคนใช้งานจริงไหม และประทับใจอย่างไรบ้าง

    • ไม่ได้ถูกปล่อยทิ้งเลย เป็นโปรเจกต์ที่ผมกับนักพัฒนาอีกคนทำในเวลาว่าง
      ปลายปีที่แล้วเราออก เวอร์ชัน 0.5 ที่มีการออกแบบโปรโตคอลใหม่ และประมาณหนึ่งเดือนก่อนก็ปล่อย 0.5.9 ซึ่งปรับค่า link cost ทำให้ latency ของเครือข่ายดีขึ้นมาก
    • ช่วงหลังมีอัปเดตหลายครั้ง และ แอป iOS ที่หยุดนิ่งไปพักหนึ่งก็กลับมามีชีวิตอีกครั้ง
      ผมใช้มันเหมือน VPN สำหรับเชื่อมโทรศัพท์กับเครือข่ายที่บ้าน โดยทั้งสองฝั่ง peer แบบส่วนตัวกับ VPS ไว้
      มันซับซ้อนกว่าการเชื่อมตรงเข้าบ้านนิดหน่อย แต่ตั้งค่าง่ายกว่าการต้องมาคอยจัดการ dynamic IP, port forwarding และการแลกคีย์ WireGuard
      multicast peering ก็ใช้ได้ดี ทำให้ตอนอยู่บ้านผมยังเข้าถึงโฮมเซิร์ฟเวอร์โดยตรงด้วย Ygg IP เดิมได้ ปัญหาคือต้องใช้ IP นี่แหละ แอป iOS ไม่รองรับการตั้งค่าเซิร์ฟเวอร์ DNS แบบกำหนดเองสำหรับการเชื่อมต่อ Ygg VPN
      สำหรับกรณีใช้งานนี้ Headscale เป็นทางออกที่ดีกว่าจริง ๆ แต่ความที่แค่เพิ่ม peering อีกจุดเดียวก็ได้อินเทอร์เน็ตทางเลือกขึ้นมา ถือว่าน่าสนุกดี
    • Yggdrasil ทำงานได้ดีอยู่แล้ว นักพัฒนาจึงแทบไม่ต้องคุยกันในห้องแชตว่าจะต้องแก้อะไร
      ตอนนี้ผมใช้ yggdrasil บนอุปกรณ์ทุกเครื่อง ทำให้แม้อยู่หลัง NAT ก็ยัง ssh หากันได้
      บน Android ถ้าใช้ termux กับแอป yggdrasil Android ก็เข้าถึงไฟล์ในคอมพิวเตอร์ที่บ้านได้ระหว่างเดินทาง โดยไม่ต้องเก็บไฟล์ไว้บนคลาวด์ที่ไหน
    • ผมใช้มันเป็นประจำเวลาอยู่นอกบ้านเพื่อเข้าถึงเครื่องต่าง ๆ ที่บ้าน และยังใช้คุยกับเพื่อน ๆ ผ่าน เซิร์ฟเวอร์ IRC ที่รันอยู่บนนั้นด้วย
      การพัฒนาค่อนข้างคึกคัก และในรีลีสล่าสุดมีการปรับปรุงอัลกอริทึม routing ให้เลือก hop ที่มี latency ต่ำสุดมากขึ้น ซึ่งรู้สึกได้ว่าดีขึ้น
      ถ้าคาดหวังว่าจะมีฮับชุมชนใหญ่ ๆ อยู่ในเครือข่ายก็อาจผิดหวัง แต่คุณจะลองสร้างเองก็ได้ มีคนจำนวนมากใช้มันให้เหมาะกับงานของตัวเอง และโปรเจกต์นี้ห่างไกลจากคำว่าถูกปล่อยทิ้งมาก
  • ผมนึกว่านี่เป็น ดิสโทร Linux เสียอีก
    https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X

  • ในสายนี้ยังมี Reticulum Network Stack ด้วย: https://reticulum.network/

  • ใน FAQ ระบุไว้ว่า “Yggdrasil เป็นเครือข่ายนิรนามหรือไม่? ไม่ใช่ เป้าหมายของโปรเจกต์ Yggdrasil ไม่ใช่การให้ความเป็นนิรนาม”
    เข้าใจว่าปัญหานี้ยาก และมีประเด็นที่ต้องแก้มากกว่าแค่ปัญหาเชิงเทคนิคธรรมดา แต่พูดตรง ๆ สำหรับผมแล้วนี่ตกตั้งแต่จุดเริ่มต้นเลย ถ้าจะเป็นวิวัฒนาการของอินเทอร์เน็ตจริง ๆ ก็ควรรวม ความเป็นนิรนามในทางปฏิบัติ เข้าไปด้วย
    ถ้าตัดเรื่องนั้นออกไป ผมก็ไม่เห็นว่าด้วยโครงสร้างปัจจุบันมันแก้ปัญหาใดของอินเทอร์เน็ตเดิมที่ยังไม่ได้รับการแก้ไขจริง ๆ

    • เช่นเดียวกับที่ความเป็นนิรนามไม่ใช่เป้าหมายของ Yggdrasil มันก็ไม่ใช่เป้าหมายของ BGP, OSPF, BATMAN ฯลฯ เช่นกัน
      เครือข่ายนิรนามมักมีต้นทุนและโอเวอร์เฮดสูงมาก เพราะตั้งใจสร้างเส้นทางที่ยาวและอ้อมเพื่อการปกปิด หากดูประสิทธิภาพและความน่าเชื่อถือโดยรวมที่ค่อนข้างต่ำของวงจร Tor ก็จะเห็นเหตุผลว่าทำไมเราไม่ควรอยากให้อินเทอร์เน็ตทั้งหมดทำงานแบบนั้น
    • ทำไมต้องเป็นอย่างนั้น? ดูสมเหตุสมผลกว่ามากที่จะโฟกัสที่โปรโตคอล mesh routing แล้ววาง ความเป็นนิรนามเป็นเลเยอร์ทางเลือก ไว้ด้านบน
      ไม่มีเหตุผลอะไรที่เราจะรันเครือข่าย Yggdrasil แล้วใช้งานเครือข่าย I2P ภายในนั้นไม่ได้ แบบนั้นการสื่อสารที่ไม่ต้องการความเป็นนิรนามก็จะสูญเสียประสิทธิภาพน้อย และยังสร้าง peer นิรนามได้โดยไม่ต้องขึ้นไปอยู่บน clearnet
    • การปรับ latency ให้เหมาะสมอาจทำลายความเป็นนิรนามได้ ดังนั้นควรวาง การทำให้เป็นนิรนามไว้ที่เลเยอร์บน มากกว่า
  • ไอเดียที่ให้ที่อยู่ถูกอนุมานจาก public key นั้นดีมาก แต่แนวทางนี้มีปัญหาอยู่ เพราะตอนนี้ Yggdrasil ใช้ที่อยู่ IPv6 ทำให้ความยาวถูกจำกัดมาก และสามารถหา collision ได้
    มีทางเลี่ยงคือ brute force เพื่อหาคีย์ที่มีบิตนำหน้ามากขึ้น เท่าที่เข้าใจ แผนระยะยาวคือเพิ่มโปรโตคอลแบบกำหนดเองที่ไม่มีข้อจำกัดเรื่องความยาวของที่อยู่

    • ถ้าคำนวณคร่าว ๆ ดูเหมือนจะสร้างคู่ที่อยู่ที่ชนกันได้ เพราะเหตุผลแบบ birthday problem
      แต่การทำให้ชนกับชุดที่อยู่ที่ถูกใช้งานอยู่แล้วนั้นยังดูไม่เป็นไปได้ในทางปฏิบัติ ในบริบทของ Yggdrasil อย่างแรกเป็นปัญหาจริง ๆ แค่ไหนกัน?
    • เห็นด้วยว่าการตัด public key ให้พอดีกับที่อยู่ IPv6 นั้นไม่ได้เหมาะสมสมบูรณ์แบบ
      ถึงอย่างนั้น ในตอนนี้มันหมายความว่า แอปพลิเคชันที่รองรับ IPv6 เดิมแทบทั้งหมดสามารถทำงานบน Yggdrasil ได้โดยไม่ต้องแก้ไข ซึ่งเป็นคุณสมบัติที่ดีสำหรับ testnet
    • ทำไมไม่ใช้ public key ทั้งหมด แล้วปล่อยส่วนที่เหลือให้ entropy จัดการล่ะ? แบบ Reticulum Network น่ะ
  • มีประโยคว่า “Yggdrasil is a new experimental compact routing scheme” แต่ตอนนี้มันคงไม่ได้ใหม่ขนาดนั้นแล้วไหม? อย่างน้อยก็ 6 ปี แล้ว

    • มีที่ไหนใช้อะไรคล้าย ๆ กันจริง ๆ บ้างไหม?