2012-12-17 23 views
5

मैं एक सर्वर पर चलाने के लिए एक एप्लीकेशन लिख रहा हूं जहां मुझे प्रत्येक ईथरनेट पोर्ट के लिए अधिकतम बैंडविड्थ सेट करने में सक्षम होना चाहिए (वहां 6 बंदरगाह होंगे)।ईथरनेट पोर्ट पर थ्रॉटलिंग बैंडविड्थ

स्पष्ट रूप से मैं बैंडविड्थ को थ्रॉटल कर सकता हूं जो मेरा एप्लिकेशन उपयोग करता है लेकिन मुझे अभी तक कंप्यूटर पर वास्तविक ईथरनेट पोर्ट बैंडविड्थ थ्रॉटल करने के बारे में कोई जानकारी नहीं मिली है।

क्या यह सभी बंदरगाहों की निगरानी के लिए ड्राइवर बनाकर किया जाना चाहिए? क्या कोई मुझे सही दिशा में रास्ता दिखा सकता है?

+1

मैंने आपका शीर्षक संपादित किया है। कृपया देखें, "[प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?] (Http://meta.stackexchange.com/questions/19190/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –

+0

अच्छा लगता है, धन्यवाद। – DawnMage77

+0

आपको इसकी आवश्यकता क्यों है? WIndows इसका समर्थन नहीं करता है - क्योंकि इसके लिए शायद ही कोई उपयोग मामला है;) एक उपयोग केस WITH बेहतर जवाब प्रदान कर सकता है। – TomTom

उत्तर

0

मुझे लगता है कि सबसे आसान चीज एक आउटपुट डिवाइस बनाना होगा जिसे आप अपने वास्तविक प्रेषक के साथ लिख सकते हैं जो ईथरनेट पोर्ट के साथ गड़बड़ करने के बजाए आउटपुट को थ्रॉटल कर देगा।

1

यदि आपके पास एक लिनक्स बॉक्स तक पहुंच है, तो ऐसा करने के लिए यह आसान-आसान है। वास्तव में आप इसे दिलचस्प बनाने के लिए नेटवर्क की हानि के सभी प्रकार जोड़ सकते हैं।

बस दो नेटवर्क कार्ड स्थापित करें और यातायात को मध्यवर्ती करने के लिए नेटम सेट करें। (यानी तार में नेटम ब्लिप, देरी, जिटर, बैंडविड्थ दर इत्यादि जैसी हानि जोड़ना)

लिनक्स के माध्यम से एंड्रॉइड ट्रैफिक को पार करके मेरे एंड्रॉइड ऑडियो स्ट्रीमिंग ऐप्स के प्रदर्शन की जांच करने के लिए मैं जिस स्क्रिप्ट का उपयोग करता हूं, बॉक्स (एक वाईफाई एपी के साथ इंटरफेस में से एक से जुड़ा हुआ है)।

जोड़ा गया: मेरे अनुप्रयोग के प्रदर्शन का परीक्षण करके, मेरा मतलब है कि कैसे होता है, जबकि एक 4G नेटवर्क पर App व्यवहार ड्राइविंग (अर्थात जिटर का एक बहुत)। या वाई-फाई के साथ घर में उपयोग का मामला; क्या होगा यदि घर में हर कोई स्ट्रीम एचडी वीडियो एक साथ (यानी बैंडविड्थ विवाद, पैकेट नुकसान के बहुत के साथ) का निर्णय लेता है।

#!/bin/bash 

ORIGINAL_PATH=$PATH 

#echo $ORIGINAL_PATH 

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game" 

#echo $PATH 
CTOSINTERFACE=eth1 # EGRESS interface on Bridge, facing the SERVER 
STOCINTERFACE=eth0 # EGGRES interface on Bridge, facing the CLIENT 

# Client To Server 
CDELAY=$1 
CJITTER=$2 
CLOSS=$3 
CDUPLICATE=$4 
CCORRUPT=$5 
CREORDER=$6 

# Server to Client 
SDELAY=$7 
SJITTER=$8 
SLOSS=$9 
SDUPLICATE=$10 
SCORRUPT=$11 
SREORDER=$12 

# Clear Latency/Loss/Jitter 
/sbin/tc qdisc del root dev $CTOSINTERFACE 2>/dev/null 
/sbin/tc qdisc del root dev $STOCINTERFACE 2>/dev/null 


# Client to Server Impairments (on Bridge) 
qdisc add dev $CTOSINTERFACE root netem delay ${CDELAY}ms ${CJITTER}ms loss $CLOSS% duplicate ${CDUPLICATE}% corrupt ${CCORRUPT} reorder ${CREORDER}% limit 10000000 2>&1 >/dev/null 
qdisc add dev $STOCINTERFACE root netem delay ${SDELAY}ms ${SJITTER}ms loss $SLOSS% duplicate ${SDUPLICATE}% corrupt ${SCORRUPT} reorder ${SREORDER}% limit 10000000 2>&1 >/dev/null 

#$PATH=$ORIGINAL_PATH 
export PATH=$ORIGINAL_PATH 
#echo $PATH 

और

#sudo impare_network.sh 100 20 30 0 0 0 0 0 0 0 0 0 0 

के रूप में स्क्रिप्ट कॉल यह होगा - अप-लिंक (सर्वर के लिए ग्राहक) पर - 100ms की देरी, 20% की घबराना जोड़ने (सामान्य वितरण का उपयोग) , 30% पैकेट का नुकसान।

0

wndows में आमतौर पर अतिरिक्त सॉफ्टवेयर के बिना ओएस स्तर पर ऐसा करना संभव नहीं है - उपयोग केस को वास्तव में वास्तव में महत्वपूर्ण नहीं माना जाता है, और गंभीरता से: यह काफी सही है। अगर मुझे नेटवर्क सीमा की ज़रूरत है, तो मैं उन्हें स्विच में लागू कर सकता हूं।

हाइपर-वी में केवल अपवाद है जहां नया पश्चिम संस्करण (2012 आर 2 में) आउटगोइंग बैंडविड्थ को सीमित कर सकता है।

आम तौर पर - आपको विंडोज़ पर तीसरे पक्ष के सॉफ्टवेयर की आवश्यकता होगी, लेकिन उपयोग का मामला वास्तव में बहुत तेज है, क्योंकि आमतौर पर यह अगले उच्च स्विच में उस सीमा को रखने के लिए एक बेहतर जगह है।