2012-06-06 24 views
6

मेरे पास कई एम्बेडेड मशीनें हैं जो मल्टीकास्ट समूह में आरटीपी ऑडियो डेटा सुन रही हैं और स्ट्रीमिंग कर रही हैं। वे एक स्मार्ट प्रबंधित स्विच (नेटगियर जीएस 108 ईवी 2) से जुड़े हुए हैं जो अपने बंदरगाहों पर मूल igmp स्नूपिंग और मल्टीकास्ट फ़िल्टरिंग करता है, ताकि मेरा बाकी (डब्ल्यू) लैन बाढ़ न हो।मल्टीकास्ट समूह सदस्यता रीफ्रेश करें

प्रारंभ में सब कुछ लगभग 500-520 सेकंड के लिए ठीक काम करता है। उसके बाद, वे प्राप्त नहीं करते हैं जब तक कि वे छोड़कर समूह में शामिल न हों। मुझे लगता है कि स्विच टाइमआउट के बाद शामिल होने के बारे में "भूलना" है।

क्या समूह सदस्यता को रीफ्रेश करने का कोई तरीका है, यानी स्विच को यह बताते हुए कि पैकेट खोने के बिना अभी भी कोई सुन रहा है?

सिस्टम जानकारी:

Arch: blackfin 

# cat /proc/version 
Linux version 2.6.28.10-ADI-2009R1-uCBF54x-EMM 
(gcc version 4.3.3 (ADI)) #158 PREEMPT Tue Jun 5 20:05:42 CEST 2012 

उत्तर

2

इस तरह बहुस्त्र्पीय/IGMP प्रोटोकॉल काम करता है। एक ग्राहक को सदस्यता रिपोर्ट भेजकर समय-समय पर समूह में शामिल होना पड़ता है या यह माना जाएगा कि उसने कुछ कम समय के बाद समूह छोड़ दिया है। हालांकि, उन रिपोर्टों को आमतौर पर स्थानीय मल्टीकास्ट राउटर से सदस्यता क्वेरी प्राप्त करते समय भेजा जाता है। या तो आपके क्लाइंट को क्वेरी प्राप्त नहीं होती है या रिपोर्ट के साथ प्रतिक्रिया नहीं देती है।

यह देखने के लिए कि कौन सा आईजीएमपी पैकेट आपके नेटवर्क के माध्यम से भेजा गया है, वायरसहार्क जैसे टूल का उपयोग करने का प्रयास करें।

+0

अच्छी तरह से, सी में, एक सदस्यता रिपोर्ट मैन्युअल रूप से भेजने के लिए, क्वेरी की प्रतीक्षा किए बिना या समूह को छोड़कर कोई तरीका है? मुझे संदेह है कि मेरा 20 $ स्विच इन करता है। – derhoch

+1

हां, बस सदस्यता रिपोर्ट और अपने मल्टीकास्ट समूह पते के साथ अपना स्वयं का आईजीएमपी पैकेट (आईजीएमपीवी 2 पर्याप्त होगा) का निर्माण करें। आपको इसे भेजने के लिए शायद कच्चे सॉकेट की आवश्यकता होगी क्योंकि कोई टीसीपी या यूडीपी हेडर नहीं है। – scai

1

आप एक IGMP querierMembership Queries भेजने के लिए, के रूप में पहले से ही scai द्वारा समझाया गया था की जरूरत है।

यदि आप ऐसा करने के लिए अपने राउटर को कॉन्फ़िगर नहीं कर सकते हैं, तो आप अपने कंप्यूटरों में से एक का उपयोग कर सकते हैं। यह देखकर कि एक पूर्ण मल्टीकास्ट रूटिंग डिमन कैसे चल रहा है (और मैंने कभी ऐसा नहीं किया है), मेरा सुझाव है कि आप igmpproxy का दुरुपयोग करने का प्रयास करें।

पहले एक डमी नदी के ऊपर इंटरफ़ेस बनाने (यह एक समान नहीं होती!):

ip tap add dev tap6 mode tap 

लिखें igmpproxy.conf:

# Dummy upstream interface. 
phyint tap6 upstream ratelimit 0 threshold 1 

# Local interface. 
phyint eth0 downstream ratelimit 0 threshold 1 

# Explicitly disable any other interfaces (yes, it sucks). 
phyint NAME disabled 
... 

अंत में igmpproxy शुरू (रूट के रूप में):

igmpproxy -v /path/to/igmpproxy.conf 
0

यदि आपके एम्बेडेड डिवाइस लिनक्स चला रहे हैं, तो आपको उन पर रिवर्स पैकेट फ़िल्टर बंद करना होगा या वे respo समूह सदस्यता प्रश्न समूह के लिए। उस स्थिति में अपस्ट्रीम स्विच मान लेगा कि उस मल्टीकास्ट को कोई भी नहीं सुन रहा है और इसे बंद कर देता है।

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