1 poin oleh GN⁺ 2024-09-08 | 1 komentar | Bagikan ke WhatsApp

Ikhtisar lwIP

Pengenalan
  • lwIP adalah implementasi stack protokol TCP/IP kecil yang berdiri sendiri
  • Berfokus pada pengurangan penggunaan RAM sambil tetap mempertahankan TCP berfitur lengkap
  • Cocok digunakan pada sistem embedded, dan membutuhkan RAM puluhan kilobyte serta code ROM sekitar 40 kilobyte
  • Awalnya dikembangkan oleh Adam Dunkels, dan saat ini dipelihara oleh jaringan pengembang di seluruh dunia
Fitur
  • IP (Internet Protocol, IPv4 dan IPv6): termasuk penerusan paket antar berbagai antarmuka jaringan
  • ICMP (Internet Control Message Protocol): untuk pemeliharaan dan debugging jaringan
  • IGMP (Internet Group Management Protocol): pengelolaan trafik multicast
  • MLD (Multicast Listener Discovery): untuk IPv6, menargetkan kepatuhan terhadap RFC 2710
  • ND (Neighbor Discovery dan stateless address autoconfiguration): menargetkan kepatuhan terhadap RFC 4861 dan RFC 4862
  • DHCP, AutoIP/APIPA (Zeroconf), dan DHCPv6 (stateless)
  • UDP (User Datagram Protocol): termasuk ekstensi UDP-lite yang eksperimental
  • TCP (Transmission Control Protocol): kontrol kemacetan, estimasi RTT, fast recovery/fast retransmit, dan transmisi SACK
  • API raw/native: untuk peningkatan performa
  • API socket opsional yang mirip Berkeley
  • TLS: layer TCP opsional ("altcp") untuk TLS yang hampir transparan (di-port ke mbedTLS)
  • PPPoS dan PPPoE (Point-to-Point Protocol melalui serial/Ethernet)
  • DNS (resolver nama domain, termasuk mDNS)
  • 6LoWPAN (melalui IEEE 802.15.4, BLE, atau ZEP)
Aplikasi
  • Server HTTP: termasuk SSI dan CGI (HTTPS melalui altcp)
  • Agen SNMPv2c: termasuk kompiler MIB, v3 didukung melalui altcp
  • SNTP (Simple Network Time Protocol)
  • Responder layanan nama NetBIOS
  • Responder MDNS (Multicast DNS)
  • Implementasi server iPerf
  • Klien MQTT: dukungan TLS tersedia melalui altcp
Lisensi
  • lwIP tersedia gratis di bawah lisensi BSD
Pengembangan
  • lwIP telah berkembang menjadi stack TCP/IP yang sangat baik untuk perangkat embedded
  • Para pengembang mengirimkan perbaikan bug, peningkatan, dan fitur tambahan untuk semakin meningkatkan kegunaan stack ini
  • Pengembangan di-host di Savannah, dan siapa pun dapat berkontribusi pada peningkatan lwIP melalui Git dan mailing list
  • Stack TCP/IP lwIP dikelola dalam modul Git 'lwip', dan kontribusi berada dalam modul Git 'contrib'
  • Untuk detail akses ke server Git, lihat doc/savannah.txt
  • Pohon Git saat ini dapat ditelusuri di web: lwip, lwip-contrib
  • Pengiriman patch dan bug: halaman proyek lwIP
  • Build continuous integration: Travis CI
Dokumentasi

Ringkasan GN⁺

  • lwIP menyediakan stack TCP/IP yang efisien untuk sistem embedded dengan meminimalkan penggunaan memori
  • Mendukung beragam protokol jaringan dan aplikasi, sehingga menawarkan fleksibilitas dan skalabilitas
  • Terus ditingkatkan melalui partisipasi aktif komunitas pengembang
  • Proyek dengan fungsi serupa antara lain FreeRTOS+TCP dan uIP

1 komentar

 
GN⁺ 2024-09-08
Opini Hacker News
  • Beberapa tahun lalu, dalam sebuah proyek, LwIP digunakan untuk melakukan pengujian sistem secara efektif

    • Itu adalah proyek di mana beberapa mikrokontroler berkomunikasi melalui LAN internal
    • Menggunakan kernel embedded bernama MicroCOS dan stack IP LwIP
    • Menyiapkan alat build lintas platform sehingga bisa dijalankan secara native atau dikompilasi sebagai kode x64 untuk dijalankan di mesin pengembang
    • Mengimplementasikan secara tiruan bagian lapisan link paling bawah dari LwIP sehingga dapat menggunakan TCP/IP standar
    • Menulis server TCP kecil agar aplikasi mikrokontroler dapat berkomunikasi di mesin pengembang seperti pada sistem nyata
    • Pengaturan ini bekerja sangat baik dan digunakan selama bertahun-tahun sepanjang pengembangan proyek
  • Istilah stack IP terasa meremehkan

    • Bisa digunakan sebagai klien HTTP, server HTTP, atau klien MQTT
    • Mirip seperti busybox untuk jaringan embedded, tetapi dengan lisensi yang jauh lebih nyaman
  • Bagi orang yang mencari opsi seperti LwIP, disarankan mempertimbangkan NetXDuo dan padanannya yaitu ThreadX, FileX, LevelX, UsbX

    • Ini adalah salah satu stack jaringan RTOS komersial yang telah digunakan selama 20 tahun
    • Kepemilikannya sempat beberapa kali berganti, dan sekarang didukung oleh Eclipse Foundation dengan lisensi MIT
    • Disarankan menggunakan NetXDuo dibanding LwIP
    • Tautan NetXDuo
  • Adam Dunkels menulis sebagian besar Protothreads

  • Ada yang penasaran apa itu nongnu.org dan bagaimana hubungannya dengan gnu.org

    • savannah.gnu.org adalah situs hosting untuk perangkat lunak GNU "resmi" yang didukung Free Software Foundation
    • savannah.nongnu.org adalah situs hosting untuk proyek "komunitas" yang tidak didukung FSF
    • Tautan terkait
  • Sepertinya ini adalah stack TCP/IP yang paling banyak digunakan pada perangkat dengan sumber daya terbatas

    • Sudah lama tidak ada alternatif lain yang benar-benar kompetitif untuk ini
    • Tautan FreeRTOS-Plus-TCP terlihat menjanjikan
  • Alasan menyukai LWIP adalah karena ia memungkinkan blok memori yang sama, yang dialokasikan oleh Ethernet MAC DMA, digunakan sepanjang umur paket

    • Bisa mengoptimalkan "pool" memori untuk mengurangi jumlah memcpy
  • Bagi yang ingin mengimplementasikan stack TCP/IP ringan sendiri, buku <i>TCP/IP Lean</i> karya Jeremy Bentham adalah sumber yang sangat bagus

  • Kutipan dari artikel:

    • "Karena itu, lwIP cocok digunakan pada sistem embedded yang memiliki RAM cadangan puluhan kilobyte dan ROM kode sekitar 40 kilobyte"
  • Pico W menggunakan ini