Vērīgs DDS
Reāllaika datu savienojamība aizsardzības sistēmām
Starpprogrammatūra, kas nodrošina kritiski svarīgu transportlīdzekļu platformu darbību
Pilnībā aprīkots DDS ar X-Types. Ieroču līmeņa DDS aizsardzībai.
Powering defence
Astute DDS ir datu izplatīšanas starpprogrammatūra, kas ir Astute Systems pilnīgā DEF-STAN 23-009 vispārīgās transportlīdzekļu arhitektūras (GVA) risinājuma pamatā. No sensoriem līdz ekrāniem — viena vienota platforma savieno visas jūsu militārā transportlīdzekļa apakšsistēmas.
Why Publish/Subscribe
Problēma ar tradicionālajām arhitektūrām
Mantotās transportlīdzekļu sistēmas izmanto punktveida savienojumus. Pievienojot jaunu apakšsistēmu, ir jāmodificē katra sistēma, ar kuru tā sazinās. Tas rada:
- ❌ Dārga integrācija — Katram jaunam komponentam ir nepieciešama pielāgota kodēšana
- ❌ Trauslas sistēmas — Viena kļūme var izplatīties pa visu tīklu
- ❌ Piegādātāja piesaiste — patentēti protokoli jūs piesaista tikai vienam piegādātājam
- ❌ Lēna jaunināšana — Vienas apakšsistēmas maiņa nozīmē visu atkārtotu testēšanu
Publicēšanas/abonēšanas risinājums
Izmantojot DDS publicēšanas/abonēšanas arhitektūru, apakšsistēmas vienkārši publicē datus nosauktajās tēmās. Jebkura sistēma, kurai šie dati ir nepieciešami, abonē tēmu. Nav tieša savienojuma. Nav pielāgota integrācijas koda.
| Biznesa ieguvums | Kā Pub/Sub nodrošina darbību |
|---|---|
| 💰 Zemākas integrācijas izmaksas | Pievienot jaunas apakšsistēmas, nemainot esošās |
| 🔧 Vienkāršāka apkope | Nomainiet vai uzlabojiet komponentus neatkarīgi |
| 🛡️ Lielāka noturība | Sistēmas turpina darboties pat tad, ja citas sistēmas neizdodas |
| 🏭 Vairāku pārdevēju brīvība | Apvienojiet dažādu piegādātāju iekārtas vienā datu kopnē |
| ⏱️ Ātrāks nonākšanas tirgū laiks | Standarta saskarnes nozīmē mazāk pielāgotas izstrādes |
Viens avots pilnam GVA stekam
Astute Systems ir vienīgais pārdevējs, kas nodrošina pilnīgu, integrētu programmatūras komplektu GVA atbilstošiem militārajiem transportlīdzekļiem:
| Komponents | Ko tas dara |
|---|---|
| Bohēmisks | Skatīt un validēt SysML modeļus, ģenerēt saskarnes definīcijas |
| LDMX | Labākais savā klasē zemes datu modeļa redaktors un validators LDM v10.0.0 |
| ToolX | Automatizēta koda ģenerēšana, integrācija būvniecībā un izvietošanas rīki |
| Vērīgs DDS | Savienojiet visas apakšsistēmas ar drošu datu izplatīšanu reāllaikā |
| Zemes datu modelis v10.0.0 | Iepriekš izveidoti GVA atbilstoši datu tipi visām transportlīdzekļu jomām |
| Astute HMI | Apkalpes displeja programmatūra, kas atbilst DEF-STAN 23-009 prasībām |
Pilna steka priekšrocības
| Ieguvums | Ietekme |
|---|---|
| 🎯 Viena atbildības puse | Viens līgums, viena atbalsta komanda, viens integrācijas partneris |
| 📋 Pierādīta atbilstība | Iepriekš validēts atbilstoši DEF-STAN 23-009 prasībām |
| 🔄 Nevainojami atjauninājumi | Jauniniet jebkuru komponentu, nesabojājot pārējos |
| 💰 Paredzamas izmaksas | Nav negaidītu integrācijas maksu vai licencēšanas problēmu |
| ⏱️ Ātrāka piegāde | Sāciet ar darbojošos programmatūru, nevis tukšiem ietvariem |
Comparison
Iepirkuma apsvērumi
| Faktors | Vērīgs DDS | RTI Connect | CiklonsDDS | AtvērtsDDS | Ātrs DDS |
|---|---|---|---|---|---|
| Licences modelis | Elastīgas iespējas | Reklāma par vienu sēdvietu | Eclipse EPL 2.0 | LGPL | Apache 2.0 |
| Licences izmaksas | Konkurētspējīgs | $$$ par izvietošanu | Bezmaksas | Bezmaksas | Bezmaksas |
| Atbalsta modelis | Austrālijas piegādātāja līgums | Globāls uzņēmums | Eclipse Foundation | OCI reklāma | eProsima reklāma |
| Atbalsts Austrālijā | ✅ Jā | ❌ ASV bāzēts | ❌ Nē | ❌ ASV bāzēts | ❌ Spānijā bāzēts |
| GVA pirmsintegrācija | ✅ Iebūvēts | ❌ Pasūtījuma darbs | ❌ Pašdarināts | ❌ Pašdarināts | ❌ Pašdarināts |
| Pilns steks pieejams | ✅ Viens avots: HMI + LDM + DDS + rīki | ❌ Tikai starpprogrammatūra | ❌ Tikai starpprogrammatūra | ❌ Tikai starpprogrammatūra | ❌ Tikai starpprogrammatūra |
| SysML rīki | ✅ Bohēmietis + LDMX + ToolX | ❌ Nav | ❌ Nav | ❌ Nav | ❌ Nav |
| Eksporta kontrole | Austrālijas jurisdikcija | ASV ITAR apsvērumi | ES | ASV | ES |
Tehnisko īpašību salīdzinājums
| Funkcija | Vērīgs DDS | RTI Connect | CiklonsDDS | AtvērtsDDS | Ātrs DDS |
|---|---|---|---|---|---|
| DDSI-RTPS 2.5 | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts |
| DDS drošība 1.1 | ✅ Pabeigts | ✅ Pabeigts | ⚠️ Daļēja | ✅ Pabeigts | ✅ Pabeigts |
| X-tipi 1.3 | ✅ Pabeigts | ✅ Pabeigts | ⚠️ Daļēja | ⚠️ Daļēja | ⚠️ Daļēja |
| Dinamisko datu API | ✅ Pabeigts | ✅ Pabeigts | ❌ Nav | ⚠️ Pamata | ⚠️ Pamata |
| TypeLookup pakalpojums | ✅ Pabeigts | ✅ Pabeigts | ❌ Nav | ❌ Nav | ⚠️ Daļēja |
| Satura filtrēšana | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts |
| Koplietotās atmiņas transports | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ❌ Nav | ✅ Pabeigts |
| TCP transports | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts | ✅ Pabeigts |
| Nulles kopijas | ✅ Atbalstīts | ✅ Atbalstīts | ✅ Atbalstīts | ❌ Nav | ✅ Atbalstīts |
Atbilstība standartiem
| Standarta | Vērīgs DDS | RTI Connect | CiklonsDDS | AtvērtsDDS | Ātrs DDS |
|---|---|---|---|---|---|
| Ak Dievs! DDS 1.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDSI-RTPS 2.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDS-XTypes 1.3 | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |
| OMG DDS drošība 1.1 | ✅ | ✅ | ⚠️ | ✅ | ✅ |
| OMG IDL 4.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| DEF-STAN 23-009 (GVA) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Zemes datu modelis v10.0.0 | ✅ | ❌ | ❌ | ❌ | ❌ |
Valodu un platformu atbalsts
| Spēja | Vērīgs DDS | RTI Connect | CiklonsDDS | AtvērtsDDS | Ātrs DDS |
|---|---|---|---|---|---|
| C++ | C++20 | C++11 | C99 apvalks | C++11 | C++11 |
| C | Izmantojot C++ | ✅ Vietējais | ✅ Vietējais | ❌ | ✅ Vietējais |
| Python | ✅ | ✅ | ✅ | ✅ | ✅ |
| Rūsa | ✅ | ❌ | ✅ | ❌ | ❌ |
| Linux | ✅ | ✅ | ✅ | ✅ | ✅ |
| Logi | ✅ | ✅ | ✅ | ✅ | ✅ |
| VxWorks | Ceļvedis | ✅ | ⚠️ | ✅ | ⚠️ |
| Iegultās/RTOS | ✅ Paredzēts priekš | ✅ Mikro variants | ⚠️ | ⚠️ | ⚠️ |
| Statiskā saistīšana | ✅ Viena bibliotēka | ⚠️ | ⚠️ Koplietotas bibliotēkas | ⚠️ Koplietotas bibliotēkas | ⚠️ Koplietotas bibliotēkas |
Kāpēc Astute DDS uzvar
| salīdzinājumā ar RTI Connext | pret CycloneDDS | salīdzinājumā ar OpenDDS | salīdzinājumā ar ātro DDS |
|---|---|---|---|
| Elastīgas licencēšanas iespējas | Pilnīgs X-Types atbalsts | Pilnīgs dinamisko datu API | Austrālijā bāzēts atbalsts |
| Austrālijas pārdevējs, nav ITAR problēmu | Iebūvēta drošība | TypeLookup pakalpojums | Pilnīga atbilstība GVA |
| Pilns GVA steks no viena avota | Labākais savā klasē LDMX + ToolX | Labākais savā klasē LDMX + ToolX | Vienkāršāka izvietošana |
| Iekļauts LDM v10.0.0 | Komerciāls atbalsts | Austrālijas jurisdikcija | Pabeigti X-tipi |
Why Astute DDS
"Izmantojot Astute steku, mēs samazinājām GVA integrācijas laika grafiku par 40 %. Tas, ka par starpprogrammatūru, HMI un datu modeli bija atbildīgs viens pārdevējs, novērsa iepriekšējo programmu neapdomīgo raksturu."
— Programmas vadītājs, Apvienotās Karalistes aizsardzības premjerministrs
Sadarbspēja garantēta
Astute DDS ir pilnībā savietojams ar visām galvenajām DDS ieviešanas sistēmām. Jūsu transportlīdzeklis var nemanāmi sazināties ar:
Nav piesaistīta konkrētam piegādātājam. Ja partnera sistēma izmanto atšķirīgu DDS ieviešanu, Astute DDS izveidos savienojumu bez izmaiņām.
Aizsardzības standartu atbilstība
Radīts militārām prasībām
| Standarta | Statuss |
|---|---|
| DEF-STAN 23-009 | ✅ Pilnīga atbilstība GVA prasībām |
| Zemes datu modelis v10.0.0 | ✅ Pilni domēnu veidi |
| NATO STANAG | ✅ Sadarbspējas gatavība |
| Kiberdrošības pamati | ✅ Drošības sertifikāts |
Drošība, kurai varat uzticēties
- 🔐 Šifrēta saziņa — Visi dati ir aizsargāti pārsūtīšanas laikā
- 🎫 Uz sertifikātiem balstīta autentifikācija — izveido savienojumu tikai autorizētas sistēmas
- 📋 Piekļuves kontroles politikas — definējiet, kas var publicēt vai abonēt katru tēmu.
- 📝 Pilnīga audita reģistrēšana — pilnīga drošības pārskatu vēsture
Pārbaudīts ražošanā
Izvietots vairākās programmās
Aizsardzības ministru komandai Astute DDS uzticas visā Austrālijā, Apvienotajā Karalistē un sabiedrotajās valstīs:
| Domēns | Pieteikumi |
|---|---|
| 🎖️ Bruņumašīnas | Apkalpes displeji, sensoru sapludināšana, ieroču integrācija |
| 🤖 Robotika un autonomās sistēmas | Bezpilota sauszemes transportlīdzekļi, robotizētas platformas, autonoma navigācija |
| 🛡️ Pret-UAS (CUAS) | Dronu atklāšanas, izsekošanas un iznīcināšanas sistēmas |
| ✈️ Zemes vadības stacijas | Bezpilota lidaparātu vadība un vadība, sensoru barošana |
| 🚢 Jūras sistēmas | Tiltu displeji, bojājumu kontrole, navigācija |
| 🏭 Apmācība un simulācija | Sintētiskās vides, pēcreakcijas pārskatīšana, izvērtēšana |
🎬 Pieprasīt demonstrāciju
Apskatiet Astute DDS un visu GVA steku darbībā. Uzziniet vairāk par mūsu steku vai pieprasiet demonstrāciju tūlīt.
Frequently Asked Questions
Visbiežāk izstrādātāji uzdod jautājumus, ieviešot Astute DDS.
1. Kas ir Astute DDS?
Astute DDS ir OMG datu izplatīšanas pakalpojuma C++20 ieviešana
(DDS) DCPS API, DDSI-RTPS 2,5 vadu protokols, DDS-XTypes 1,3 tipa sistēma,
DDS-Security 1.1/1.2 spraudņi un IDL 4.2. Tas tiek piegādāts kā statisks
bibliotēka libastutedds.a (plus C, Python un Rust saistījumi) un tiek piegādāta ar
astutedds-inspect diagnostikas grafiskā lietotāja saskarne un sadarbspējīga Shapes demonstrācija.
2. Kā publicēt tēmu un abonēt to?
Izveidojiet DomainParticipant , Topic un pēc tam DataWriter (izdevēja pusē).
vai DataReader (abonenta pusē):
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);Skatiet sadaļu Darba sākšana › Pirmais pieteikums .
3. Kāda ir atšķirība starp read() un take() ?
-
read()atgriež paraugus, bet **atstāj tos lasītāja kešatmiņā**, lai vēlāki izsaukumi (vai citi lasītāji tajā pašā abonentā) varētu tos nolasīt vēlreiz. -
take()atgriež paraugus un **noņem tos** no kešatmiņas.
Izmantojiet read() , ja tēma apzīmē koplietojamo stāvokli , kuru vēlaties pārbaudīt.
atkārtoti; izmantojiet take() ja tēma apzīmē notikumus, kurus vēlaties
patērēt tieši vienu reizi.
4. Kāpēc vēlāk pievienojušies abonenti nesaņem agrākus paraugus?
Pēc noklusējuma DURABILITY ir VOLATILE , tāpēc paraugi, kas rakstīti pirms abonenta, ir
atbilstība netiek piegādāta. Lai piegādātu vēsturiskus paraugus vēlāk pievienojušajiem dalībniekiem,
konfigurējiet rakstītāju un atbilstošos lasītājus ar TRANSIENT_LOCAL
izturība (kas prasa arī RELIABLE uzticamību):
DataWriterQos qos;
writer->get_qos(qos);
qos.durability().kind = TRANSIENT_LOCAL_DURABILITY_QOS;
qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer->set_qos(qos); Lai saglabātu vērtību pēc rakstītāja restartēšanas, izmantojiet
Noturības pakalpojums jeb TRANSIENT / PERSISTENT
izturības veidi.
5. Ko dara RELIABILITY QoS?
-
BEST_EFFORT(pēc noklusējuma daudzām iebūvētajām tēmām): paraugi, kas tiek zaudēti vadā, netiek atkārtoti pārraidīti. Zemākās pieskaitāmās izmaksas. -
RELIABLE: rakstītājs izseko apstiprinājumus (ACKNACK/sirdsdarbība) no katra atbilstošā lasītāja un atkārtoti nosūta neatbildētos secības numurus, līdz
lasītājs panāk visu, vai arī vēsture ir pilna.
Uzticamība ir atkarīga no rakstītāja/lasītāja un tai jābūt saderīgai: BEST_EFFORT
Lasītājs var līdzināties RELIABLE rakstniekam, bet ne otrādi.
6. Ko dara DURABILITY QoS?
DURABILITY kontrolē, vai paraugi tiek saglabāti piegādei lasītājiem.kas apvienojas pēc parauga uzrakstīšanas:
| Laipns | Pieejams arī vēlāk pievienojušajiem? |
|---|---|
VOLATILE | Nē |
TRANSIENT_LOCAL | Jā, kamēr rakstnieks ir dzīvs |
TRANSIENT | Jā, visā rakstnieka dzīves laikā (izmantojot Persistence Service) |
PERSISTENT | Jā, visu procesu restartēšanas laikā (diskā) |
7. Kāda ir atšķirība starp HISTORY un DURABILITY ?
HISTORY ( KEEP_LAST(depth) vai KEEP_ALL ) kontrolē, cik paraugu rakstītāja/lasītāja kešatmiņa saglabājas jebkurā brīdī. DURABILITY kontrolē, vai
rakstnieks piedāvā lasītājiem paraugus, kas vēlāk atbilst viens otram. Viņi strādā kopā, bet
atrisināt dažādas problēmas: KEEP_ALL vien nepadara paraugus pieejamus
vēlīnajiem pievienotājiem.
8. Kā norādīt domēna ID?
Nododiet domēna ID kā pirmo argumentu funkcijai create_participant :
auto dp = DomainParticipantFactory::get_instance()
->create_participant(42, PARTICIPANT_QOS_DEFAULT, nullptr, 0); Dalībnieki dažādos domēnos nesazinās. DDSI-RTPS ports
formula 7400 + 250 * domain_id nosaka pamata UDP portus, kas tiek izmantoti
atklājums.
9. Kāpēc mans izdevējs un abonents neatklāj viens otru?
Biežākie cēloņi:
- Dažādi domēna ID — abiem dalībniekiem ir jāizmanto viens un tas pats ID.
- Multiraides bloķēšana — SPDP izmanto UDP multiraidi uz
239.255.0.1ko veicis
pēc noklusējuma. Pārbaudiet resursdatora ugunsmūri un pārslēdziet IGMP snooping. - Nepareiza tīkla saskarne — vairāku māju resursdatoros iestatiet
ASTUTEDDS_NETWORK_INTERFACE=vai konfigurējiet to atklāšanas JSON/XML profilā (skatiet JSON atklāšanas konfigurācija ). - Nesaderīgs QoS — skatiet 15. jautājumu.
- Dažādi transporta veidi — pārbaudiet, vai abi līdzinieki izmanto UDPv4 (vai abus UDPv6,
TCP, SHM).
Iespējojiet izsekošanas reģistrēšanu ar ASTUTEDDS_LOG_LEVEL=trace un pārbaudiet paketi
uztvert ar astutedds-inspect .
10. Kādas IDL funkcijas tiek atbalstītas?
Komplektā iekļautais astutedds-idl kompilators ievieš OMG IDL 4.2, tostarp:
- Primitīvie tipi (
boolean,octet, integer tipiint8–uint64,float/double/long double,char/wchar,string/wstring). - Struktūras, apvienojumi, uzskaitījumi, bitmaskas, tipu definīcijas.
- Ierobežotas un neierobežotas secības, masīvi, kartes.
-
@key,@id,@optional,@default,@range,@min,@max,@unit,@extensibility(FINAL|APPENDABLE|MUTABLE),@nested. - Konstantes un
modulevārdtelpas.
Ģenerētais C++ pēc noklusējuma izmanto XCDR2 ar papildu XCDR1 savietojamībai.
11. Kā filtrēt paraugus, ko esmu publicējis pats?
Divas iespējas:
- Ignorēt dalībnieka līmenī : izsaukt
dp->ignore_publication(handle)
padodot tālāk lokālā rakstītājaInstanceHandle_t. - Filtrēt lasītāja atzvanīšanas funkciju , izmantojot
SampleInfo::publication_handle
un salīdzinot to ar jūsu rakstītājaget_instance_handle().
Satura filtrēšanas tēmā var arī netikt iekļauts pašpublicēts atslēgas lauks.
12. Kādas rakstzīmes ir atļautas tēmu nosaukumos?
Tēmu nosaukumos var būt ASCII burtciparu rakstzīmes, _ un / kā
hierarhijas atdalītājs. Garumu ierobežo 256 rakstzīmes. Izvairieties no sākuma
cipari un rezervētie DDS iebūvētie prefiksi ( DCPS , dds ). Seko tipu nosaukumi.
tas pats noteikums.
13. Kā es varu noteikt, kad attālināts rakstītājs vai lasītājs pazūd?
Instalējiet DataReaderListener un ieviesiet on_subscription_matched /
on_liveliness_changed vai aptaujas reader->get_subscription_matched_status() . current_count_changelauks ir negatīvs, ja viennieks neatbilst.
Dzīvīgumu nosaka LIVELINESS QoS — komplekts
kind = AUTOMATIC_LIVELINESS_QOS ar lease_duration , lai noteiktuklusējoši līdzinieki ierobežotā laikā.
14. Kā es varu saņemt atzvanu, kad pienāk jauni dati?
Pievienojiet klausītāju ar DATA_AVAILABLE_STATUS masku:
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 gan jauniem paraugiem, gan instances dzīves ciklam izmaiņas; pirms atsauču noņemšanas vienmēr pārbaudiet SampleInfo::valid_data
parauga lietderīgā slodze.
15. Ko nozīmē "Nesaderīgs QoS"?
Rakstītājs un lasītājs sakrīt tikai tad, ja katrs pieprasījums/piedāvātais QoS ir
saderīgs:
| Politika | Pieprasīts ≤ Piedāvāts |
|---|---|
RELIABILITY | lasītājs BEST_EFFORT ≤ rakstnieks RELIABLE |
DURABILITY | lasītāja veids ≤ rakstītāja veids (specifikācijas secībā) |
DEADLINE | lasītāja period ≥ rakstītāja period |
LATENCY_BUDGET | lasītāja duration ≥ rakstītāja duration |
OWNERSHIP | jābūt vienādam ( SHARED vai EXCLUSIVE ) |
PARTITION | vismaz viena nodalījuma nosaukumam ir jāpārklājas |
Klausīties on_offered_incompatible_qos / on_requested_incompatible_qos
lai izpildes laikā atrastu precīzu politikas ID.
16. Kā nosūtīt paraugus, kas ir lielāki par UDP datagrammu?
Astute DDS automātiski fragmentē paraugus, kas ir lielāki par konfigurēto
fragment_size (pēc noklusējuma 1344 baiti IPv4) un saliek tos atpakaļ uz lasītājs, kas izmanto DDSI-RTPS DATA_FRAG apakšziņojumus. Uzticamības protokols
atgūst trūkstošos fragmentus, atkārtoti nenosūtot visu paraugu.
Ļoti lieliem paraugiem (≥ 1 MB) palieliniet OS ligzdas buferus:
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608un apsveriet iespēju pāriet uz koplietojamās atmiņas transportu lokālajiem lasītājiem.
17. Kā konfigurēt, kura tīkla saskarne tiek izmantota?
Trīs iespējas prioritārā secībā:
- Vides mainīgais:
ASTUTEDDS_NETWORK_INTERFACE=eth0. - JSON atklāšanas konfigurācija — skatiet JSON atklāšanas konfigurācija .
- XML QoS profils — skatiet DDS-XML QoS profili .
Ja nekas nav iestatīts, Astute DDS atlasa pirmo saskarni bez atgriezeniskās saites, ar
daudzadresācijas adrese.
18. Vai varu izmantot Astute DDS tīklā bez multiraides?
Jā. Divas alternatīvas:
- Unicast SPDP līdzinieku saraksts : nodrošina līdzinieku resursdatora/porta pāru sarakstu
atklāšanas konfigurācija; Astute DDS nosūta SPDP paziņojumus katram līdziniekam. - TCP transports : pārslēdz dalībnieku uz TCP RTPS transportu priekš
vides, kas pilnībā bloķē UDP. Skatīt
DDS domēna maršrutētājs izolētu tīklu šķērsošanai.
19. Kā es varu noregulēt zemu latentumu?
- Izmantojiet
RELIABLEuzticamību arKEEP_LAST(1)vēsturi abos galos, lai
atkārtotas pārraides ir minimālas. - Iespējojiet koplietotās atmiņas transportēšanu dalībniekiem, kas atrodas kopā.
- Piespraust Astute DDS pavedienus ar CPU afinitāti un izmantot reāllaika plānošanu
(SCHED_FIFO) izdevēja un abonenta procesos. - Atspējojiet Nagle, izmantojot UDP (pēc noklusējuma).
- Palieliniet ligzdas buferus (skatīt 16. jautājumu), lai absorbētu impulsu uzliesmojumus.
- Iestatiet
LATENCY_BUDGET = 0, lai atspējotu jebkādu partijveida apstrādes aizkavi.
20. Kāpēc, publicējot lielus paraugus, es redzu latentuma pieaugumus?
Kad paraugi pārsniedz operētājsistēmas noklusējuma ligzdas buferi (bieži vien 208 KB operētājsistēmā Linux),
kodols atmet paketes, un uzticamajam protokolam ir jāpārsūta atkārtoti, izraisot
tapas. Paaugstinot net.core.rmem_max / net.core.wmem_max vismaz līdz
parauga lielums atrisina šo problēmu. Apsveriet fragmentēšanu ar mazāku fragment_size
zudumradošos tīklos.
21. Kā savienot divus DDS domēnus?
Izmantojiet Astute DDS domēna maršrutētāju — pakalpojumu, kas savieno divus vai vairākus
domēnus un pārsūta konfigurētās tēmas starp tiem, ar izvēles iespēju
Atslēgu/satura filtrēšana un QoS tulkošana. Skatīt
DDS domēna maršrutētājs .
22. Kādas valodu saistīšanas ir pieejamas?
| Valoda | Statuss | Piezīmes |
|---|---|---|
| C++20 | Stabils | Primārā API — libastutedds.a |
| C | Stabils | Flat C API FFI, skatiet include/astutedds/c/astutedds.h |
| Python | Stabils | pybind11 saistījumi, CPython 3.10–3.13 |
| Rūsa | Beta versija | astutedds kaste (drošs apvalks virs C API) |
23. Kuras platformas un OS versijas tiek atbalstītas?
| Platforma | Pārbaudītas versijas |
|---|---|
| Linux | Ubuntu 22.04 / 24.04, RHEL 9 / 10, AlmaLinux 9 / 10, Debian 12 |
| Logi | Windows 10, Windows 11, Windows Server 2022 |
Linux Python riteņi ir atzīmēti ar manylinux_2_28 (glibc ≥ 2.28) un darbojas.
jebkurā saderīgā izplatījumā.
24. Kā iespējot DDS drošību?
- Nodrošināt identitātes (X.509) un atļauju (parakstīta XML) artefaktus.
- Konfigurējiet dalībnieka īpašību QoS ar autentifikāciju, piekļuves kontroli un
Kriptovalūtas spraudņa īpašības (CA sertifikāts, identitātes sertifikāts/atslēga, atļauju fails,
pārvaldības fails). - Saite uz Astute DDS, kas izveidota ar
-DASTUTEDDS_ENABLE_SECURITY=ON.
Pilnīgas instrukcijas un a skatiet sadaļā DDS drošība .
pārvaldības/atļauju veidne.
25. Kā saglabāt datus pēc restartēšanas?
Palaidiet pastāvības pakalpojumu līdzās savam domēnam. Tas abonē
konfigurētas TRANSIENT / PERSISTENT tēmas, saglabā paraugus lokālā atmiņā
datubāzē (pēc noklusējuma SQLite) un atkārtoti publicē tos vēlīnai pievienošanai
abonenti — tostarp tie, kas pievienojas pēc sākotnējā autora aiziešanas.
Skatīt Pastāvības pakalpojums .
26. Kā ierakstīt un atskaņot datplūsmu?
Izmantojiet komplektā iekļauto astutedds-record rīku, lai domēnu iekļautu
.astdb failu un astutedds-replay , lai to publicētu ar regulējamu laika mērogošana. Ierakstīšana ir tipa apzinīga un iekšēji izmanto XCDR2. Skatīt
Ierakstīšana un atskaņošana .
27. Kā es varu attīstīt datu tipu, nepārtraucot abonentu darbību?
Anotējiet IDL tipu ar @extensibility(MUTABLE) (vai APPENDABLE ) un
atzīmēt katru dalībnieku ar @id(N) . XCDR2 maināmās straumes ļauj:
- Jaunu dalībnieku pievienošana abos galos.
- Neobligāto dalībnieku noņemšana.
- Dalībnieku pārkārtošana.
Neatbilstošie dalībnieki tiek izlaisti, izmantojot X tipu piešķiramības noteikumus.
@extensibility(FINAL) bloķē izkārtojumu un ir jāizmanto, ja tiek izmantots binārs kods.Saderība ar mantotajiem XCDR1 lasītājiem ir svarīga.
28. Kā izmantot satura filtrēšanas tēmas?
Izveidojiet ContentFilteredTopic no parastas tēmas, izmantojot SQL līdzīgu filtru.
izteiksmi un piesaistīt tai 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); Filtrs tiek novērtēts rakstītāja pusē, kad tas ir iespējams, lai ietaupītu joslas platumu.
29. Kā konfigurēt QoS no XML faila?
Izmantojiet XmlQosLoader , lai nolasītu DDS-XML profilu un lietotu to izveides laikā.
entītijas:
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); Shēmu skatiet DDS-XML QoS profilos , un tie darbojās.
piemēri.
30. Kā novērst sadarbspējas vai noteikšanas problēmas?
- Palaidiet
astutedds-inspectdomēnā, lai skatītu atklātos
dalībnieki, galapunkti un atbilstības statuss reāllaikā. - Tveriet trafiku ar
tcpdump -i any -w dds.pcap 'udp port 7400 or portrange 7400-7500'un atveriet to programmā Wireshark — RTPS sadalītājā.
dekodē SPDP, SEDP un lietotāja datus. - Iespējot izsekošanas žurnālus:
ASTUTEDDS_LOG_LEVEL=trace ASTUTEDDS_LOG_FILE=/tmp/astutedds.log. - Pārbaudiet vienību ID un portus:
- SPDP rakstītājs/lasītājs:
00:01:00:c2/00:01:00:c7 - SEDP publikācija:
00:00:03:c2/00:00:03:c7 - SEDP abonements:
00:00:04:c2/00:00:04:c7 - Bāzes ports:
7400 + 250 × domain_id.
- SPDP rakstītājs/lasītājs:
- Pārliecinieties, vai abi partneri reklamē saderīgus pārdevēju ID un protokola versiju
(DDSI-RTPS 2.5).