1 पॉइंट द्वारा GN⁺ 2024-09-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें

lwIP का अवलोकन

परिचय
  • lwIP एक स्वतंत्र छोटे TCP/IP protocol stack का implementation है
  • इसका फोकस RAM उपयोग को कम रखते हुए full-scale TCP को बनाए रखने पर है
  • यह embedded systems में उपयोग के लिए उपयुक्त है, और इसे कुछ दसियों kilobytes RAM तथा लगभग 40 kilobytes code ROM की आवश्यकता होती है
  • इसे मूल रूप से Adam Dunkels ने विकसित किया था, और अब इसका रखरखाव दुनिया भर के developers के network द्वारा किया जाता है
विशेषताएँ
  • IP (Internet Protocol, IPv4 और IPv6): कई network interfaces के बीच packet forwarding सहित
  • ICMP (Internet Control Message Protocol): network maintenance और debugging
  • IGMP (Internet Group Management Protocol): multicast traffic management
  • MLD (Multicast Listener Discovery): IPv6 के लिए, RFC 2710 अनुपालन लक्ष्य
  • ND (Neighbor Discovery और Stateless Address Autoconfiguration): RFC 4861 और RFC 4862 अनुपालन लक्ष्य
  • DHCP, AutoIP/APIPA (Zeroconf) और (stateless) DHCPv6
  • UDP (User Datagram Protocol): experimental UDP-lite extension सहित
  • TCP (Transmission Control Protocol): congestion control, RTT estimation, fast recovery/fast retransmit, और SACK transmission
  • raw/native API: बेहतर performance के लिए
  • वैकल्पिक Berkeley-जैसा socket API
  • TLS: लगभग transparent TLS के लिए वैकल्पिक layered TCP ("altcp") (mbedTLS पर port किया गया)
  • PPPoS और PPPoE (Point-to-Point Protocol over Serial/Ethernet)
  • DNS (domain name resolver, mDNS सहित)
  • 6LoWPAN (IEEE 802.15.4, BLE या ZEP के माध्यम से)
अनुप्रयोग
  • HTTP server: SSI और CGI सहित (altcp के माध्यम से HTTPS)
  • SNMPv2c agent: MIB compiler सहित, v3 को altcp के माध्यम से support किया जाता है
  • SNTP (Simple Network Time Protocol)
  • NetBIOS name service responder
  • MDNS (Multicast DNS) responder
  • iPerf server implementation
  • MQTT client: TLS support altcp के माध्यम से संभव
लाइसेंस
  • lwIP BSD license के तहत मुफ्त उपलब्ध है
विकास
  • lwIP embedded devices के लिए एक उत्कृष्ट TCP/IP stack के रूप में विकसित हुआ है
  • developers bug fixes, improvements और additional features submit करके stack की उपयोगिता को और बढ़ाते हैं
  • development Savannah पर host किया जाता है, और Git तथा mailing list के माध्यम से कोई भी lwIP सुधार में योगदान दे सकता है
  • lwIP TCP/IP stack का रखरखाव 'lwip' Git module में किया जाता है, और contributions 'contrib' Git module में हैं
  • Git server access के बारे में अधिक जानकारी के लिए doc/savannah.txt देखें
  • वर्तमान Git tree वेब पर उपलब्ध है: lwip, lwip-contrib
  • patch और bug submission: lwIP project page
  • continuous integration build: Travis CI
दस्तावेज़ीकरण
  • source code का स्वयं का documentation नियमित रूप से extract किया जाता है और web page पर उपलब्ध कराया जाता है: lwIP documentation
  • lwIP के लिए wiki लगातार बढ़ रही है: lwIP wiki
  • mailing list subscription: mailing list
  • searchable archives: lwip-users, lwip-devel

GN⁺ का सार

  • lwIP embedded systems में कुशल TCP/IP stack प्रदान करता है और memory usage को न्यूनतम रखता है
  • यह विभिन्न network protocols और applications को support करके flexibility और scalability प्रदान करता है
  • developer community की सक्रिय भागीदारी से इसमें लगातार सुधार हो रहा है
  • समान कार्यक्षमता वाले projects में FreeRTOS+TCP, uIP आदि शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-09-08
Hacker News राय
  • कुछ साल पहले एक प्रोजेक्ट में LwIP का उपयोग करके सिस्टम टेस्टिंग प्रभावी ढंग से की गई थी

    • यह ऐसा प्रोजेक्ट था जिसमें कई माइक्रोकंट्रोलर internal LAN के ज़रिए आपस में संचार करते थे
    • MicroCOS नाम का embedded kernel और LwIP IP stack इस्तेमाल किया गया था
    • cross-platform build tools सेट किए गए ताकि native execution या x64 code में compile करके उन्हें developer box पर चलाया जा सके
    • LwIP की सबसे निचली link layer के हिस्से को mock implement करके standard TCP/IP का उपयोग किया गया
    • एक छोटा TCP server लिखा गया ताकि microcontroller application developer machine पर वास्तविक सिस्टम की तरह संचार करे
    • यह सेटअप बहुत अच्छी तरह काम करता था और प्रोजेक्ट डेवलपमेंट के दौरान कई सालों तक इस्तेमाल हुआ
  • IP stack कहना इसकी क्षमता को कम करके आंकना है

    • इसे HTTP client, HTTP server, या MQTT client के रूप में इस्तेमाल किया जा सकता है
    • यह embedded networking के busybox जैसा है, लेकिन इसका license कहीं अधिक सुविधाजनक है
  • LwIP जैसे विकल्प खोजने वालों को NetXDuo और उसके समकक्ष ThreadX, FileX, LevelX, UsbX पर विचार करने की सलाह दी जाती है

    • यह commercial RTOS network stacks में से एक है और 20 साल से उपयोग में है
    • इसकी ownership कई बार बदली है, और फिलहाल इसे Eclipse Foundation support करता है तथा यह MIT license के तहत है
    • LwIP की तुलना में NetXDuo उपयोग करने की सिफारिश की जाती है
    • NetXDuo लिंक
  • Adam Dunkels ने Protothreads का अधिकांश हिस्सा लिखा है

  • यह जानने की जिज्ञासा है कि nongnu.org क्या है और इसका gnu.org से क्या संबंध है

    • savannah.gnu.org Free Software Foundation द्वारा प्रायोजित "official" GNU software के लिए hosting site है
    • savannah.nongnu.org उन "community" projects के लिए hosting site है जिन्हें FSF प्रायोजित नहीं करता
    • संबंधित लिंक
  • संभवतः resource-constrained devices पर सबसे ज़्यादा इस्तेमाल होने वाला TCP/IP stack यही है

    • लंबे समय तक इसका कोई प्रतिस्पर्धी विकल्प नहीं था
    • FreeRTOS-Plus-TCP लिंक आशाजनक दिखता है
  • LWIP को पसंद करने का एक कारण यह है कि यह Ethernet MAC DMA द्वारा allocate किए गए उसी memory block को packet के पूरे lifetime के दौरान उपयोग करने देता है

    • memory "pool" को optimize करके memcpys की संख्या कम की जा सकती है
  • जो लोग अपना lightweight TCP/IP stack implement करना चाहते हैं, उनके लिए Jeremy Bentham की किताब <i>TCP/IP Lean</i> एक बेहतरीन resource है

  • लेख से उद्धरण:

    • "इससे lwIP उन embedded systems में उपयोग के लिए उपयुक्त हो जाता है जिनमें कुछ दर्जन kilobytes spare RAM और लगभग 40 kilobytes code ROM हो"
  • Pico W इसका उपयोग करता है