पहले से लॉन्च की गई प्रक्रिया के माध्यम से सीमित नेटवर्क? (लिनक्स / FreeBSD)


10

क्या लॉन्च होने के बाद किसी प्रक्रिया के नेटवर्क थ्रूपुट को सीमित करने की कोई उपयोगिता है? सरल उदाहरण: आप ध्यान दें कि एक उपयोगकर्ता scp का उपयोग करके आपके सभी अपलोड बैंडविड्थ लेता है और आप दर को सीमित करना चाहते हैं या हस्तांतरण की प्राथमिकता को कम करना चाहते हैं।

मुझे लगता है कि मैं इसे प्राप्त करने के लिए iptables / tc या pf के संयोजन का उपयोग कर सकता हूं, लेकिन मैं सोच रहा था कि क्या कोई "वन-शॉट" टूल उपलब्ध है (जैसे एक --pid विकल्प ^ ^ के साथ ट्रिकल)?


क्या आपका मतलब "ट्रिकल" था?
HALP

संपादित करें: मैंने माना कि "ट्रिकल" का इरादा था।
स्टीवन सोमवार

जवाबों:


3

दुर्भाग्य से FreeBSD के लिए ऐसा कोई समाधान नहीं है। ड्यूमनीनेट / ipfw या altq / pf जैसे कई समाधान हैं जिनका उपयोग विभिन्न पैटर्न के आधार पर नेटवर्क उपयोग को सीमित करने के लिए किया जाता है, लेकिन ग्रिड पर नहीं।

लिनक्स पर उपयोगकर्ता के आधार पर नेटवर्क उपयोग को सीमित करने का एक तरीका है:

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

मुझे लगता है कि पीआईडी ​​के आधार पर नेटवर्क के उपयोग को सीमित करने का कोई समाधान नहीं है।


2
FreeBSD का ipfw ट्रैफिक को uid
gelraen

1

lsof नेटवर्क पोर्ट को प्राप्त करने के लिए प्रक्रिया का उपयोग करता है जिसे खरीद रहा है। एक बार जब आप जानते हैं कि किन पोर्ट का उपयोग किया जा रहा है तो आप इन पोर्ट को सीमित करने के लिए IPTABLES नियमों का उपयोग कर सकते हैं। ये लेख आपको एक बेहतर विचार देना चाहिए: http://linux-ip.net/articles/Traffic-Control-HOWTO/ http://blog.edseek.com/~jasonb/articles/traffic_shaping/ http: //ikis। sun.com/pages/viewpage.action?pageId=49906332


0

लिनक्स में, iptables और tc का संयोजन भी एक कठिन समस्या हो सकती है, क्योंकि "--pid-owner" विकल्प "स्वामी" iptables मॉड्यूल से छोड़ दिया गया था ( यहां तालिका के नीचे नोट देखें )। वास्तव में, केवल यह एसोसिएशन (पैकेट - प्रक्रिया) जटिल प्रतीत होती है, जबकि हम बाकी हिस्सों को आसानी से फ़िल्टर कर सकते हैं, या पैकेट को काफी कुशलता से सीमित कर सकते हैं।


0

मुझे नहीं लगता कि इसके लिए कोई तैयार समाधान है। लेकिन, मानक लिनक्स टूल का उपयोग करके आप एक स्क्रिप्ट को हैक कर सकते हैं जो काम करेगा।

सबसे पहले, आप lsof के साथ विशिष्ट प्रक्रिया के सभी कनेक्शनों की एक सूची प्राप्त कर सकते हैं। फिर, आप उन कनेक्शनों के लिए tc के साथ प्रवेश नीतियां बना सकते हैं।


0

गंभीर रूप से, यदि आप प्रक्रिया को +20 तक कम कर देते हैं, तो सिस्टम पर चलने वाली किसी भी चीज़ को प्राथमिकता मिलेगी और नौकरी कम बार निर्धारित की जाएगी, इसलिए बफ़र्स या प्रक्रिया पैकेटों को भरना कठिन हो जाएगा, जो कुछ टीसीपी को जन्म दे सकता है थ्रॉटलिंग। यह छिटपुट होगा, लेकिन पर्याप्त मदद कर सकता है।

# renice 20 -p $pid

1
यह बैंडविड्थ को नियंत्रित करने की कोशिश करने का एक बहुत ही गोल चक्कर वाला तरीका है और यह वास्तव में केवल तभी काम करेगा जब सिस्टम बहुत अधिक लोड हो जाए - एक निष्क्रिय सिस्टम ईवीएन पर फिर से -20 पर ली गई प्रक्रिया अभी भी जितनी बार चाहे सीपीयू पर मिल जाएगी।
voretaq7

ठीक है, लेकिन अगर यह बैंडविड्थ अन्य स्थानीय कंप्यूटरों के साथ साझा नहीं किया जाता है, तो अगर मशीन निष्क्रिय है तो आप ज्यादातर परवाह नहीं करते हैं यदि यह प्रक्रिया सभी बैंडविड्थ प्राप्त करती है। यह केवल तभी है जब कोई अन्य प्रक्रिया है जो बैंडविड्थ का उपयोग करने की कोशिश करती है जो कि मायने रखती है। हम "बहुत भारी लोड" की विभिन्न परिभाषाओं को प्राप्त कर सकते हैं - यदि कोई अन्य प्रक्रिया चलाने की कोशिश कर रही है, तो इसे प्राथमिकता मिलती है और इसलिए यदि लोड औसत है = = 1 प्रति कोर, तो यह मदद कर सकता है। मैंने ध्यान दिया कि यह कच्चा है लेकिन यदि यह एकमात्र उपलब्ध उपकरण (FreeBSD) है तो यह कम से कम एक शॉट के लायक है।
फिल पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.