Nutikas DDS
Reaalajas andmeside kaitsesüsteemidele
Vahevara, mis annab jõudu missioonikriitilistele sõidukiplatvormidele
Täisfunktsionaalne DDS koos X-Type'idega. Relvakvaliteediga DDS kaitseks.
Powering defence
Astute DDS on andmete levitamise vahetarkvara, mis on Astute Systemsi täieliku DEF-STAN 23-009 üldise sõidukiarhitektuuri (GVA) lahenduse keskmes. Anduritest ekraanideni ühendab üks ühtne platvorm kõik teie sõjaväe sõiduki alamsüsteemid.
Why Publish/Subscribe
Traditsiooniliste arhitektuuride probleem
Vanad sõidukisüsteemid kasutavad punkt-punkti ühendusi. Uue alamsüsteemi lisamisel peate muutma iga süsteemi, millega see suhtleb. See loob:
- ❌ Kallis integratsioon – iga uus komponent vajab kohandatud kodeerimist
- ❌ Habras süsteemid – üks rike võib levida üle võrgu
- ❌ Tarnijaga seotus – patenteeritud protokollid seovad teid ühe tarnijaga
- ❌ Aeglased uuendused – ühe alamsüsteemi muutmine tähendab kõige uuesti testimist
Avaldamise/tellimise lahendus
DDS-i avaldamise/tellimise arhitektuuriga alamsüsteemid avaldavad andmeid lihtsalt nimetatud teemadele. Iga süsteem, mis neid andmeid vajab, tellib selle teema. Punkt-punkti ühendusi pole. Kohandatud integratsioonikoodi pole vaja.
| Ärikasu | Kuidas Pub/Sub pakub |
|---|---|
| 💰 Madalamad integratsioonikulud | Lisage uusi alamsüsteeme ilma olemasolevaid muutmata |
| 🔧 Lihtsam hooldus | Komponentide eraldi vahetamine või uuendamine |
| 🛡️ Suurem vastupidavus | Süsteemid jätkavad tööd ka siis, kui teised rikki lähevad |
| 🏭 Mitme müüja vabadus | Kombineeri erinevate tarnijate seadmeid ühel andmesiinil |
| ⏱️ Kiirem turule jõudmise aeg | Standardsed liidesed tähendavad vähem kohandatud arendust |
Üks allikas kogu GVA virna jaoks
Astute Systems on ainus müüja, kes pakub GVA-ga ühilduvatele sõjaväesõidukitele terviklikku ja integreeritud tarkvarapaketti :
| Komponent | Mida see teeb |
|---|---|
| Boheemlaslik | SysML-mudelite vaatamine ja valideerimine, liideste definitsioonide genereerimine |
| LDMX | Parima klassi maaandmete mudeli redaktor ja valideerija LDM v10.0.0 jaoks |
| ToolX | Automatiseeritud koodi genereerimine, ehituse integreerimine ja juurutamise tööriistad |
| Nutikas DDS | Ühendage kõik alamsüsteemid reaalajas turvalise andmejaotusega |
| Maaandmete mudel v10.0.0 | Eelnevalt loodud GVA-ga ühilduvad andmetüübid kõigi sõidukidomeenide jaoks |
| Nutikas HMI | Meeskonna kuvamise tarkvara, mis vastab DEF-STAN 23-009 nõuetele |
Täisstacki eelised
| Kasu | Mõju |
|---|---|
| 🎯 Üks vastutuspunkt | Üks leping, üks tugimeeskond, üks integratsioonipartner |
| 📋 Tõestatud vastavus | Eelvalideeritud vastavalt DEF-STAN 23-009 nõuetele |
| 🔄 Sujuvad uuendused | Uuenda mis tahes komponenti teisi lõhkumata |
| 💰 Ennustatavad kulud | Ei mingeid ootamatuid integratsioonitasusid ega litsentsimisega seotud probleeme |
| ⏱️ Kiirem kohaletoimetamine | Alusta toimiva tarkvaraga, mitte tühjade raamistikega |
Comparison
Hanke kaalutlused
| Tegur | Nutikas DDS | RTI Connect | CycloneDDS | OpenDDS | Kiire DDS |
|---|---|---|---|---|---|
| Litsentsi mudel | Paindlikud valikud | Kohapõhine reklaam | Eclipse EPL 2.0 | LGPL | Apache 2.0 |
| Litsentsi maksumus | Konkurentsivõimeline | $$$ juurutuse kohta | Tasuta | Tasuta | Tasuta |
| Tugimudel | Austraalia tarnija leping | Globaalne ettevõte | Eclipse'i fond | OCI reklaam | eProsima reklaam |
| Austraalias asuv tugi | ✅ Jah | ❌ USA-s asuv | ❌ Ei | ❌ USA-s asuv | ❌ Hispaanias asuv |
| GVA eelintegratsioon | ✅ Sisseehitatud | ❌ Tellimustööd | ❌ Isetegemine | ❌ Isetegemine | ❌ Isetegemine |
| Täispakk saadaval | ✅ Üks allikas: HMI + LDM + DDS + tööriistad | ❌ Ainult vahevara | ❌ Ainult vahevara | ❌ Ainult vahevara | ❌ Ainult vahevara |
| SysML-i tööriistad | ✅ Boheemlaslik + LDMX + ToolX | ❌ Puudub | ❌ Puudub | ❌ Puudub | ❌ Puudub |
| Ekspordikontroll | Austraalia jurisdiktsioon | USA ITAR-i kaalutlused | EL | USA | EL |
Tehniliste omaduste võrdlus
| Funktsioon | Nutikas DDS | RTI Connect | CycloneDDS | OpenDDS | Kiire DDS |
|---|---|---|---|---|---|
| DDSI-RTPS 2.5 | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis |
| DDS-i turvalisus 1.1 | ✅ Valmis | ✅ Valmis | ⚠️ Osaline | ✅ Valmis | ✅ Valmis |
| X-tüübid 1.3 | ✅ Valmis | ✅ Valmis | ⚠️ Osaline | ⚠️ Osaline | ⚠️ Osaline |
| Dünaamiliste andmete API | ✅ Valmis | ✅ Valmis | ❌ Puudub | ⚠️ Põhiline | ⚠️ Põhiline |
| TypeLookup teenus | ✅ Valmis | ✅ Valmis | ❌ Puudub | ❌ Puudub | ⚠️ Osaline |
| Sisu filtreerimine | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis |
| Jagatud mälu transport | ✅ Valmis | ✅ Valmis | ✅ Valmis | ❌ Puudub | ✅ Valmis |
| TCP transport | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis | ✅ Valmis |
| Nullkoopia | ✅ Toetatud | ✅ Toetatud | ✅ Toetatud | ❌ Puudub | ✅ Toetatud |
Standardite järgimine
| Standardne | Nutikas DDS | RTI Connect | CycloneDDS | OpenDDS | Kiire DDS |
|---|---|---|---|---|---|
| OMG DDS 1.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDSI-RTPS 2.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDS-XTypes 1.3 | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |
| OMG DDS-i turvalisus 1.1 | ✅ | ✅ | ⚠️ | ✅ | ✅ |
| OMG IDL 4.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| DEF-STAN 23-009 (GVA) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Maaandmete mudel v10.0.0 | ✅ | ❌ | ❌ | ❌ | ❌ |
Keele- ja platvormitugi
| Võimekus | Nutikas DDS | RTI Connect | TsüklonDDS | OpenDDS | Kiire DDS |
|---|---|---|---|---|---|
| C++ | C++20 | C++11 | C99 ümbris | C++11 | C++11 |
| C | C++ kaudu | ✅ Natiivne | ✅ Natiivne | ❌ | ✅ Natiivne |
| Python | ✅ | ✅ | ✅ | ✅ | ✅ |
| Rooste | ✅ | ❌ | ✅ | ❌ | ❌ |
| Linux | ✅ | ✅ | ✅ | ✅ | ✅ |
| Aknad | ✅ | ✅ | ✅ | ✅ | ✅ |
| VxWorks | Tegevuskava | ✅ | ⚠️ | ✅ | ⚠️ |
| Sisseehitatud/RTOS | ✅ Loodud | ✅ Mikrovariant | ⚠️ | ⚠️ | ⚠️ |
| Staatiline linkimine | ✅ Üks raamatukogu | ⚠️ | ⚠️ Jagatud raamatukogud | ⚠️ Jagatud raamatukogud | ⚠️ Jagatud raamatukogud |
Miks Astute DDS võidab?
| vs RTI Connext | vs CycloneDDS | vs OpenDDS | vs kiire DDS |
|---|---|---|---|
| Paindlikud litsentsimisvõimalused | Täielik X-Type'ide tugi | Täielik dünaamiliste andmete API | Austraalias asuv tugi |
| Austraalia müüja, ITAR-i probleeme pole | Sisseehitatud turvalisus | TypeLookup teenus | Täielik vastavus GVA-le |
| Ühest allikast pärit täielik GVA-virn | Parim oma klassis LDMX + ToolX | Parim oma klassis LDMX + ToolX | Lihtsam juurutamine |
| LDM v10.0.0 on kaasas | Kommertstoetus | Austraalia jurisdiktsioon | Täielikud X-tüübid |
Why Astute DDS
„Astute’i tarkvara abil vähendasime oma GVA integreerimise ajakava 40%. Ühe tarnija määramine vahetarkvara, HMI ja andmemudeli eest vastutavaks kõrvaldas eelmiste programmide poolt kimbutanud näpuga näitamise.“
— Programmijuht, Ühendkuningriigi kaitseminister
Koostalitlusvõime garanteeritud
Astute DDS on täielikult ühilduv kõigi peamiste DDS-i rakendustega. Teie sõiduk saab sujuvalt suhelda järgmistega:
Tarnijaga seotust ei ole. Kui partnersüsteem kasutab teistsugust DDS-i rakendust, loob Astute DDS ühenduse ilma muudatusteta.
Kaitsestandardite järgimine
Ehitatud sõjaliste vajaduste jaoks
| Standardne | Staatus |
|---|---|
| DEF-STAN 23-009 | ✅ Täielik GVA vastavus |
| Maaandmete mudel v10.0.0 | ✅ Täielikud domeenitüübid |
| NATO STANAG | ✅ Koostalitlusvõimeline |
| Küberturvalisuse põhitõed | ✅ Turvasertifikaat |
Turvalisus, mida saate usaldada
- 🔐 Krüptitud side — kõik andmed on edastamise ajal kaitstud
- 🎫 Sertifikaadipõhine autentimine — Ühenduse loovad ainult volitatud süsteemid
- 📋 Juurdepääsukontrolli poliitikad — Määrake, kes saab iga teemat avaldada või tellida
- 📝 Täielik auditilogi — Täielik jälg turvaülevaadete jaoks
Tõestatud tootmises
Juurutatud mitmesse programmi
Astute DDS-i usaldavad kaitseministrid Austraalias, Ühendkuningriigis ja liitlasriikides:
| Domeen | Rakendused |
|---|---|
| 🎖️ Soomukid | Meeskonna näidikud, andurite liitmine, relvade integreerimine |
| 🤖 Robootika ja autonoomsed süsteemid | Mehitamata maismaasõidukid, robotplatvormid, autonoomne navigatsioon |
| 🛡️ Vastu-UAS (CUAS) | Droonide tuvastamise, jälgimise ja võitmise süsteemid |
| ✈️ Maapealsed juhtimisjaamad | UAV juhtimine ja kontroll, andurite toide |
| 🚢 Mereväe süsteemid | Sillaekraanid, kahjustuste kontroll, navigatsioon |
| 🏭 Treening ja simulatsioon | Sünteetilised keskkonnad, tegevuse järgne ülevaade, arutelu |
🎬 Demo taotlemine
Vaadake Astute DDS-i ja kogu GVA paketti tegevuses. Lisateavet meie paketi kohta või küsige kohe demot.
Frequently Asked Questions
Kõige sagedamini esitatavad küsimused, mida arendajad Astute DDS-i kasutuselevõtul esitavad.
1. Mis on Astute'i DDS?
Astute DDS on OMG andmejaotusteenuse C++20 implementatsioon
(DDS) DCPS API, DDSI-RTPS 2.5 juhtmeline protokoll, DDS-XTypes 1.3 tüübisüsteem,
DDS-Security 1.1/1.2 pluginad ja IDL 4.2. See tarnitakse staatilise versioonina.
teek libastutedds.a (lisaks C, Pythoni ja Rusti sidumine) ja sellega on kaasas
astutedds-inspect diagnostika graafiline kasutajaliides ja koostalitlusvõimeline Shapesi demo.
2. Kuidas ma saan teemat avaldada ja tellida?
Loo DomainParticipant , Topic ja seejärel DataWriter (avaldaja pool)
või DataReader (tellija pool):
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);Vt Alustamine › Esimene taotlus .
3. Mis vahe on funktsioonidel read() ja take() ?
-
read()tagastab näidised, aga **jätab need lugeja vahemällu**, nii et hilisemad kõned (või teised sama abonendi lugejad) saavad neid uuesti lugeda. -
take()tagastab näidised ja **eemaldab need** vahemälust.
Kasutage funktsiooni read() , kui teema esindab jagatud olekut , mida soovite kontrollida.
korduvalt; kasuta take() kui teema esindab sündmusi, mida soovid
tarbida täpselt üks kord.
4. Miks ei saa hiljem liituvad tellijad varasemaid näidiseid?
Vaikimisi on DURABILITY VOLATILE , seega enne tellijat kirjutatud näidised
sobitatud näidiseid ei tarnita. Hilinenud liitujatele ajalooliste näidiste tarnimiseks
seadista kirjutaja ja vastavad lugejad TRANSIENT_LOCAL abil
vastupidavus (mis eeldab ka RELIABLE töökindlust):
DataWriterQos qos;
writer->get_qos(qos);
qos.durability().kind = TRANSIENT_LOCAL_DURABILITY_QOS;
qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer->set_qos(qos); Kirjutaja taaskäivitamisel püsivuse tagamiseks kasutage
Püsivusteenus ehk TRANSIENT / PERSISTENT
vastupidavuse liigid.
5. Mida teeb RELIABILITY QoS?
-
BEST_EFFORT(vaikimisi paljude sisseehitatud teemade puhul): juhtmel kaduma läinud näidiseid ei edastata uuesti. Madalaim üldkulu. -
RELIABLE: kirjutaja jälgib iga sobiva lugeja kinnitusi (ACKNACK/ südamelöök) ja edastab uuesti vastamata järjekorranumbrid, kuni
lugeja jõuab järele või on ajalugu täis.
Usaldusväärsus sõltub kirjutajast/lugejast ja peab olema ühilduv: BEST_EFFORT
Lugeja võib olla samaväärne RELIABLE kirjutajaga, aga mitte vastupidi.
6. Mida teeb DURABILITY QoS?
DURABILITY kontrollib, kas näidiseid säilitatakse lugejatele edastamiseks.mis liituvad pärast näidise kirjutamist:
| Lahke | Kas on saadaval ka hilisematele liitujatele? |
|---|---|
VOLATILE | Ei |
TRANSIENT_LOCAL | Jah, kuni kirjanik on elus |
TRANSIENT | Jah, kogu kirjutaja eluea jooksul (Persistence Service'i kaudu) |
PERSISTENT | Jah, kõikide protsesside taaskäivituste korral (kettal) |
7. Mis vahe on HISTORY ja DURABILITY vahel?
HISTORY ( KEEP_LAST(depth) või KEEP_ALL ) kontrollib, mitu sämplit kirjutaja/lugeja vahemälu hoiab andmeid igal ajahetkel. DURABILITY kontrollib, kas
kirjanik pakub lugejatele näidiseid, mis hiljem sobivad. Nad töötavad koos, aga
lahendada erinevaid probleeme: KEEP_ALL üksi ei tee näidiseid kättesaadavaks
hilistele liitujatele.
8. Kuidas ma saan domeeni ID määrata?
Edastage domeeni ID esimese argumendina funktsioonile create_participant :
auto dp = DomainParticipantFactory::get_instance()
->create_participant(42, PARTICIPANT_QOS_DEFAULT, nullptr, 0); Erinevate domeenide osalejad ei suhtle omavahel. DDSI-RTPS port
valem 7400 + 250 * domain_id määrab kindlaks kasutatavad baas-UDP pordid
avastus.
9. Miks mu kirjastaja ja tellija teineteist ei leia?
Levinumad põhjused:
- Erinevad domeeni ID-d – mõlemad osalejad peavad kasutama sama ID-d.
- Multisaadet blokeeritud — SPDP kasutab UDP multisaadet aadressil
239.255.0.1autor
Vaikimisi. Kontrollige hosti tulemüüri ja lülitage IGMP nuhkimine sisse. - Vale võrguliides — mitme koduga hostidel on seatud
ASTUTEDDS_NETWORK_INTERFACE=või konfigureerige see JSON-i/XML-i avastamise profiilis (vt JSON-i avastamise konfiguratsioon ). - Ühildumatu QoS – vaata küsimust 15.
- Erinevad transpordiliigid – veenduge, et mõlemad partnerid kasutavad UDPv4 (või mõlemat UDPv6)
TCP, SHM).
Jäljelogimise lubamine ASTUTEDDS_LOG_LEVEL=trace abil ja paketi kontrollimine
jäädvustamine käsuga astutedds-inspect .
10. Milliseid IDL-i funktsioone toetatakse?
Komplekti kuuluv astutedds-idl kompilaator rakendab OMG IDL 4.2, sealhulgas:
- Primitiivsed tüübid (
boolean,octet, täisarvutüübidint8–uint64,float/double/long double,char/wchar,string/wstring). - Struktuurid, ühendused, enumeratsioonid, bitimaskid, tüübimäärangud.
- Piiratud ja piiramata jadad, massiivid, kaardid.
-
@key,@id,@optional,@default,@range,@min,@max,@unit,@extensibility(FINAL|APPENDABLE|MUTABLE),@nested. - Konstandid ja
modulenimeruumid.
Genereeritud C++ kasutab vaikimisi XCDR2 ja valikulise XCDR1 interopeerimiseks.
11. Kuidas ma saan filtreerida ise avaldatud näidiseid?
Kaks võimalust:
- Ignoreeri osaleja tasandil : kutsu
dp->ignore_publication(handle)
edastades kohaliku kirjutajaInstanceHandle_t. - Filtreeri lugeja tagasihelistust, kasutades
SampleInfo::publication_handle
ja võrreldes seda oma kirjutajaget_instance_handle()funktsiooniga.
Sisu filtreerimisega teema võib välistada ka ise avaldatud võtmevälja.
12. Millised tähemärgid on teemade nimedes lubatud?
Teemade nimed võivad sisaldada ASCII tähtnumbrilisi märke, _ ja / sümbolit.
hierarhia eraldaja. Pikkus on piiratud 256 tähemärgiga. Vältige algust
numbrid ja reserveeritud DDS-i sisseehitatud eesliited ( DCPS , dds ). Tüübinimed järgnevad
sama reegel.
13. Kuidas ma saan aru, millal kaugkirjutaja või -lugeja ära läheb?
Paigalda DataReaderListener ja rakenda on_subscription_matched /
on_liveliness_changed või küsitluse reader->get_subscription_matched_status() . current_count_changeväli on negatiivne, kui teine pool ei sobi kokku.
Elavust reguleerib LIVELINESS QoS — seatud
kind = AUTOMATIC_LIVELINESS_QOS koos lease_duration iga tuvastamiseksvaiksed eakaaslased piiratud aja jooksul.
14. Kuidas ma saan uute andmete saabumisel tagasihelistamise?
Lisage kuulaja DATA_AVAILABLE_STATUS maskiga:
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 tulekahjud nii uute näidiste kui ka eksemplari elutsükli jaoks muudatused; enne viidete eemaldamist kontrollige alati SampleInfo::valid_data
näidise kasulik koormus.
15. Mida tähendab "Ühildumatu QoS"?
Kirjutaja ja lugeja sobivad kokku ainult siis, kui iga päring/pakutud QoS on
ühilduv:
| Poliitika | Taotletud ≤ Pakutud |
|---|---|
RELIABILITY | lugeja BEST_EFFORT ≤ kirjutaja RELIABLE |
DURABILITY | lugeja tüüp ≤ kirjutaja tüüp (spetsifikatsiooni järjekorras) |
DEADLINE | period ≥ period |
LATENCY_BUDGET | lugeja duration ≥ kirjutaja duration |
OWNERSHIP | peab olema võrdne ( SHARED või EXCLUSIVE ) |
PARTITION | vähemalt ühe partitsiooni nimi peab kattuma |
Kuula on_offered_incompatible_qos / on_requested_incompatible_qos
täpse poliitika ID leidmiseks käitusajal.
16. Kuidas saata UDP datagrammist suuremaid näidiseid?
Astute DDS fragmenteerib automaatselt konfigureeritust suuremaid näidiseid
fragment_size (IPv4 puhul vaikimisi 1344 baiti) ja paneb need uuesti kokku lugeja, mis kasutab DDSI-RTPS DATA_FRAG alamsõnumeid. Usaldusväärsusprotokoll
taastab puuduvad fragmendid ilma kogu proovi uuesti saatmata.
Väga suurte valimite (≥ 1 MB) korral suurendage operatsioonisüsteemi sokli puhvreid:
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608ja kaaluge kohalike lugejate jaoks jagatud mälu transpordile üleminekut.
17. Kuidas ma konfigureerin, millist võrguliidest kasutatakse?
Kolm võimalust eelistuse järjekorras:
- Keskkonnamuutuja:
ASTUTEDDS_NETWORK_INTERFACE=eth0. - JSON-i avastamise konfiguratsioon — vaata JSON-i avastamise konfiguratsioon .
- XML-i QoS-profiil — vaata DDS-XML-i QoS-profiilid .
Kui ühtegi pole määratud, valib Astute DDS esimese mitte-loopback-liidese, millel on
multisaadet toetav aadress.
18. Kas ma saan Astute DDS-i kasutada võrgus ilma multisaadeteta?
Jah. Kaks alternatiivi:
- Unicast SPDP partnerite loend : esitage partnerite hosti/pordi paaride loend
Avastuskonfiguratsioon; Astute DDS saadab SPDP-teateid igale partnerile üksikteatega. - TCP transport : lülita osaleja TCP RTPS transpordile
keskkonnad, mis blokeerivad UDP täielikult. Vaata
DDS-domeeni ruuter isoleeritud võrkude läbimiseks.
19. Kuidas ma saan madala latentsusaja saavutada?
- Kasutage
RELIABLEtöökindlust koosKEEP_LAST(1)ajalooga mõlemas otsas, et
kordusekstatusi on minimaalselt. - Luba jagatud mälu transport ühispaiknevatele osalejatele.
- Kinnitage Astute DDS-i lõimed protsessori afiinsusega ja kasutage reaalajas ajastamist
(SCHED_FIFO) avaldaja ja tellija protsessides. - Keela Nagle UDP abil (vaikimisi).
- Suurendage soklipuhvreid (vt küsimus 16), et purskeid neelata.
- Pakkimisviivituse keelamiseks määra
LATENCY_BUDGET = 0.
20. Miks ma näen suurte näidiste avaldamisel latentsusaja pikenemist?
Kui näidised ületavad operatsioonisüsteemi vaikesokli puhvri (Linuxis sageli 208 KB),
tuum jätab paketid vahele ja usaldusväärne protokoll peab need uuesti saatma, põhjustades
piigid. Tõsta net.core.rmem_max / net.core.wmem_max vähemalt väärtusele
valimi suurus lahendab selle probleemi. Kaalu fragmenteerimist väiksema fragment_size
kadudega võrkudes.
21. Kuidas ma ühendan kaks DDS-domeeni?
Kasutage Astute DDS-i domeeniruuterit – teenust, mis ühendab kahte või enamat
domeenid ja edastavad konfigureeritud teemasid nende vahel, valikulise lisavõimalusega
Võtme/sisu filtreerimine ja QoS-i teisendamine. Vaata
DDS-domeeni ruuter .
22. Millised keelesidemed on saadaval?
| Keel | Staatus | Märkused |
|---|---|---|
| C++20 | Stabiilne | Peamine API — libastutedds.a |
| C | Stabiilne | FFI jaoks mõeldud Flat C API, vaata include/astutedds/c/astutedds.h |
| Python | Stabiilne | pybind11 seosed, CPython 3.10 – 3.13 |
| Rooste | Beeta | astutedds crate (turvaline ümbris C API kohal) |
23. Milliseid platvorme ja operatsioonisüsteemi versioone toetatakse?
| Platvorm | Testitud versioonid |
|---|---|
| Linux | Ubuntu 22.04 / 24.04, RHEL 9 / 10, AlmaLinux 9 / 10, Debian 12 |
| Aknad | Windows 10, Windows 11, Windows Server 2022 |
Linuxi Pythoni kettad on märgistatud manylinux_2_28 (glibc ≥ 2.28) ja töötavad
mis tahes ühilduval distributsioonil.
24. Kuidas ma luban DDS-i turvalisuse?
- Identiteedi (X.509) ja õiguste (allkirjastatud XML) artefaktide pakkumine.
- Konfigureerige osaleja omaduse QoS autentimise, juurdepääsukontrolli ja
Krüptoplugina omadused (CA sertifikaat, identiteedisertifikaat/võti, õiguste fail,
juhtimisfail). - Link Astute DDS-iga, mis on loodud
-DASTUTEDDS_ENABLE_SECURITY=ONabil.
Täielike juhiste ja a-otsa kohta vaadake DDS Security lehte .
haldus-/lubade mall.
25. Kuidas andmeid pärast taaskäivitamist säilitada?
Käivita püsiteenus oma domeeni kõrval. See tellib
konfigureeritud TRANSIENT / PERSISTENT teemad, salvestab näidiseid kohalikku
andmebaasi (vaikimisi SQLite) ja avaldab need uuesti hilise liitumise jaoks
tellijad – sealhulgas need, kes liituvad pärast algse kirjutaja lahkumist.
Vaata Püsivuse teenus .
26. Kuidas ma saan liiklust salvestada ja taasesitada?
Domeeni jäädvustamiseks kasutage komplekti kuuluvat astutedds-record tööriista
.astdb faili ja astutedds-replay , et see muudetava väärtusega avaldada ajaline skaleerimine. Salvestamine on tüübiteadlik ja kasutab sisemiselt XCDR2-d. Vaata
Salvestamine ja taasesitus .
27. Kuidas ma saan andmetüüpi arendada ilma tellijaid katkestamata?
Märkige IDL-tüüp @extensibility(MUTABLE) (või APPENDABLE ) abil ja
Märgista iga liige @id(N) -ga. XCDR2 muudetavad vood võimaldavad:
- Uute liikmete lisamine mõlemasse otsa.
- Valikuliste liikmete eemaldamine.
- Liikmete ümberjärjestamine.
Sobimatud liikmed jäetakse X-tüüpide määramisreeglite kaudu vahele.
@extensibility(FINAL) lukustab paigutuse ja seda tuleb kasutada binaarkoodide puhulÜhilduvus vanemate XCDR1 lugejatega on oluline.
28. Kuidas ma saan sisufiltreeritud teemasid kasutada?
Loo tavalisest teemast SQL-laadse filtri abil ContentFilteredTopic
avaldis ja siduda sellega 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); Filtrit hinnatakse kirjutaja poolel, kui see on võimalik, ribalaiuse säästmiseks.
29. Kuidas ma saan XML-failist QoS-i seadistada?
Kasutage XmlQosLoader DDS-XML profiili lugemiseks ja selle rakendamiseks loomisel
üksused:
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); Skeemi ja toimimise kohta vaata DDS-XML QoS profiile
näited.
30. Kuidas ma saan siluda koostalitlus- või avastamisprobleeme?
- Leitud andmete vaatamiseks käivita domeenis käsk
astutedds-inspect
osalejad, lõpp-punktid ja vastavusse viidud olek reaalajas. - Jäädvusta liiklus käsuga
tcpdump -i any -w dds.pcap 'udp port 7400 or portrange 7400-7500'ja ava see Wiresharkis — RTPS-i analüüsivahendis.
dekodeerib SPDP, SEDP ja kasutajaandmeid. - Jäljelogide lubamine:
ASTUTEDDS_LOG_LEVEL=trace ASTUTEDDS_LOG_FILE=/tmp/astutedds.log. - Kinnitage üksuste ID-d ja portid:
- SPDP kirjutaja/lugeja:
00:01:00:c2/00:01:00:c7 - SEDP väljaanne:
00:00:03:c2/00:00:03:c7 - SEDP tellimus:
00:00:04:c2/00:00:04:c7 - Baasport:
7400 + 250 × domain_id.
- SPDP kirjutaja/lugeja:
- Veenduge, et mõlemad partnerid reklaamiksid ühilduvaid müüja ID-sid ja protokolli versioone
(DDSI-RTPS 2.5).