2010-07-26 8 views
8

मैं एक टीसीपी कनेक्शन के प्रदर्शन पैरामीटर प्राप्त करने पर काम कर रहा हूं और इनमें से एक पैरामीटर बैंडविड्थ है। मैं लिनक्स 2.6 के बाद समर्थित tcp_info संरचना का उपयोग करने का इरादा रख रहा हूं, जिसमें टीसीपी कनेक्शन के बारे में मेटा डेटा है। tcp_info पर getsockopt() फ़ंक्शन कॉल का उपयोग करके जानकारी पुनर्प्राप्त की जा सकती है। मैंने एक अच्छा दस्तावेज खोजने में काफी समय बिताया है जो उस संरचना के सभी मानकों को समझाता है, लेकिन एक नहीं मिला।संरचना पर अच्छा प्रलेखन tcp_info

इसके अलावा मैंने एक टीसीपी कनेक्शन के लिए tcp_info से मूल्यों को पुनर्प्राप्त करने के लिए एक छोटे से प्रोग्राम का परीक्षण किया जहां मुझे अधिकतर समय के लिए मापा गया एमएसएस मान शून्य के रूप में मिला। लंबी कहानी कम करने के लिए- क्या इसके लिए अनुसरण करने का एक लिंक है tcp_info पर पूरा विवरण और इन मानों का उपयोग करने के लिए भी विश्वसनीय है।

उत्तर

10

यहाँ संरचना और रेने फीफर द्वारा linux tcp_info के उपयोग का एक fairly comprehensive write-up है, लेकिन ध्यान देने योग्य बातें की एक जोड़ी हैं:

  • लेखक इन आंकड़ों समय के साथ बार-बार देखते हैं क्योंकि को देखने के लिए की जरूरत उस संरचना में कोई कुल आंकड़े नहीं।
  • लेखक आपको उन किसी भी डेटा के अर्थ पर अंतिम प्राधिकरण के रूप में tcp.c स्रोत पर निर्देशित करता है।
  • मुझे यकीन नहीं है कि आप अधिकतम सेगमेंट आकार से क्या प्राप्त करने की उम्मीद कर रहे थे, लेकिन उम्मीद है कि आपको लगता है कि इसका मतलब कुछ और है।

आप वास्तव में बैंडविड्थ की सटीक माप में रुचि रखते हैं, तो आप एक माप उपकरण है जो बाहर प्रणाली भी ioctls खींच घटना के बारे में आप जानने में रुचि रखते हैं, को प्रभावित करेगा के रूप में परीक्षण किया जा रहा प्रयोग करना होगा। वास्तव में सटीक परिणाम प्राप्त करने का एकमात्र तरीका एक निष्क्रिय तार स्निफर है। अंत में, आपके आवेदन के आधार पर, "बैंडविड्थ" वास्तव में एक व्यापक छतरी है जो कई मापनों (जैसे विलंबता, राउंड-ट्रिप-टाइम, परिवर्तनीयता, जिटर इत्यादि) को एक श्रेणी में फ़्लैट करता है।

संबंधित मुद्दे