चतुर डीडीएस
रक्षा प्रणालियों के लिए वास्तविक समय डेटा कनेक्टिविटी
मिशन-क्रिटिकल वाहन प्लेटफार्मों को शक्ति प्रदान करने वाला मिडलवेयर
एक्स-टाइप्स से लैस पूर्ण विशेषताओं वाला डीडीएस। रक्षा के लिए हथियार-ग्रेड डीडीएस।
Powering defence
एस्ट्यूट डीडीएस, एस्ट्यूट सिस्टम्स के संपूर्ण डीईएफ-एसटीएएन 23-009 जेनेरिक व्हीकल आर्किटेक्चर (जीवीए) समाधान का केंद्रबिंदु डेटा वितरण मिडलवेयर है। सेंसर से लेकर स्क्रीन तक, एक एकीकृत प्लेटफॉर्म आपके सैन्य वाहन के हर सबसिस्टम को आपस में जोड़ता है।
Why Publish/Subscribe
पारंपरिक वास्तुकलाओं की समस्या
पुराने वाहन सिस्टम पॉइंट-टू-पॉइंट कनेक्शन का उपयोग करते हैं। जब आप कोई नया सबसिस्टम जोड़ते हैं, तो आपको उन सभी सिस्टमों को संशोधित करना होगा जिनसे वह संचार करता है। इससे निम्नलिखित समस्याएं उत्पन्न होती हैं:
- ❌ महंगा एकीकरण — प्रत्येक नए घटक के लिए कस्टम कोडिंग की आवश्यकता होती है
- ❌ नाजुक प्रणालियाँ — एक विफलता पूरे नेटवर्क में फैल सकती है
- ❌ विक्रेता बंधन - मालिकाना प्रोटोकॉल आपको एक ही आपूर्तिकर्ता से बांध देते हैं
- ❌ धीमे अपग्रेड — एक सबसिस्टम को बदलने का मतलब है सब कुछ दोबारा टेस्ट करना
पब्लिश/सब्सक्राइब समाधान
डीडीएस पब्लिश/सब्सक्राइब आर्किटेक्चर के साथ, सबसिस्टम केवल निर्दिष्ट टॉपिक पर डेटा प्रकाशित करते हैं। जिस भी सिस्टम को उस डेटा की आवश्यकता होती है, वह टॉपिक को सब्सक्राइब कर लेता है। इसमें कोई पॉइंट-टू-पॉइंट कनेक्शन नहीं होता। किसी कस्टम इंटीग्रेशन कोड की आवश्यकता नहीं होती।
| व्यावसायिक लाभ | पब/सब कैसे सेवा प्रदान करता है |
|---|---|
| 💰 एकीकरण लागत कम | मौजूदा सबसिस्टमों में बदलाव किए बिना नए सबसिस्टम जोड़ें |
| 🔧 आसान रखरखाव | घटकों को स्वतंत्र रूप से बदलें या अपग्रेड करें |
| 🛡️ अधिक लचीलापन | अन्य प्रणालियों के विफल होने पर भी सिस्टम काम करना जारी रखते हैं। |
| 🏭 कई विक्रेताओं से खरीदारी की स्वतंत्रता | विभिन्न आपूर्तिकर्ताओं के उपकरणों को एक ही डेटा बस पर मिलाएं |
| ⏱️ बाज़ार में तेज़ी से उत्पाद लॉन्च | मानक इंटरफेस का मतलब है कम कस्टम डेवलपमेंट। |
संपूर्ण GVA स्टैक के लिए एकल स्रोत
एस्ट्यूट सिस्टम्स एकमात्र विक्रेता है जो जीवीए-अनुरूप सैन्य वाहनों के लिए एक पूर्ण, एकीकृत सॉफ्टवेयर स्टैक प्रदान करता है :
| अवयव | यह क्या करता है |
|---|---|
| बोहेनिया का | SysML मॉडल देखें और मान्य करें, इंटरफ़ेस परिभाषाएँ उत्पन्न करें |
| एलडीएमएक्स | LDM v10.0.0 के लिए सर्वश्रेष्ठ लैंड डेटा मॉडल संपादक और सत्यापनकर्ता |
| टूलएक्स | स्वचालित कोड जनरेशन, बिल्ड इंटीग्रेशन और डिप्लॉयमेंट टूलिंग |
| चतुर डीडीएस | सभी उपप्रणालियों को वास्तविक समय और सुरक्षित डेटा वितरण से जोड़ें। |
| भूमि डेटा मॉडल v10.0.0 | सभी वाहन डोमेन के लिए पहले से निर्मित GVA-अनुरूप डेटा प्रकार |
| चतुर एचएमआई | क्रू डिस्प्ले सॉफ्टवेयर DEF-STAN 23-009 की आवश्यकताओं को पूरा करता है। |
फुल स्टैक के लाभ
| फ़ायदा | प्रभाव |
|---|---|
| 🎯 एकल उत्तरदायित्व बिंदु | एक अनुबंध, एक सहायता टीम, एक एकीकरण भागीदार |
| 📋 सिद्ध अनुपालन | DEF-STAN 23-009 आवश्यकताओं के अनुसार पूर्व-मान्य किया गया |
| 🔄 निर्बाध अपडेट | अन्य घटकों को नुकसान पहुंचाए बिना किसी भी घटक को अपग्रेड करें |
| 💰 अनुमानित लागत | एकीकरण शुल्क या लाइसेंस संबंधी किसी भी अप्रत्याशित समस्या का कोई झंझट नहीं। |
| ⏱️ तेज़ डिलीवरी | काम करने वाले सॉफ़्टवेयर से शुरुआत करें, न कि खाली फ्रेमवर्क से। |
Comparison
खरीद संबंधी विचार
| कारक | चतुर डीडीएस | आरटीआई कनेक्ट | साइक्लोनडीडीएस | ओपनडीडीएस | फास्ट डीडीएस |
|---|---|---|---|---|---|
| लाइसेंस मॉडल | लचीले विकल्प | प्रति सीट वाणिज्यिक | एक्लिप्स ईपीएल 2.0 | एलजीपीएल | अपाचे 2.0 |
| लाइसेंस की लागत | प्रतिस्पर्धी | प्रति तैनाती $$$ | मुक्त | मुक्त | मुक्त |
| समर्थन मॉडल | ऑस्ट्रेलियाई विक्रेता अनुबंध | वैश्विक उद्यम | एक्लिप्स फाउंडेशन | ओसीआई वाणिज्यिक | eProsima वाणिज्यिक |
| ऑस्ट्रेलिया-आधारित सहायता | ✅ हाँ | ❌ अमेरिका स्थित | ❌ नहीं | ❌ अमेरिका स्थित | ❌ स्पेन स्थित |
| जीवीए पूर्व-एकीकरण | ✅ अंतर्निर्मित | ❌ कस्टम कार्य | ❌ स्वयं करें | ❌ स्वयं करें | ❌ स्वयं करें |
| फुल स्टैक उपलब्ध है | ✅ एकल स्रोत: HMI + LDM + DDS + टूल्स | ❌ केवल मिडलवेयर | ❌ केवल मिडलवेयर | ❌ केवल मिडलवेयर | ❌ केवल मिडलवेयर |
| SysML टूलिंग | ✅ बोहेमियन + एलडीएमएक्स + टूलएक्स | ❌ कोई नहीं | ❌ कोई नहीं | ❌ कोई नहीं | ❌ कोई नहीं |
| निर्यात नियंत्रण | ऑस्ट्रेलियाई क्षेत्राधिकार | अमेरिकी आईटीएआर संबंधी विचार | यूरोपीय संघ | हम | यूरोपीय संघ |
तकनीकी विशेषताओं की तुलना
| विशेषता | चतुर डीडीएस | आरटीआई कनेक्ट | साइक्लोनडीडीएस | ओपनडीडीएस | फास्ट डीडीएस |
|---|---|---|---|---|---|
| डीडीएसआई-आरटीपीएस 2.5 | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण |
| डीडीएस सुरक्षा 1.1 | ✅ पूर्ण | ✅ पूर्ण | ⚠️ आंशिक | ✅ पूर्ण | ✅ पूर्ण |
| एक्स-टाइप 1.3 | ✅ पूर्ण | ✅ पूर्ण | ⚠️ आंशिक | ⚠️ आंशिक | ⚠️ आंशिक |
| डायनामिक डेटा एपीआई | ✅ पूर्ण | ✅ पूर्ण | ❌ कोई नहीं | ⚠️ बुनियादी | ⚠️ बुनियादी |
| टाइप लुकअप सेवा | ✅ पूर्ण | ✅ पूर्ण | ❌ कोई नहीं | ❌ कोई नहीं | ⚠️ आंशिक |
| विषयवस्तु निस्पादन | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण |
| साझा मेमोरी परिवहन | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ❌ कोई नहीं | ✅ पूर्ण |
| टीसीपी परिवहन | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण | ✅ पूर्ण |
| शून्य-प्रतिलिपि | ✅ समर्थित | ✅ समर्थित | ✅ समर्थित | ❌ कोई नहीं | ✅ समर्थित |
मानकों का अनुपालन
| मानक | चतुर डीडीएस | आरटीआई कनेक्ट | साइक्लोनडीडीएस | ओपनडीडीएस | फास्ट डीडीएस |
|---|---|---|---|---|---|
| ओएमजी डीडीएस 1.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
| ओएमजी डीडीएसआई-आरटीपीएस 2.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| ओएमजी डीडीएस-एक्सटाइप्स 1.3 | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |
| ओएमजी डीडीएस सिक्योरिटी 1.1 | ✅ | ✅ | ⚠️ | ✅ | ✅ |
| ओएमजी आईडीएल 4.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| डीईएफ-एसटीएएन 23-009 (जीवीए) | ✅ | ❌ | ❌ | ❌ | ❌ |
| भूमि डेटा मॉडल v10.0.0 | ✅ | ❌ | ❌ | ❌ | ❌ |
भाषा और प्लेटफ़ॉर्म समर्थन
| क्षमता | चतुर डीडीएस | आरटीआई कनेक्ट | साइक्लोनडीडीएस | ओपनडीडीएस | फास्ट डीडीएस |
|---|---|---|---|---|---|
| सी++ | सी++20 | सी++11 | C99 रैपर | सी++11 | सी++11 |
| सी | सी++ के माध्यम से | ✅ मूल निवासी | ✅ मूल निवासी | ❌ | ✅ मूल निवासी |
| पायथन | ✅ | ✅ | ✅ | ✅ | ✅ |
| जंग | ✅ | ❌ | ✅ | ❌ | ❌ |
| लिनक्स | ✅ | ✅ | ✅ | ✅ | ✅ |
| विंडोज़ | ✅ | ✅ | ✅ | ✅ | ✅ |
| वीएक्सवर्क्स | रोडमैप | ✅ | ⚠️ | ✅ | ⚠️ |
| एम्बेडेड/आरटीओएस | ✅ के लिए डिज़ाइन किया गया | ✅ माइक्रो वेरिएंट | ⚠️ | ⚠️ | ⚠️ |
| स्थैतिक लिंकिंग | ✅ एकल पुस्तकालय | ⚠️ | ⚠️ साझा लाइब्रेरी | ⚠️ साझा लाइब्रेरी | ⚠️ साझा लाइब्रेरी |
एस्ट्यूट डीडीएस क्यों जीतता है?
| बनाम आरटीआई कॉनेक्स्ट | बनाम साइक्लोनडीडीएस | बनाम ओपनडीडीएस | बनाम फास्ट डीडीएस |
|---|---|---|---|
| लचीले लाइसेंसिंग विकल्प | X-Types के लिए पूर्ण समर्थन | संपूर्ण डायनामिक डेटा एपीआई | ऑस्ट्रेलिया स्थित समर्थन |
| ऑस्ट्रेलियाई विक्रेता, आईटीएआर संबंधी कोई चिंता नहीं | अंतर्निर्मित सुरक्षा | टाइप लुकअप सेवा | पूर्ण जीवीए अनुपालन |
| सिंगल सोर्स फुल जीवीए स्टैक | सर्वश्रेष्ठ एलडीएमएक्स + टूलएक्स | सर्वश्रेष्ठ एलडीएमएक्स + टूलएक्स | सरल तैनाती |
| LDM v10.0.0 शामिल है | वाणिज्यिक समर्थन | ऑस्ट्रेलियाई क्षेत्राधिकार | संपूर्ण एक्स-टाइप |
Why Astute DDS
"हमने एस्ट्यूट स्टैक का उपयोग करके अपने जीवीए एकीकरण की समयसीमा को 40% तक कम कर दिया। मिडलवेयर, एचएमआई और डेटा मॉडल के लिए एक ही विक्रेता के जिम्मेदार होने से उन सभी समस्याओं का समाधान हो गया जो पिछले कार्यक्रमों में व्याप्त थीं।"
— कार्यक्रम प्रबंधक, यूके डिफेंस प्राइम
अंतरसंचालनीयता की गारंटी
एस्ट्यूट डीडीएस सभी प्रमुख डीडीएस कार्यान्वयनों के साथ पूरी तरह से अंतरसंचालनीय है। आपका वाहन इन सभी के साथ निर्बाध रूप से संचार कर सकता है:
किसी भी विक्रेता से बंधे रहने की आवश्यकता नहीं है। यदि कोई भागीदार प्रणाली किसी भिन्न डीडीएस कार्यान्वयन का उपयोग करती है, तो एस्ट्यूट डीडीएस बिना किसी संशोधन के उससे जुड़ जाएगा।
रक्षा मानक अनुपालन
सैन्य आवश्यकताओं के लिए निर्मित
| मानक | स्थिति |
|---|---|
| डेफ-स्टेन 23-009 | ✅ पूर्ण GVA अनुपालन |
| भूमि डेटा मॉडल v10.0.0 | ✅ डोमेन के सभी प्रकार उपलब्ध हैं |
| नाटो स्टैनाग | ✅ अंतरसंचालनीयता के लिए तैयार |
| साइबर एसेंशियल्स | ✅ सुरक्षा प्रमाणित |
सुरक्षा जिस पर आप भरोसा कर सकते हैं
- 🔐 एन्क्रिप्टेड संचार — सभी डेटा परिवहन के दौरान सुरक्षित रहता है
- 🎫 प्रमाणपत्र-आधारित प्रमाणीकरण — केवल अधिकृत सिस्टम ही कनेक्ट हो सकते हैं
- 📋 पहुँच नियंत्रण नीतियाँ — यह परिभाषित करें कि प्रत्येक विषय पर कौन प्रकाशित कर सकता है या सदस्यता ले सकता है
- 📝 पूर्ण ऑडिट लॉगिंग — सुरक्षा समीक्षाओं के लिए संपूर्ण विवरण
उत्पादन में सिद्ध
कई कार्यक्रमों में तैनात
ऑस्ट्रेलिया, ब्रिटेन और सहयोगी देशों की प्रमुख रक्षा कंपनियों द्वारा एस्ट्यूट डीडीएस पर भरोसा किया जाता है:
| कार्यक्षेत्र | आवेदन |
|---|---|
| 🎖️ बख्तरबंद वाहन | क्रू डिस्प्ले, सेंसर फ्यूजन, हथियार एकीकरण |
| 🤖 रोबोटिक्स और स्वायत्त प्रणालियाँ | मानवरहित जमीनी वाहन, रोबोटिक प्लेटफॉर्म, स्वायत्त नेविगेशन |
| 🛡️ काउंटर-यूएएस (सीयूएएस) | ड्रोन का पता लगाने, उसे ट्रैक करने और निष्क्रिय करने की प्रणालियाँ |
| ✈️ ग्राउंड कंट्रोल स्टेशन | यूएवी कमांड और नियंत्रण, सेंसर फ़ीड |
| 🚢 नौसेना प्रणालियाँ | पुल प्रदर्शन, क्षति नियंत्रण, नेविगेशन |
| 🏭 प्रशिक्षण और सिमुलेशन | कृत्रिम वातावरण, कार्रवाई के बाद की समीक्षा, संक्षिप्त जानकारी |
🎬 डेमो का अनुरोध करें
एस्ट्यूट डीडीएस और संपूर्ण जीवीए स्टैक को क्रियान्वित होते हुए देखें। हमारे स्टैक के बारे में अधिक जानकारी प्राप्त करें या अभी डेमो का अनुरोध करें।
Frequently Asked Questions
एस्ट्यूट डीडीएस को अपनाते समय डेवलपर्स द्वारा सबसे अधिक पूछे जाने वाले शीर्ष प्रश्न।
1. एस्ट्यूट डीडीएस क्या है?
एस्ट्यूट डीडीएस, ओएमजी डेटा डिस्ट्रीब्यूशन सर्विस का C++20 में कार्यान्वित संस्करण है।
(डीडीएस) डीसीपीएस एपीआई, डीडीएसआई-आरटीपीएस 2.5 वायर प्रोटोकॉल, डीडीएस-एक्सटाइप्स 1.3 टाइप सिस्टम,
DDS-Security 1.1/1.2 प्लगइन्स और IDL 4.2। इसे स्टैटिक रूप में डिलीवर किया जाता है।
libastutedds.a लाइब्रेरी (साथ ही C, Python और Rust बाइंडिंग) के साथ आती है और इसमें शामिल है:
astutedds-inspect डायग्नोस्टिक्स जीयूआई और एक इंटरऑपरेबल शेप्स डेमो।
2. मैं किसी विषय को कैसे प्रकाशित और सब्सक्राइब कर सकता हूँ?
एक DomainParticipant , एक Topic और फिर एक DataWriter (प्रकाशक पक्ष) बनाएं।
या DataReader (सदस्य पक्ष):
using namespace astutedds::dcps;
auto dpf = DomainParticipantFactory::get_instance();
auto dp = dpf->create_participant(0, PARTICIPANT_QOS_DEFAULT, nullptr, 0);
auto topic = dp->create_topic("Hello", "HelloMsg", TOPIC_QOS_DEFAULT, nullptr, 0);
// Publisher
auto pub = dp->create_publisher(PUBLISHER_QOS_DEFAULT, nullptr, 0);
auto writer = pub->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, nullptr, 0);
writer->write(sample, HANDLE_NIL);
// Subscriber
auto sub = dp->create_subscriber(SUBSCRIBER_QOS_DEFAULT, nullptr, 0);
auto reader = sub->create_datareader(topic, DATAREADER_QOS_DEFAULT, nullptr, 0);आरंभ करना › पहला आवेदन देखें।
3. read() और take() में क्या अंतर है?
-
read()फ़ंक्शन सैंपल लौटाता है लेकिन उन्हें रीडर कैश में छोड़ देता है, ताकि बाद में किए गए कॉल (या उसी सब्सक्राइबर के अन्य रीडर) उन्हें फिर से पढ़ सकें। -
take()फ़ंक्शन सैंपल लौटाता है और उन्हें कैश से **हटा देता है**।
जब टॉपिक साझा स्थिति को दर्शाता है जिसे आप जांचना चाहते हैं, तो read() का उपयोग करें।
बार-बार; take() का उपयोग तब करें जब विषय उन घटनाओं को दर्शाता हो जिन्हें आप चाहते हैं
केवल एक बार सेवन करें।
4. देर से जुड़ने वाले ग्राहकों को पहले नमूने क्यों नहीं मिलते?
डिफ़ॉल्ट रूप से DURABILITY VOLATILE है, इसलिए ग्राहक से पहले लिखे गए नमूने
मिलान किए गए नमूने वितरित नहीं किए जाते हैं। देर से शामिल होने वालों को ऐतिहासिक नमूने वितरित करने के लिए,
राइटर और मिलान करने वाले रीडर्स को TRANSIENT_LOCAL के साथ कॉन्फ़िगर करें
स्थायित्व (जिसके RELIABLE विश्वसनीयता भी आवश्यक है):
DataWriterQos qos;
writer->get_qos(qos);
qos.durability().kind = TRANSIENT_LOCAL_DURABILITY_QOS;
qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer->set_qos(qos); राइटर के रीस्टार्ट होने पर निरंतरता बनाए रखने के लिए इसका उपयोग करें
निरंतरता सेवा या TRANSIENT / PERSISTENT
स्थायित्व के प्रकार।
5. RELIABILITY QoS क्या करता है?
-
BEST_EFFORT(कई अंतर्निर्मित विषयों के लिए डिफ़ॉल्ट): वायर पर खो गए सैंपल दोबारा प्रेषित नहीं किए जाते हैं। सबसे कम ओवरहेड। -
RELIABLE: लेखक प्रत्येक मिलान किए गए पाठक से प्राप्त पावती (ACKNACK/ हार्टबीट) को ट्रैक करता है और छूटे हुए अनुक्रम संख्याओं को तब तक पुनः प्रेषित करता है जब तक कि...
पाठक को जानकारी मिल जाती है या इतिहास पूर्ण हो जाता है।
विश्वसनीयता प्रत्येक लेखक/प्रत्येक पाठक के लिए अलग-अलग होती है और संगत होनी चाहिए: BEST_EFFORT
एक पाठक एक RELIABLE लेखक के अनुरूप हो सकता है, लेकिन इसका उल्टा संभव नहीं है।
6. DURABILITY क्यूओएस क्या करता है?
DURABILITY यह नियंत्रित करता है कि नमूनों को पाठकों तक पहुंचाने के लिए सुरक्षित रखा जाए या नहीं।जो नमूना लिखे जाने के बाद जुड़ते हैं:
| दयालु | क्या देर से जुड़ने वालों के लिए भी सुविधा उपलब्ध है? |
|---|---|
VOLATILE | नहीं |
TRANSIENT_LOCAL | हां, जब तक लेखक जीवित है |
TRANSIENT | जी हां, लेखक के पूरे जीवनकाल में (परसिस्टेंस सर्विस के माध्यम से) |
PERSISTENT | हां, प्रक्रिया के पुनः आरंभ होने पर भी (डिस्क पर) |
7. HISTORY और DURABILITY में क्या अंतर है?
HISTORY ( KEEP_LAST(depth) or KEEP_ALL ) नियंत्रित करता है कि कितने सैंपल लिए जा सकते हैं। लेखक/पाठक कैश किसी भी क्षण मौजूद रहता है। DURABILITY यह नियंत्रित करता है कि क्या
लेखक पाठकों को ऐसे नमूने प्रस्तुत करता है जो बाद में मेल खाते हैं। वे साथ मिलकर काम करते हैं लेकिन
विभिन्न समस्याओं का समाधान करें: केवल KEEP_ALL उपयोग करने से नमूने उपलब्ध नहीं होते हैं।
देर से जुड़ने वालों के लिए।
8. मैं डोमेन आईडी कैसे निर्दिष्ट करूं?
create_participant फ़ंक्शन के पहले तर्क के रूप में डोमेन आईडी पास करें:
auto dp = DomainParticipantFactory::get_instance()
->create_participant(42, PARTICIPANT_QOS_DEFAULT, nullptr, 0); विभिन्न डोमेन के प्रतिभागी आपस में संवाद नहीं करते हैं। डीडीएसआई-आरटीपीएस पोर्ट
सूत्र 7400 + 250 * domain_id , उपयोग किए जाने वाले आधार यूडीपी पोर्ट निर्धारित करता है।
खोज।
9. मेरे प्रकाशक और ग्राहक एक-दूसरे को क्यों नहीं खोज पा रहे हैं?
सामान्य कारणों में:
- अलग-अलग डोमेन आईडी — दोनों प्रतिभागियों को एक ही आईडी का उपयोग करना होगा।
- मल्टीकास्ट अवरुद्ध — SPDP
239.255.0.1पर UDP मल्टीकास्ट का उपयोग करता है
डिफ़ॉल्ट। होस्ट फ़ायरवॉल की जाँच करें और IGMP स्नूपिंग को स्विच करें। - गलत नेटवर्क इंटरफ़ेस — मल्टी-होम्ड होस्ट पर
ASTUTEDDS_NETWORK_INTERFACE=सेट करेंASTUTEDDS_NETWORK_INTERFACE=या इसे डिस्कवरी JSON/XML प्रोफ़ाइल में कॉन्फ़िगर करें ( JSON डिस्कवरी कॉन्फ़िगरेशन देखें)। - असंगत QoS — प्रश्न 15 देखें।
- विभिन्न ट्रांसपोर्ट — सत्यापित करें कि दोनों पीयर UDPv4 (या दोनों UDPv6) का उपयोग करते हैं।
टीसीपी, एसएचएम)।
ASTUTEDDS_LOG_LEVEL=trace के साथ ट्रेस लॉगिंग को सक्षम करें और एक पैकेट का निरीक्षण करें।
astutedds-inspect के साथ कैप्चर करें।
10. आईडीएल की कौन-कौन सी विशेषताएं समर्थित हैं?
बंडल किए गए astutedds-idl कंपाइलर में OMG IDL 4.2 शामिल है, जिसमें निम्नलिखित शामिल हैं:
- प्रिमिटिव प्रकार (
boolean,octet, पूर्णांक प्रकारint8–uint64,float/double/long double,char/wchar,string/wstring)। - संरचनाएं, संघ, गणनाएं, बिटमास्क, टाइपडेफ़।
- परिबद्ध और असीमित अनुक्रम, सरणियाँ, मानचित्र।
-
@key,@id,@optional,@default,@range,@min,@max,@unit,@extensibility(FINAL|APPENDABLE|MUTABLE),@nested. - स्थिरांक और
moduleनामस्थान।
जनरेटेड C++ डिफ़ॉल्ट रूप से XCDR2 का उपयोग करता है, इंटरऑप के लिए वैकल्पिक XCDR1 का उपयोग किया जा सकता है।
11. मैंने खुद जो सैंपल प्रकाशित किए हैं, उन्हें मैं कैसे फ़िल्टर करूँ?
दो विकल्प:
- प्रतिभागी स्तर पर अनदेखा करें :
dp->ignore_publication(handle)को कॉल करें
स्थानीय लेखक केInstanceHandle_tपास करना। -
SampleInfo::publication_handleका उपयोग करके रीडर कॉलबैक में फ़िल्टर करें
और इसकी तुलना आपके लेखक केget_instance_handle()से करें।
सामग्री-फ़िल्टर किया गया विषय स्व-प्रकाशित मुख्य फ़ील्ड को भी बाहर कर सकता है।
12. विषय के नामों में कौन-कौन से अक्षर अनुमत हैं?
विषय के नामों में ASCII अल्फ़ान्यूमेरिक वर्ण, _ और / शामिल हो सकते हैं।
पदानुक्रम विभाजक। लंबाई 256 वर्णों तक सीमित है। शुरुआत में इसका प्रयोग न करें।
अंक और आरक्षित डीडीएस बिल्ट-इन प्रीफ़िक्स ( DCPS , dds )। टाइप नाम निम्नलिखित हैं।
वही नियम।
13. मुझे कैसे पता चलेगा कि कोई दूरस्थ लेखक या पाठक कब अनुपस्थित हो गया है?
DataReaderListener इंस्टॉल करें और on_subscription_matched / को इम्प्लीमेंट करें
on_liveliness_changed , या poll reader->get_subscription_matched_status() . current_count_changeजब कोई पीयर अन-मैच करता है तो फ़ील्ड नेगेटिव हो जाता है।
जीवंतता LIVELINESS QoS द्वारा नियंत्रित होती है — सेट करें
kind = AUTOMATIC_LIVELINESS_QOS जिसमें पता लगाने के लिए एक lease_duration हैसीमित समय के भीतर मौन सहकर्मी।
14. नया डेटा आने पर मुझे कॉलबैक कैसे प्राप्त होगा?
DATA_AVAILABLE_STATUS मास्क के साथ एक लिसनर संलग्न करें:
class MyListener : public DataReaderListener {
void on_data_available(DataReader* reader) override {
// call reader->take(...) here
}
};
reader->set_listener(&listener, DATA_AVAILABLE_STATUS); on_data_available फ़ंक्शन नए सैंपल और इंस्टेंस-लाइफ़साइकल दोनों के लिए सक्रिय होता है। परिवर्तन; डीरेफरेंस करने से पहले हमेशा SampleInfo::valid_data निरीक्षण करें
नमूना पेलोड।
15. "असंगत QoS" का क्या अर्थ है?
लेखक और पाठक का मिलान तभी होता है जब प्रत्येक अनुरोध/प्रस्तावित QoS पूरा हो
अनुकूल:
| नीति | अनुरोधित ≤ प्रस्तावित |
|---|---|
RELIABILITY | पाठक BEST_EFFORT ≤ लेखक RELIABLE |
DURABILITY | रीडर का प्रकार ≤ राइटर का प्रकार (स्पेसिफिकेशन क्रम में) |
DEADLINE | पाठक period ≥ लेखक period |
LATENCY_BUDGET | पाठक duration ≥ लेखक duration |
OWNERSHIP | समान होना चाहिए ( SHARED या EXCLUSIVE ) |
PARTITION | कम से कम एक विभाजन नाम ओवरलैप होना चाहिए |
on_offered_incompatible_qos / on_requested_incompatible_qos के लिए सुनें
रनटाइम पर सटीक पॉलिसी आईडी का पता लगाने के लिए।
16. मैं यूडीपी डेटाग्राम से बड़े सैंपल कैसे भेजूं?
एस्ट्यूट डीडीएस कॉन्फ़िगर किए गए आकार से बड़े नमूनों को स्वचालित रूप से खंडित करता है।
fragment_size (IPv4 के लिए डिफ़ॉल्ट 1344 बाइट्स) का उपयोग करता है और उन्हें पुनः संयोजित करता है। DDSI-RTPS DATA_FRAG सबमैसेज का उपयोग करने वाला रीडर। विश्वसनीयता प्रोटोकॉल
यह पूरे नमूने को दोबारा भेजे बिना ही छूटे हुए अंशों को पुनः प्राप्त कर लेता है।
बहुत बड़े सैंपल (≥ 1 MB) के लिए OS सॉकेट बफ़र्स को बढ़ाएँ:
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608और स्थानीय पाठकों के लिए साझा-मेमोरी ट्रांसपोर्ट पर स्विच करने पर विचार करें।
17. मैं यह कैसे कॉन्फ़िगर करूँ कि किस नेटवर्क इंटरफ़ेस का उपयोग किया जाए?
वरीयता क्रम में तीन विकल्प:
- पर्यावरण चर:
ASTUTEDDS_NETWORK_INTERFACE=eth0. - JSON डिस्कवरी कॉन्फ़िगरेशन — JSON डिस्कवरी कॉन्फ़िगरेशन देखें।
- XML QoS प्रोफ़ाइल — DDS-XML QoS प्रोफ़ाइल देखें।
यदि कोई भी सेट नहीं है, तो एस्ट्यूट डीडीएस पहले नॉन-लूपबैक इंटरफ़ेस का चयन करता है।
मल्टीकास्ट-सक्षम पता।
18. क्या मैं मल्टीकास्ट के बिना नेटवर्क पर एस्ट्यूट डीडीएस का उपयोग कर सकता हूँ?
हाँ। दो विकल्प:
- यूनिकास्ट SPDP पीयर सूची : इसमें पीयर होस्ट/पोर्ट जोड़े की सूची प्रदान की जाती है।
डिस्कवरी कॉन्फ़िगरेशन; एस्ट्यूट डीडीएस प्रत्येक पीयर को एसपीडीपी घोषणाओं का यूनिकास्ट करता है। - TCP ट्रांसपोर्ट : प्रतिभागी को TCP RTPS ट्रांसपोर्ट पर स्विच करें
ऐसे वातावरण जो यूडीपी को पूरी तरह से अवरुद्ध करते हैं। देखें
पृथक नेटवर्कों को पार करने के लिए डीडीएस डोमेन राउटर ।
19. मैं कम विलंबता के लिए ट्यूनिंग कैसे करूँ?
- दोनों छोरों पर
KEEP_LAST(1)इतिहास के साथRELIABLEविश्वसनीयता का उपयोग करें ताकि
पुनः प्रसारण न्यूनतम हैं। - सहस्थित प्रतिभागियों के लिए साझा मेमोरी परिवहन को सक्षम करें।
- CPU एफिनिटी के साथ Astute DDS थ्रेड्स को पिन करें और रीयल-टाइम शेड्यूलिंग का उपयोग करें।
प्रकाशक और ग्राहक प्रक्रियाओं पर (SCHED_FIFO)। - UDP (डिफ़ॉल्ट सेटिंग) का उपयोग करके Nagle को अक्षम करें।
- अचानक आने वाले झटकों को संभालने के लिए सॉकेट बफ़र्स को बढ़ाएँ (प्रश्न 16 देखें)।
- बैचिंग में होने वाली किसी भी देरी को रोकने के लिए
LATENCY_BUDGET = 0सेट करें।
20. बड़े सैंपल प्रकाशित करते समय मुझे लेटेंसी स्पाइक्स क्यों दिखाई देते हैं?
जब सैंपल ऑपरेटिंग सिस्टम के डिफ़ॉल्ट सॉकेट बफर (लिनक्स पर अक्सर 208 KB) से अधिक हो जाते हैं,
कर्नेल पैकेटों को छोड़ देता है और विश्वसनीय प्रोटोकॉल को उन्हें पुनः प्रेषित करना पड़ता है, जिससे समस्या उत्पन्न होती है।
स्पाइक्स। net.core.rmem_max / net.core.wmem_max को कम से कम तक बढ़ाना।
नमूना आकार इस समस्या को हल करता है। छोटे fragment_size के साथ विभाजन पर विचार करें।
हानिपूर्ण नेटवर्क पर।
21. मैं दो डीडीएस डोमेन को कैसे जोड़ सकता हूँ?
एस्ट्यूट डीडीएस डोमेन राउटर का उपयोग करें — यह एक ऐसी सेवा है जो दो या अधिक डोमेन को आपस में जोड़ती है।
डोमेन और उनके बीच कॉन्फ़िगर किए गए विषयों को आगे बढ़ाता है, वैकल्पिक रूप से
कुंजी/सामग्री फ़िल्टरिंग और QoS अनुवाद। देखें
डीडीएस डोमेन राउटर ।
22. कौन-कौन सी भाषा में बाइंडिंग उपलब्ध हैं?
| भाषा | स्थिति | नोट्स |
|---|---|---|
| सी++20 | स्थिर | प्राथमिक एपीआई — libastutedds.a |
| सी | स्थिर | FFI के लिए फ्लैट C API, include/astutedds/c/astutedds.h देखें |
| पायथन | स्थिर | pybind11 बाइंडिंग, CPython 3.10 – 3.13 |
| जंग | बीटा | astutedds क्रेट (C API पर सुरक्षित रैपर) |
23. कौन से प्लेटफ़ॉर्म और ऑपरेटिंग सिस्टम संस्करण समर्थित हैं?
| प्लैटफ़ॉर्म | परीक्षित संस्करण |
|---|---|
| लिनक्स | Ubuntu 22.04 / 24.04, RHEL 9 / 10, AlmaLinux 9 / 10, Debian 12 |
| विंडोज़ | विंडोज 10, विंडोज 11, विंडोज सर्वर 2022 |
Linux Python व्हील्स को manylinux_2_28 (glibc ≥ 2.28) टैग किया गया है और वे चलते हैं
किसी भी संगत वितरण पर।
24. मैं डीडीएस सुरक्षा कैसे सक्षम करूँ?
- प्रावधान पहचान (X.509) और अनुमतियाँ (हस्ताक्षरित XML) कलाकृतियाँ।
- प्रतिभागी प्रॉपर्टी QoS को Auth, एक्सेस कंट्रोल और के साथ कॉन्फ़िगर करें
क्रिप्टो प्लगइन प्रॉपर्टीज़ (CA प्रमाणपत्र, पहचान प्रमाणपत्र/कुंजी, अनुमतियाँ फ़ाइल,
शासन फ़ाइल)। - Astute DDS के विरुद्ध लिंक
-DASTUTEDDS_ENABLE_SECURITY=ONके साथ बनाया गया है।
संपूर्ण निर्देशों और जानकारी के लिए डीडीएस सिक्योरिटी देखें।
शासन/अनुमतियों का टेम्पलेट।
25. मैं रीस्टार्ट होने पर भी डेटा को कैसे सुरक्षित रखूं?
अपने डोमेन के साथ परसिस्टेंस सर्विस चलाएँ। यह सदस्यता लेता है
TRANSIENT / PERSISTENT टॉपिक्स को कॉन्फ़िगर करता है, स्थानीय स्तर पर सैंपल स्टोर करता है
डेटाबेस (डिफ़ॉल्ट रूप से SQLite) का उपयोग करता है, और उन्हें लेट-जॉइनिंग के लिए पुनः प्रकाशित करता है।
ग्राहक — जिनमें वे लोग भी शामिल हैं जो मूल लेखक के चले जाने के बाद जुड़ते हैं।
परसिस्टेंस सर्विस देखें।
26. मैं ट्रैफ़िक को कैसे रिकॉर्ड और रीप्ले कर सकता हूँ?
किसी डोमेन को कैप्चर करने के लिए बंडल किए गए astutedds-record टूल का उपयोग करें।
.astdb फ़ाइल, और इसे समायोज्य रूप से वापस प्रकाशित करने के लिए astutedds-replay करें। समय स्केलिंग। रिकॉर्डिंग टाइप-अवेयर है और आंतरिक रूप से XCDR2 का उपयोग करती है। देखें
रिकॉर्डिंग और रीप्ले ।
27. सब्सक्राइबर्स को नुकसान पहुंचाए बिना मैं डेटा टाइप को कैसे विकसित कर सकता हूँ?
IDL प्रकार को @extensibility(MUTABLE) (या APPENDABLE ) से एनोटेट करें और
प्रत्येक सदस्य को @id(N) से टैग करें। XCDR2 म्यूटेबल स्ट्रीम्स निम्नलिखित की अनुमति देती हैं:
- दोनों सिरों पर नए सदस्यों को जोड़ना।
- वैकल्पिक सदस्यों को हटाना।
- सदस्यों का पुनर्व्यवस्थापन।
एक्स-टाइप असाइनेबिलिटी नियमों के माध्यम से बेमेल सदस्यों को छोड़ दिया जाता है।
@extensibility(FINAL) लेआउट को लॉक करता है और बाइनरी होने पर इसका उपयोग किया जाना चाहिए।पुराने XCDR1 रीडर्स के साथ संगतता मायने रखती है।
28. मैं कंटेंट-फ़िल्टर किए गए विषयों का उपयोग कैसे करूँ?
SQL जैसे फ़िल्टर का उपयोग करके एक सामान्य विषय से ContentFilteredTopic बनाएं।
एक्सप्रेशन बनाएं और उसमें एक DataReader बाइंड करें:
std::vector params{"42"};
auto cft = dp->create_contentfilteredtopic(
"HighSeverity", topic, "severity > %0", params);
auto reader = sub->create_datareader(cft, DATAREADER_QOS_DEFAULT, nullptr, 0); बैंडविड्थ बचाने के लिए, फ़िल्टर का मूल्यांकन यथासंभव लेखक पक्ष पर किया जाता है।
29. मैं XML फ़ाइल से QoS को कैसे कॉन्फ़िगर करूँ?
DDS-XML प्रोफ़ाइल को पढ़ने और उसे बनाते समय लागू करने के लिए XmlQosLoader उपयोग करें।
संस्थाएँ:
XmlQosLoader loader;
loader.load_file("qos_profiles.xml");
auto qos = loader.get_datawriter_qos("MyLib", "ReliableProfile");
auto writer = pub->create_datawriter(topic, qos, nullptr, 0); स्कीमा और कार्यप्रणाली के लिए DDS-XML QoS प्रोफाइल देखें।
उदाहरण।
30. मैं इंटरऑप या डिस्कवरी संबंधी समस्याओं को कैसे डीबग करूँ?
- खोजे गए डोमेन को देखने के लिए
astutedds-inspectचलाएँ।
प्रतिभागियों, अंतिम बिंदुओं और मिलान की स्थिति की वास्तविक समय में जानकारी। -
tcpdump -i any -w dds.pcap 'udp port 7400 or portrange 7400-7500'का उपयोग करके ट्रैफ़िक कैप्चर करें और इसे Wireshark (RTPS dissector) में खोलें।
यह SPDP, SEDP और उपयोगकर्ता डेटा को डिकोड करता है। - ट्रेस लॉग सक्षम करें:
ASTUTEDDS_LOG_LEVEL=trace ASTUTEDDS_LOG_FILE=/tmp/astutedds.log. - एंटिटी आईडी और पोर्ट सत्यापित करें:
- SPDP लेखक/पाठक:
00:01:00:c2/00:01:00:c7 - एसईडीपी प्रकाशन:
00:00:03:c2/00:00:03:c7 - SEDP सदस्यता:
00:00:04:c2/00:00:04:c7 - बेस पोर्ट:
7400 + 250 × domain_id.
- SPDP लेखक/पाठक:
- दोनों पीयरों द्वारा विज्ञापित संगत विक्रेता आईडी और प्रोटोकॉल संस्करण की पुष्टि करें
(डीडीएसआई-आरटीपीएस 2.5)।