Linux पर TCP initcwnd का वर्तमान / डिफ़ॉल्ट मान प्राप्त करें


9

मैं इस तरह के मूल्य में हेरफेर कर सकता हूं:

ip route change ... initcwnd 10

और फिर एक प्रतिक्रिया है:

ip route show

लेकिन किसी भी संशोधन से पहले डिफ़ॉल्ट मूल्य के बारे में क्या? क्या सिस्टम से उस मान को क्वेरी करने का कोई तरीका है?

वैकल्पिक रूप से, क्या आप एक वैध संदर्भ प्रदान कर सकते हैं जो प्रत्येक कर्नेल संस्करण के लिए डिफ़ॉल्ट हार्डकोड मूल्य दिखाता है?

जवाबों:


10

मैं वास्तव में यकीन के लिए नहीं जानता, लेकिन यह एक कानूनी संदर्भ की तरह लगता है

कूबड़:

$ grep -A 2 initcwnd `find /usr/src/linux/include -type f -iname '*h'`

बाहर:

/usr/src/linux/include/net/tcp.h:
/* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
#define TCP_INIT_CWND          10

हां, कोड को पकड़ना हमेशा एक अच्छा विचार है!
cYrus

6

खैर, मैं यह नहीं कह सकता कि मैं 100% निश्चित हूं कि इसका उत्तर होना चाहिए, क्योंकि यह अक्सर आता है, ssउदाहरण के लिए, कुछ जानकारी प्राप्त करने के लिए अच्छा विकल्प है:

 ss -nli|fgrep cwnd
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10

-nकष्टप्रद डीएनएस हल करने से छुटकारा पाने के लिए विशिष्ट है, -lक्या हम केवल सॉकेट सुनने के लिए चिपके रहते हैं और -i(कुंजी) "आंतरिक टीसीपी जानकारी दिखाएं"। जैसा कि देखा जा सकता है, कंजेशन एल्गोरिथ्म और डिफॉल्ट cwnd दोनों को दिखाया गया है।


2

अगर मैंने आपको सही तरीके से समझा, तो आप snd_cwndएक टीसीपी सॉकेट को आरंभीकृत करने पर निर्धारित पैरामीटर के शुरुआती मूल्य की तलाश कर रहे हैं ।

ऐसा लगता है कि लिनक्स कर्नेल के साथ शुरू होता है 2.6.39, एक मैक्रो TCP_INIT_CWNDको लिनक्स में पेश किया गया है / इसमें शामिल हैं / net / tcp.h जो कि snd_cwndटीसीपी सॉकेट को आरंभीकृत करते समय मान को पॉप्युलेट करता है ।

मुझे पता है कि यह कोड कहाँ के लिए कर्नेल में है IPv4, और दुर्भाग्यवश यह किसी मैक्रो का उपयोग नहीं करता है जो कि पुराने से भी कम उम्र के लोगों के लिए मूल्य को पॉप्युलेट करने के लिए उपयोग करता है।2.6.39

/* net/ipv4/tcp_ipv4.c from 2.6.37 kernel */
static int tcp_v4_init_sock(struct sock *sk)
{
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct tcp_sock *tp = tcp_sk(sk);

        ....
        ....
        ....

        /* So many TCP implementations out there (incorrectly) count the
         * initial SYN frame in their delayed-ACK and congestion control
         * algorithms that we must have the following bandaid to talk
         * efficiently to them.  -DaveM
         */
        tp->snd_cwnd = 2;

        ....
        ....
        ....
}

एक समान init कोड IPv6अंदर और साथ ही अंदर tcp_v6_init_sock()फ़ंक्शन के लिए मौजूद हैnet/ipv6/tcp_ipv6.c

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.