1 puan yazan GN⁺ 2024-09-08 | 1 yorum | WhatsApp'ta paylaş

lwIP genel bakış

Giriş
  • lwIP, bağımsız ve küçük bir TCP/IP protokol yığını uygulamasıdır
  • RAM kullanımını azaltırken tam ölçekli TCP’yi korumaya odaklanır
  • Gömülü sistemlerde kullanım için uygundur; birkaç on kilobayt RAM ve yaklaşık 40 kilobayt kod ROM’u gerektirir
  • İlk olarak Adam Dunkels tarafından geliştirildi; bugün ise dünya çapındaki bir geliştirici ağı tarafından sürdürülmektedir
Özellikler
  • IP (İnternet Protokolü, IPv4 ve IPv6): birden çok ağ arayüzü arasında paket iletimi dahil
  • ICMP (İnternet Kontrol Mesajı Protokolü): ağ bakımı ve hata ayıklama
  • IGMP (İnternet Grup Yönetimi Protokolü): multicast trafiği yönetimi
  • MLD (Multicast Listener Discovery): IPv6 için, RFC 2710 uyumluluğu hedeflenir
  • ND (Komşu Keşfi ve durumsuz adres otomatik yapılandırması): RFC 4861 ve RFC 4862 uyumluluğu hedeflenir
  • DHCP, AutoIP/APIPA (Zeroconf) ve (durumsuz) DHCPv6
  • UDP (Kullanıcı Datagram Protokolü): deneysel UDP-lite genişletmesi dahil
  • TCP (İletim Kontrol Protokolü): tıkanıklık kontrolü, RTT tahmini, hızlı kurtarma/hızlı yeniden iletim ve SACK iletimi
  • Ham/native API: performans iyileştirmesi
  • İsteğe bağlı Berkeley benzeri soket API’si
  • TLS: neredeyse şeffaf TLS için isteğe bağlı katmanlı TCP (altcp) (mbedTLS’ye port edildi)
  • PPPoS ve PPPoE (seri/Ethernet üzerinden Point-to-Point Protocol)
  • DNS (alan adı çözümleyici, mDNS dahil)
  • 6LoWPAN (IEEE 802.15.4, BLE veya ZEP üzerinden)
Uygulamalar
  • HTTP sunucusu: SSI ve CGI dahil (altcp üzerinden HTTPS)
  • SNMPv2c ajanı: MIB derleyicisi dahil, v3 desteği altcp üzerinden sağlanır
  • SNTP (Basit Ağ Zaman Protokolü)
  • NetBIOS ad hizmeti yanıtlayıcısı
  • MDNS (Multicast DNS) yanıtlayıcısı
  • iPerf sunucu uygulaması
  • MQTT istemcisi: TLS desteği altcp üzerinden mümkündür
Lisans
  • lwIP, BSD lisansı altında ücretsiz olarak sunulur
Geliştirme
  • lwIP, gömülü cihazlar için mükemmel bir TCP/IP yığınına dönüşmüştür
  • Geliştiriciler hata düzeltmeleri, iyileştirmeler ve ek özellikler göndererek yığının kullanışlılığını daha da artırır
  • Geliştirme Savannah üzerinde barındırılır; Git ve mailing list aracılığıyla herkes lwIP’nin geliştirilmesine katkıda bulunabilir
  • lwIP TCP/IP yığını lwip Git modülünde sürdürülür, katkılar ise contrib Git modülünde yer alır
  • Git sunucusuna erişimle ilgili ayrıntılar için doc/savannah.txt dosyasına bakın
  • Güncel Git ağacı web üzerinden incelenebilir: lwip, lwip-contrib
  • Yama ve hata bildirimi gönderimi: lwIP proje sayfası
  • Sürekli entegrasyon build’leri: Travis CI
Dokümantasyon

GN⁺ özeti

  • lwIP, gömülü sistemlerde verimli bir TCP/IP yığını sunarak bellek kullanımını en aza indirir
  • Çeşitli ağ protokollerini ve uygulamaları destekleyerek esneklik ve genişletilebilirlik sağlar
  • Geliştirici topluluğunun aktif katılımıyla sürekli olarak iyileştirilmektedir
  • Benzer işlevlere sahip projeler arasında FreeRTOS+TCP ve uIP bulunur

1 yorum

 
GN⁺ 2024-09-08
Hacker News görüşleri
  • Birkaç yıl önce bir projede LwIP kullanarak sistem testlerini etkili şekilde gerçekleştirdim

    • Birden fazla mikrodenetleyicinin dahili LAN üzerinden iletişim kurduğu bir projeydi
    • MicroCOS adlı gömülü çekirdek ile LwIP IP stack kullanıldı
    • Çapraz platform build araçları kurularak native çalıştırma veya x64 kodu olarak derleme yapılıp geliştirici makinesinde çalıştırılabildi
    • LwIP'nin en alt link katmanı kısmı mock olarak uygulanıp standart TCP/IP kullanıldı
    • Küçük bir TCP sunucusu yazılarak mikrodenetleyici uygulamasının geliştirici makinesinde gerçek sistemdeki gibi iletişim kurması sağlandı
    • Bu kurulum çok iyi çalıştı ve proje geliştirme süresince yıllarca kullanıldı
  • IP stack ifadesi bunun değerini olduğundan az gösteriyor

    • HTTP istemcisi, HTTP sunucusu veya MQTT istemcisi olarak kullanılabiliyor
    • Gömülü ağ dünyasının busybox'ı gibi, ama lisansı çok daha elverişli
  • LwIP gibi seçenek arayanlara NetXDuo ve ona karşılık gelen ThreadX, FileX, LevelX, UsbX'e bakmalarını öneririm

    • Ticari RTOS ağ stack'lerinden biri olarak 20 yıldır kullanılıyor
    • Sahipliği birkaç kez değişti; şu anda Eclipse Foundation tarafından destekleniyor ve MIT lisansına sahip
    • LwIP yerine NetXDuo kullanmanızı tavsiye ederim
    • NetXDuo bağlantısı
  • Adam Dunkels, Protothreads'in büyük bölümünü yazdı

  • nongnu.org'un ne olduğunu ve gnu.org ile nasıl ilişkili olduğunu merak ediyorum

    • savannah.gnu.org, Free Software Foundation tarafından desteklenen "resmi" GNU yazılımları için bir barındırma sitesidir
    • savannah.nongnu.org ise FSF tarafından desteklenmeyen "topluluk" projeleri için barındırma sitesidir
    • ilgili bağlantı
  • Kaynakları kısıtlı cihazlarda en yaygın kullanılan TCP/IP stack bu olabilir

  • LWIP'yi sevmemin nedeni, Ethernet MAC DMA tarafından ayrılan aynı bellek bloklarının paketin ömrü boyunca kullanılabilmesine izin vermesi

    • Bellek "pool"unu optimize ederek memcpy sayısını azaltabiliyorsunuz
  • Kendi hafif TCP/IP stack'ini uygulamak isteyenler için Jeremy Bentham'ın <i>TCP/IP Lean</i> kitabı harika bir kaynak

  • Makaleden alıntı:

    • "Bu sayede lwIP, onlarca kilobayt boş RAM ve yaklaşık 40 kilobayt kod ROM'u olan gömülü sistemlerde kullanım için uygun hale geliyor"
  • Pico W bunu kullanıyor