Linux नेटवर्किंग स्टैक

Linux नेटवर्क पैकेट रिसीव

  • नेटवर्क डिवाइस में NIC(Network Interface Card) पैकेट के आने की सूचना देने के लिए IRQ(Interrupt Request) उत्पन्न करता है
  • IRQ हैंडलर बहुत उच्च प्राथमिकता पर चलता है और अतिरिक्त IRQ जनरेशन को ब्लॉक करता है
  • डिवाइस ड्राइवर IRQ context के बाहर काम को प्रोसेस करने के लिए softIRQ सिस्टम का उपयोग किया जाता है
  • softIRQ kernel thread बनाया जाता है, और softnet_data structure बनाया जाता है
  • NIC, DMA(Direct Memory Access) का उपयोग करके नेटवर्क डेटा को RAM के ring buffer में लिखवाता है
  • NAPI softIRQ polling loop शुरू होता है
  • net_rx_action loop, NAPI structure की जाँच करता है और पैकेट को napi_gro_receive तक भेजता है
  • पैकेट netif_receive_skb के जरिए protocol stack तक पहुँचता है

Linux kernel नेटवर्क ट्रांसमिशन

  • जब application कोई message भेजता है, तो TCP header लिखा जाता है और L3 handler को कॉल किया जाता है
  • पैकेट को fragment किया जाता है, और L2 transmission function को कॉल किया जाता है
  • ड्राइवर पैकेट को tx ring buffer में queue करता है
  • NIC, RAM से पैकेट लेकर उसे transmit करता है
  • ट्रांसमिशन पूरा होने पर NIC hard IRQ उत्पन्न करता है
  • ड्राइवर इस IRQ को प्रोसेस करता है और NAPI poll सिस्टम को schedule करता है

नेटवर्क परफ़ॉर्मेंस ट्यूनिंग

त्वरित HOWTO

/proc/net/softnet_stat & /proc/net/sockstat
  • /proc/net/softnet_stat फ़ाइल हर CPU core के आँकड़े देती है
  • /proc/net/sockstat फ़ाइल socket उपयोग के आँकड़े देती है
ss
  • ss socket statistics की जाँच करने वाली utility है, जिससे memory usage देखा जा सकता है
netstat
  • netstat नेटवर्क connection और protocol stack statistics देने वाली command-line utility है
sysctl
  • sysctl command का उपयोग करके system/network settings बदली जा सकती हैं
  • /etc/sysctl.conf फ़ाइल को edit करके मानों को स्थायी रूप से बदला जा सकता है

NIC ring buffer

  • NIC ring buffer एक fixed-size FIFO buffer है, जो RAM में स्थित होता है
  • burst connection को सुचारु रूप से संभालने के लिए इस queue को बढ़ाने की आवश्यकता हो सकती है

GN⁺ का सार

  • यह गाइड Linux नेटवर्क स्टैक के काम करने के तरीके को विस्तार से समझाती है और नेटवर्क परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के कई तरीके बताती है
  • नेटवर्क पैकेट के रिसीव और ट्रांसमिशन के दौरान IRQ और softIRQ की भूमिका को समझना महत्वपूर्ण है
  • sysctl command से system settings को समायोजित करके और NIC ring buffer का आकार बदलकर परफ़ॉर्मेंस बेहतर की जा सकती है
  • नेटवर्क परफ़ॉर्मेंस ट्यूनिंग सिस्टम की विशिष्ट आवश्यकताओं पर निर्भर कर सकती है, इसलिए अलग-अलग settings के साथ प्रयोग करना ज़रूरी है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.