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
Hacker News görüşleri
Birkaç yıl önce bir projede LwIP kullanarak sistem testlerini etkili şekilde gerçekleştirdim
IP stack ifadesi bunun değerini olduğundan az gösteriyor
LwIP gibi seçenek arayanlara NetXDuo ve ona karşılık gelen ThreadX, FileX, LevelX, UsbX'e bakmalarını öneririm
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
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
memcpysayısını azaltabiliyorsunuzKendi hafif TCP/IP stack'ini uygulamak isteyenler için Jeremy Bentham'ın <i>TCP/IP Lean</i> kitabı harika bir kaynak
Makaleden alıntı:
Pico W bunu kullanıyor