SlideShare a Scribd company logo
OpenSplice DDS
                                 Delivering Performance, Openness, and Freedom



Angelo Corsaro, Ph.D.
      Chief Technology Officer


                                    DDS vs. AMQP
        OMG DDS SIG Co-Chair
angelo.corsaro@prismtech.com
Agenda


‣Genesis
‣Technology Comparison
‣Code Examples
‣Concluding Remarks
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                                  Historical
                                Perspectives
Genesis
                DDS                                         AMQP

‣ Emerged from Aerospace and Defense        ‣ Emerged from the Financial Market
 to address the data distribution            from the desire of freeing users from
 requirement of a large class of mission-    proprietary and non-interoperable
 critical systems                            messaging systems
‣ Evolved to address on-the-wire            ‣ Evolved into an effort to define a
 interoperability and provide the            generic enterprise messaging standard
 ubiquitous data-bus for mission-critical
 System-of-Systems
Standardization Organization
                DDS                                      AMQP

‣ DDS is an Object Management Group        ‣ AMQP is standardized by the AMQP
 (OMG) Standard                             Working Group
‣ The OMG is a an international, open      ‣ The AMQP Working Group is a non-
  membership, not-for-profit computer        profit organization with a free
  industry consortium since 1989            membership based on interest and
‣ OMG is an ISO PAS submitter, able to      merit
  submit our specifications directly into
  ISO’s fast-track adoption process.
Standard Evolution

DDS v1.0     DDS v1.1                 DDS v1.2     DDSI v2.0          DDSI v2.1     DDS-XTopics
Dec          Dec                      Jan          Apr                Jan           March

      2004      2005           2006         2007         2008               2009        2010


                         Jun                       Nov                       Dec

                         AMQP v0-8                 AMQP v0-9-1              AMQP v1-0 draft
                                                                ???
                   Dec
                                                                AMQP v0-10
                   AMQP v0-9
Scope of Standardization
                                                                  Application
         Application
                                                                       Object/Relational Mapping

                                                                Data Local Reconstruction Layer (DLRL)




                                                                                                         DDS v1.2
                                                                                          Content
                                                  Ownership          Durability
                                                                                        Subscription
            API (?)                                               Minimum Profile

                                                       Data Centric Publish/Subscribe (DCPS)




                                                                                                         DDSI v2.1
                                      AMQP v1-0
  Advanced Message Queuing Protocol                     Real-Time Publish/Subscribe Protocol


     Interoperability Wire Protocol                      DDS Interoperability Wire Protocol


                TCP/IP                                                UDP/IP
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                                 Technology
                                Comparison
Which Versions?



In the reminder of this presentation I’ll compare DDS v1.2 / DDSI v2.1 with AMQP v1-0
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                         Messages vs. Topics
AMQP v1-0 Messages


‣ AMQP is a standard protocol for messaging
‣ As such AMQP the unit of information that
  can be sent or received is a message.
‣ An AMQP message encapsulate the “Bare
  Message”, provided by the application, within
  an annotated message

                                                  [Source AMQP specification v1-0]
DDS Topics
                                                                                   {Circle, Square, Triangle}
Topic
‣ Unit of information exchanged between
  Publisher and Subscribers.
‣ An association between a unique name, a
  type and a QoS setting                                                     {ShapeType}                        {...}


Topic Type.
                                                                             struct ShapeType {
‣ Type describing the data associated with one                                  long   x;
  or more Topics                                                                long   y;
‣ A Topic type can have a key represented by an                                 long   shapesize;
                                                                                string color;
  arbitrary number of attributes                                             };
‣ Expressed in IDL                                                           #pragma keylist ShapeType color

                                    © 2009, PrismTech. All Rights Reserved
Topic/Instances/Samples Recap.
   Topics                                                         Instances




                 Samples



            ti     tj                                      tnow       time
                  © 2009, PrismTech. All Rights Reserved
OpenSplice DDS
Delivering Performance, Openness, and Freedom




              Node/Links vs. Reader/Writers
AMQP v1-0 Conceptual Model
‣ An AMQP Network consists of Nodes and Links
‣ A Node is a named source and/or sink of Messages. A Message is created at a
  (Producer) Node, and may travel along links, via other nodes until it reaches a
  terminating (Consumer) Node.
‣ A Link is a unidirectional route between nodes along which messages may travel. Links
  may have entry criteria (Filters) which restrict which messages may travel along them.
  The link lifetime is tied to the lifetime of the source and destination nodes.


                     m       m
                                    Link
                         m


                    Node                            Node
Destructive Links

  Destructive Links consume the message from the originating source.



     Destructive Link              Destructive Link                    Destructive Link
 m                             m          m                                               m


Node 1              Node 2 Node 1                 Node 2       Node 1                 Node 2


                                           Time
Non-Destructive Links

  Non-Destructive Links don’t consume messages from the source node.




     Non-Destructive               Non-Destructive
          Link                          Link
 m                             m          m                   m          m


Node 1            Node 2     Node 1              Node 2     Node 1     Node 2

                                          Time
Filtered Links
Links can have associated filters that allow to predicate on the messages that might
traverse. Filter can be based on the non opaque portion of the message.

                    Link                                   Link           m

                {color = red}                          {color = red}    m


  m       m                     Node                                   Node
                                                 m
  m       m
      m

 Node             Link                       Node        Link             m
              {color = green}                        {color = green}
                                                                        m

                                Node                                   Node
                                          Time
Anatomy of a DDS Application


                                                               Topic
                                                                Topic
                                                                 Topic
                                                                        Samples
                                                                         Samples
                 Instances                                                Samples
                  Instances
                   Instances
                                           1
                                               1
                                                   21 62
                                                    21 62
                                                               1
                                                                   1
                                                                       22 62
                                                                        22 62
                                                                                   1
                                                                                       1
                                                                                            23 63
                                                                                             23 63
    DataReader
    DataReader                            2        20 61      2        19 60
     DataReader
      DataReader                               2    20 61         2     19 60                                         DataWriter
                                                                                                                      DataWriter
       DataReader
        DataReader                        3        25 70      3 25 71
                                                                25                  3       25 74    3
                                                                                                         3
                                                                                                             26 77
                                                                                                              26 77
                                                                                                                       DataWriter
                                                                                                                        DataWriter
                     struct ShapeType {      3 25      70      3 25 71
                                                                  25                    3    25 74
                        long   x;
                        long   y;
                        long   shapesize;
                        string color;
                     };
                     #pragma keylist ShapeType color




Destructive/Non-Destructive Links can be paralleled with the DDS read/take semantics
                                                            © 2009, PrismTech. All Rights Reserved
Content Filtering
                                                                               X0                   X1
                                                                                    X0 <= X <= X1
‣ DDS allows to specify content-
 filtered Topics for which a subset
 of SQL92 is used to express the
 filter condition
                                                                      Y0
‣ Content filters can be applied on
 the entire content of the Topic Type                 Y0 <= Y <= Y1

‣ Content filters are applied by DDS
                                                                      Y1
 each time a new sample is
 produced/delivered

                                      © 2009, PrismTech. All Rights Reserved
Local Queries
‣ A subset of SQL92 can be used for performing queries                           X0

‣ Queries are
 performed under         Circle Topic
 user control and                                                                                 Y0
                          color     x            y             shapesize                 Y0
 provide a result that     red     57           62                50
 depends on the           blue     90           85                50
                                                                                  Y0 <= Y <= Y1
 current snapshot of     yellow    30           25                50
 the system, e.g.,
 samples currently                x > 25 AND y < 55                                      Y1
 available
                          color     x            y             shapesize
                         yellow    30           25                50


                                        © 2009, PrismTech. All Rights Reserved
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                         Deployment Model
AMQP v1-0 Deployment Model


‣ Nodes within the AMQP network
 exist within Containers
‣ A container is a physical or logical
 process to which network
 connections can be established


                                         [Source AMQP specification v1-0]
DDS Deployment Model
‣ DDS is based around the concept
  of a fully distributed Global Data
                                          Publisher                                                 Subscriber
  Space (GDS)
                                                                                Global Data Space
‣ Publishers and Subscribers can
  join and leave the GDS at any time
                                                                                                     Subscriber
‣ Publishers and Subscribers            Publisher                                   Brokers
  express their intent to produce/
  consume specific type of data,
  e.g., Topics
                                                                                                    Subscriber
‣ Data flows from Publisher to             Publisher

  Subscribers                                                                         DDS



                                       © 2009, PrismTech. All Rights Reserved
Domains and Partitions
                                              Domain


Domain
‣ A Domain is one instance of the DDS
  Global Data Space
‣ DDS entities always belong to a specific
  domain
Partition
‣ A partition is a scoping mechanism
  provided by DDS organize a domain                                                DDS
                                                                              Global Data Space
                                             Partition



                                              © 2009, PrismTech. All Rights Reserved
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                     Communication Model
Sessions

‣ A Session is a named interaction
                                      [Source AMQP specification v1-0]



  between two containers providing
  for a pair of reliable ordered
  command streams (one in each
  direction)
‣ Links between nodes in different
  containers are created on a
  session
‣ Containers and Sessions form an
  underlay network, nodes and links
  an overlay network atop them
Sessions & Commands
‣ Sessions are a transport for commands
‣ Commands are the atomic units of work of the AMQP transport protocol
  Commands are used to create links between nodes in the source and destination
  containers, to transfer message data, and to issue and revoke credit
‣ In general an AMQP session will be carried over some form of network layer, thus
  commands sent on a session are asynchronous.




                                  [Source AMQP specification v1-0]
Transport Model
                   m       m
                                         Link
                       m


                   Node                                        Node



 Links                                                                          Links
         Session                                                      Session
 Links                                                                          Links
         Session               Transport Connection (TCP/IP)          Session
 Links                                                                          Links
         Session                                                      Session
Anatomy of a DDS Application


                                                           Topic
                                                            Topic
                                                             Topic
                                                                   Samples
                                                                    Samples
              Instances                                              Samples
               Instances
                Instances
                                        1
                                            1
                                                21 62
                                                 21 62
                                                          1
                                                              1
                                                                  22 62
                                                                   22 62
                                                                               1
                                                                                   1
                                                                                        23 63
                                                                                         23 63
 DataReader
 DataReader                            2        20 61     2       19 60
  DataReader
   DataReader                               2    20 61        2    19 60                                          DataWriter
                                                                                                                  DataWriter
    DataReader
     DataReader                        3        25 70    3 25 71
                                                           25                   3       25 74    3
                                                                                                     3
                                                                                                         26 77
                                                                                                          26 77
                                                                                                                   DataWriter
                                                                                                                    DataWriter
                  struct ShapeType {      3 25      70    3 25 71
                                                             25                     3    25 74
                     long   x;
                     long   y;
                     long   shapesize;
                     string color;
                  };
                  #pragma keylist ShapeType color




                                                     © 2009, PrismTech. All Rights Reserved
Anatomy of a DDS Application

                                                                                 Topic
                                                                                  Topic
                                                                                   Topic
                                                                                          Samples
                                                                                           Samples
                                 Instances                                                  Samples
                                  Instances
                                   Instances
                                                          1
                                                              1
                                                                  21 62
                                                                   21 62
                                                                                 1
                                                                                     1
                                                                                         22 62
                                                                                          22 62
                                                                                                     1
                                                                                                         1
                                                                                                              23 63
                                                                                                               23 63
               DataReader
               DataReader                                2        20 61         2        19 60
                DataReader
                 DataReader                                   2    20 61            2     19 60                                           DataWriter
                                                                                                                                          DataWriter
                  DataReader
                   DataReader                            3        25 70        3 25 71
                                                                                 25                   3       25 74    3
                                                                                                                           3
                                                                                                                               26 77
                                                                                                                                26 77
                                                                                                                                           DataWriter
                                                                                                                                            DataWriter
                                    struct ShapeType {      3 25      70        3 25 71
                                                                                   25                     3    25 74
                                       long   x;
                                       long   y;
Arrows                                 long   shapesize;
                                       string color;
show                                };
                                    #pragma keylist ShapeType color
structural
relationship
s, not data-        Subscriber                                                                                                          Publisher
flows                                                                       Partition




                                                                   © 2009, PrismTech. All Rights Reserved
Anatomy of a DDS Application

                                                                              Topic
                                                                               Topic
                                                                                Topic
                                                                                      Samples
                                                                                       Samples
                              Instances                                                 Samples
                               Instances
                                Instances
                                                        1
                                                            1
                                                                21 62
                                                                 21 62
                                                                             1
                                                                                 1
                                                                                     22 62
                                                                                      22 62
                                                                                                  1
                                                                                                      1
                                                                                                           23 63
                                                                                                            23 63
               DataReader
               DataReader                              2        20 61        2       19 60
                DataReader
                 DataReader                                 2    20 61           2    19 60                                           DataWriter
                                                                                                                                      DataWriter
                  DataReader
                   DataReader                          3        25 70       3 25 71
                                                                              25                   3       25 74    3
                                                                                                                        3
                                                                                                                            26 77
                                                                                                                             26 77
                                                                                                                                       DataWriter
                                                                                                                                        DataWriter
                                  struct ShapeType {      3 25      70       3 25 71
                                                                                25                     3    25 74
                                     long   x;
                                     long   y;
                                     long   shapesize;
Arrows                               string color;
                                  };
show                              #pragma keylist ShapeType color
structural
relationship
s, not data-         Subscriber                                                                                                      Publisher
flows                                                                      Partition

                                                                  Domain Participant

                                                                           Domain
                                                                  © 2009, PrismTech. All Rights Reserved
Transport Model
                                                                                                            Readers
                                                                                      Writers                                           Writers




                                                                                                              Subscriber
                                                                                                Publisher



                                                                                                                            Publisher
                                Readers                                                                                                                                                         Readers
          Writers                                                Writers                                                                                         Writers                                                   Writers

                                                                                                      Domain




                                  Subscriber
                    Publisher



                                               Publisher




                                                                                                                                                                                                  Subscriber
                                                                                                                                                                                    Publisher



                                                                                                                                                                                                               Publisher
                                                                                                     Participant




                          Domain
                                                                                                                                                                                          Domain
                         Participant                                                         UDP (Unicast/MCast)
                                                                                                                                                                                         Participant




                                                            Domain                                                                                Domain
                                                           Participant                                                                           Participant




                                                    Subscriber




                                                                                                                                            Subscriber
                                                                               Subscriber




                                                                                                                                                                       Subscriber
                                                                   Publisher




                                                                                                                                                           Publisher
                        Readers                                                             Readers                        Readers                                                  Readers
                © 2009, PrismTech. All Rights Reserved
                                                                 Writers                                                                                 Writers
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                                Type System
AMQP Type System


‣ AMQP defines a type-system
  that is used to encode messages
  and controls sent as part of the
  protocol
‣ This type system can be also
  used to encode application data




                                     [Source AMQP specification v1-0]
Primitive Types



      DDS Type System
                                                                                           boolean                   long
                                                                                            octet            unsigned long
                                                                                            char               long long
                                                                                            wchar            unsigned long
                                                                                                                 long

‣ DDS supports the definition of types based on a subset of                                  short
                                                                                       unsigned short
                                                                                                                 float
                                                                                                                 double
  the IDL specification language.                                                                              long double


‣ This type system is used internally by DDS and is also  Constructed Types                    Example

  available to user for defining topic types                     enum          enum Dimension { 1D, 2D, 3D, 4D };

        Template Type                      Example
 string<length = UNBOUNDED>    string     s1;
                               string<32> s2;                                 struct Coord1D { long x;};
                                                                              struct Coord2D { long x; long y; };
 wstring<length = UNBOUNDED>   wstring     ws1;
                                                                  struct      struct Coord3D { long x; long y; long
                               wstring<64> ws2;
                                                                              z; };
                                                                              struct Coord4D { long x; long y; long z,
                                                                                               unsigned long long t;};
sequence<T,length = UNBOUNDED> sequence<octet>       oseq;
                               sequence<octet, 1024> oseq1k;

                               sequence<MyType>     mtseq;                    union Coord switch (Dimension) {
                               sequence<MyType, 10> mtseq10;                     case 1D:
                                                                                    Coord1D c1d;
                                                                                 case 2D:
                                                                                    Coord2D c2d;
                                                                  union
                                                                                 case 3D:
                                                                                    Coord3D c3d;
     fixed<digits,scale>       fixed<5,2> fp; //d1d2d3.d4d5                      case 4D:
                                                                                    Coord4D c4d;
                                                                              };
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                        Putting it all Together
DDS                                               AMQP

‣ A generic DDS application is a self-formed       ‣ A generic AMQP application is a graph of
    federation reads and writes topics over the        nodes connected by links over which travel
    Global Data Space                                  application provided messages
‣ Communication is hidden to the applications      ‣   The link-related traffic is managed by
    which is provided with a read/write sematics       sessions which in turns communicate via a
                                                       transport connection.
‣   UDP Unicast and Multicast are available for
    DDS v1.2, DDSI v2.1                            ‣   The only transport currently available for
                                                       AMQP v1-0 is TCP
AMQP v1-0 StatusDDS                                                         AMQP

                                                        ‣ Addressing Scheme. Does not define a standard
‣ Data Centricity. DDS is about data and it is fair         global addressing scheme, this will be part of v1-1
    to say that data takes life in DDS, thanks to the   ‣   Transport Protocol. Currently only supports
    support for keys, lifecycle management, etc.            TCP, but UDP and SCTP will be added in future
‣   Transport Protocol. Currently supports UDP              revisions of the spec
    (Unicast and Multicast). TCP will be supported in   ‣   Broker Management. A SIG is working on
    upcoming revisions of the standard. However,            defining an API for Broker Management, today,
    there is nothing that prevents DDS today to use         each implementation has its own way
    TCP as a transport                                  ‣   Topology Configuration. The Broker topology
‣   Topology Configuration. Topology is dynamically          can be configured via management tools, yet the
    discovered by DDS via its standard discovery            spec does not explicitly supports automatic
    protocol                                                propagation of queue subscriptions (some
                                                            product do)
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                             Code Examples
Setting-up Subscriptions
                     DDS                                                        AMQP
                                                             std::string exchange = "amq.topic";

 dds::Topic<Track> track("TrackTopic");                      // Connect to the broker
 dds::Topic<TrackClass> track_class("TrackClassTopic");      Connection connection;
                                                             connection.open(host, port);
 dds::DataReader<Track> tDR(track);
 dds::DataReader<TrackClass> tcDR(track_class);              // Create a session
                                                             Session session = connection.newSession();

                                                             // Decrlare a queue
                                                             session.queueDeclare(arg::queue=queue,
                                                                                  arg::exclusive=true,
                                                                                  arg::autoDelete=true);

struct Track {               struct TrackClass {             // Set-up routes
   short id;                    short id;                    session.exchangeBind(arg::exchange=exchange,
   long x;                      Classification cls;                               arg::queue="Track",
   long y;                      string descr;                                     arg::bindingKey="Track.#");
};                           };                              session.exchangeBind(arg::exchange=exchange,
#pragma keylist Track id     #pragma keylist TrackClass id                        arg::queue="TrackClass",
                                                                                  arg::bindingKey="TrackClass.#");
Writing Data
                    DDS                                                      AMQP
dds::DataWriter<Track> tDW(track);                 Track t = { 101, 140, 200 };
dds::DataWriter<TrackClass> tcDW(track_class);     Message message;

Track t = { 101, 140, 200 };                       message.getDeliveryProperties().setRoutingKey("Track.Radar101");
tDW(t);
                                                   std::stringstream message_data;
TrackClass tc = { 101, FRIENDLY, “Some descr.”};   data << t.id << “ “ << t.x << “ “ << t.y;
tcDW.write(tc);
                                                   message.setData(message_data.str());
                                                   async(session).messageTransfer(arg::content=message,
                                                                                  arg::destination="amq.topic");
Reading Data
                    DDS                                   AMQP

std::vector<Track> data;        void Listener::received(Message& message) {
std::vector<SampleInfo> info;      std::string data = message.getData();
                                   Track t;
tDR.read(data, info);              // Parse the string to extract the data
                                   string_to_track(data, t);
                                }
OpenSplice DDS
Delivering Performance, Openness, and Freedom




                               Summing Up
Concluding Remarks
                  DDS                                               AMQP


‣ DDS provides the abstraction of a Global        ‣ AMQP is provides as basic abstraction that
  Data Space, a ubiquitous, universal and fully     of messages and message routing.
  distributed data cache.                         ‣ AMQP standardized the wire-protocol and
‣ DDS makes user data a first class citizen          uses this standard to achieve API
‣ DDS provides a standard API as well as an         independence
  interoperable Wire-Protocol

DDS and AMQP are very interesting technologies, which at some point might work in synergy.
OpenSplice DDS could be using AMQP as one of its wire-protocols. The DDS API over AMQP could be
standardize...
Online Resources

 http://www.opensplice.com/
                                                                                  http://www.slideshare.net/angelo.corsaro
 emailto:opensplicedds@prismtech.com




 http://bit.ly/1Sreg                                                              http://twitter.com/acorsaro/




                                                                                  http://opensplice.blogspot.com
 http://www.youtube.com/OpenSpliceTube


                                         © 2009, PrismTech. All Rights Reserved

More Related Content

PPTX
IPv6
PPTX
Physical layer OSI Model & Transmission Media
PPTX
Application layer protocols
PDF
Route Redistribution
PDF
La sécurité du Cloud Computing
DOCX
Frame relay
PPT
Protocol for QoS Support Chapter 18
IPv6
Physical layer OSI Model & Transmission Media
Application layer protocols
Route Redistribution
La sécurité du Cloud Computing
Frame relay
Protocol for QoS Support Chapter 18

What's hot (20)

PPTX
Computer networking
PPTX
VLAN Trunking Protocol (VTP)
PPT
IEEE Standards
PPTX
MSTP High Level Overview
PPTX
6lowpan 110828234426-phpapp01
PPTX
Las 7 Capas OSI, SWITCH, ROUTER, ADAPTADOR NIC,
PPTX
Spanning tree protocol
PPTX
Internet connectivity
PPTX
Carrier Sense Multiple Access (CSMA)
PPTX
Frame relay
PPTX
IP Multicasting
PPT
Internet standard routing protocols
PDF
Linked list
PDF
3 - Redes de Comutadores - ethernet wifi
PDF
802.15.5 mesh topology
PPTX
4G / LTE Small cells deployment & challenges
PPT
SMTP – Simple Mail Transfer Protocol | Explained for Beginners
PDF
FortiGate Firewall HOW-TO - DMZ
PPTX
Data communication and networks by B. Forouzan
Computer networking
VLAN Trunking Protocol (VTP)
IEEE Standards
MSTP High Level Overview
6lowpan 110828234426-phpapp01
Las 7 Capas OSI, SWITCH, ROUTER, ADAPTADOR NIC,
Spanning tree protocol
Internet connectivity
Carrier Sense Multiple Access (CSMA)
Frame relay
IP Multicasting
Internet standard routing protocols
Linked list
3 - Redes de Comutadores - ethernet wifi
802.15.5 mesh topology
4G / LTE Small cells deployment & challenges
SMTP – Simple Mail Transfer Protocol | Explained for Beginners
FortiGate Firewall HOW-TO - DMZ
Data communication and networks by B. Forouzan
Ad

Viewers also liked (20)

PDF
DDS and OPC UA Explained
PDF
The DDS Tutorial - Part I
PDF
DDS In Action Part II
PDF
DDS in Action -- Part I
PDF
Building the Internet of Things
PPTX
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
PDF
Visita granada 3er ciclo 2016
PDF
ikd312-03-design
ODP
2009 Eclipse Con
PPS
Simplethings
PPTX
CBI Presentation March 2011
PPTX
Errenazimenduko pintura. Leonardo.ppt
PDF
Kamloops.#2.nov.2012
PDF
Don’t let Your Website Spread Malware – a New Approach to Web App Security
PDF
Baile alumnado 2º ciclo 2013
PDF
Building Distributed Systems in Scala with OpenSplice DDS
PDF
Reviving keynes animal spirits for your business
PDF
Iasb Expert Advisory Panel October 2008
PPT
Inside a Computer
PDF
Plan estratgicoparalaspersonasconte aysusfamilias (1)
DDS and OPC UA Explained
The DDS Tutorial - Part I
DDS In Action Part II
DDS in Action -- Part I
Building the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Visita granada 3er ciclo 2016
ikd312-03-design
2009 Eclipse Con
Simplethings
CBI Presentation March 2011
Errenazimenduko pintura. Leonardo.ppt
Kamloops.#2.nov.2012
Don’t let Your Website Spread Malware – a New Approach to Web App Security
Baile alumnado 2º ciclo 2013
Building Distributed Systems in Scala with OpenSplice DDS
Reviving keynes animal spirits for your business
Iasb Expert Advisory Panel October 2008
Inside a Computer
Plan estratgicoparalaspersonasconte aysusfamilias (1)
Ad

Similar to DDS vs AMQP (20)

PDF
UML Profile for DDS
PDF
DDS QoS Unleashed
PDF
Getting Started with OpenSplice DDS Community Ed.
PDF
OMG Data-Distribution Service (DDS) Tutorial - 2009
PDF
Standardizing the Data Distribution Service (DDS) API for Modern C++
PPTX
OpenStack and OpenFlow Demos
PPTX
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
PDF
Distributed Algorithms with DDS
PPTX
Fiware - communicating with ROS robots using Fast RTPS
PPTX
Distributed Systems: How to connect your real-time applications
PDF
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
PPTX
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
PDF
Stream Processing with DDS and CEP
PPT
PPT
PDF
What's the Right Messaging Standard for the IoT?
PDF
Timothy Spann: Apache Pulsar for ML
PDF
JConf.dev 2022 - Apache Pulsar Development 101 with Java
PDF
Communication Patterns Using Data-Centric Publish/Subscribe
PDF
Communication Patterns Using Data-Centric Publish/Subscribe
UML Profile for DDS
DDS QoS Unleashed
Getting Started with OpenSplice DDS Community Ed.
OMG Data-Distribution Service (DDS) Tutorial - 2009
Standardizing the Data Distribution Service (DDS) API for Modern C++
OpenStack and OpenFlow Demos
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
Distributed Algorithms with DDS
Fiware - communicating with ROS robots using Fast RTPS
Distributed Systems: How to connect your real-time applications
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
Stream Processing with DDS and CEP
What's the Right Messaging Standard for the IoT?
Timothy Spann: Apache Pulsar for ML
JConf.dev 2022 - Apache Pulsar Development 101 with Java
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe

More from Angelo Corsaro (20)

PDF
Zenoh: The Genesis
PDF
zenoh: The Edge Data Fabric
PDF
Zenoh Tutorial
PDF
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
PDF
zenoh: zero overhead pub/sub store/query compute
PDF
zenoh -- the ZEro Network OverHead protocol
PDF
zenoh -- the ZEro Network OverHead protocol
PDF
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
PDF
Eastern Sicily
PDF
fog05: The Fog Computing Infrastructure
PDF
Cyclone DDS: Sharing Data in the IoT Age
PDF
fog05: The Fog Computing Platform
PDF
Programming in Scala - Lecture Four
PDF
Programming in Scala - Lecture Three
PDF
Programming in Scala - Lecture Two
PDF
Programming in Scala - Lecture One
PDF
Data Sharing in Extremely Resource Constrained Envionrments
PDF
The DDS Security Standard
PDF
The Data Distribution Service
PDF
RUSTing -- Partially Ordered Rust Programming Ruminations
Zenoh: The Genesis
zenoh: The Edge Data Fabric
Zenoh Tutorial
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
zenoh: zero overhead pub/sub store/query compute
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Eastern Sicily
fog05: The Fog Computing Infrastructure
Cyclone DDS: Sharing Data in the IoT Age
fog05: The Fog Computing Platform
Programming in Scala - Lecture Four
Programming in Scala - Lecture Three
Programming in Scala - Lecture Two
Programming in Scala - Lecture One
Data Sharing in Extremely Resource Constrained Envionrments
The DDS Security Standard
The Data Distribution Service
RUSTing -- Partially Ordered Rust Programming Ruminations

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Cloud computing and distributed systems.
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Approach and Philosophy of On baking technology
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Electronic commerce courselecture one. Pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PPTX
Big Data Technologies - Introduction.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Empathic Computing: Creating Shared Understanding
The AUB Centre for AI in Media Proposal.docx
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Monthly Chronicles - July 2025
Cloud computing and distributed systems.
Per capita expenditure prediction using model stacking based on satellite ima...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Approach and Philosophy of On baking technology
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Electronic commerce courselecture one. Pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology
Big Data Technologies - Introduction.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”

DDS vs AMQP

  • 1. OpenSplice DDS Delivering Performance, Openness, and Freedom Angelo Corsaro, Ph.D. Chief Technology Officer DDS vs. AMQP OMG DDS SIG Co-Chair angelo.corsaro@prismtech.com
  • 3. OpenSplice DDS Delivering Performance, Openness, and Freedom Historical Perspectives
  • 4. Genesis DDS AMQP ‣ Emerged from Aerospace and Defense ‣ Emerged from the Financial Market to address the data distribution from the desire of freeing users from requirement of a large class of mission- proprietary and non-interoperable critical systems messaging systems ‣ Evolved to address on-the-wire ‣ Evolved into an effort to define a interoperability and provide the generic enterprise messaging standard ubiquitous data-bus for mission-critical System-of-Systems
  • 5. Standardization Organization DDS AMQP ‣ DDS is an Object Management Group ‣ AMQP is standardized by the AMQP (OMG) Standard Working Group ‣ The OMG is a an international, open ‣ The AMQP Working Group is a non- membership, not-for-profit computer profit organization with a free industry consortium since 1989 membership based on interest and ‣ OMG is an ISO PAS submitter, able to merit submit our specifications directly into ISO’s fast-track adoption process.
  • 6. Standard Evolution DDS v1.0 DDS v1.1 DDS v1.2 DDSI v2.0 DDSI v2.1 DDS-XTopics Dec Dec Jan Apr Jan March 2004 2005 2006 2007 2008 2009 2010 Jun Nov Dec AMQP v0-8 AMQP v0-9-1 AMQP v1-0 draft ??? Dec AMQP v0-10 AMQP v0-9
  • 7. Scope of Standardization Application Application Object/Relational Mapping Data Local Reconstruction Layer (DLRL) DDS v1.2 Content Ownership Durability Subscription API (?) Minimum Profile Data Centric Publish/Subscribe (DCPS) DDSI v2.1 AMQP v1-0 Advanced Message Queuing Protocol Real-Time Publish/Subscribe Protocol Interoperability Wire Protocol DDS Interoperability Wire Protocol TCP/IP UDP/IP
  • 8. OpenSplice DDS Delivering Performance, Openness, and Freedom Technology Comparison
  • 9. Which Versions? In the reminder of this presentation I’ll compare DDS v1.2 / DDSI v2.1 with AMQP v1-0
  • 10. OpenSplice DDS Delivering Performance, Openness, and Freedom Messages vs. Topics
  • 11. AMQP v1-0 Messages ‣ AMQP is a standard protocol for messaging ‣ As such AMQP the unit of information that can be sent or received is a message. ‣ An AMQP message encapsulate the “Bare Message”, provided by the application, within an annotated message [Source AMQP specification v1-0]
  • 12. DDS Topics {Circle, Square, Triangle} Topic ‣ Unit of information exchanged between Publisher and Subscribers. ‣ An association between a unique name, a type and a QoS setting {ShapeType} {...} Topic Type. struct ShapeType { ‣ Type describing the data associated with one long x; or more Topics long y; ‣ A Topic type can have a key represented by an long shapesize; string color; arbitrary number of attributes }; ‣ Expressed in IDL #pragma keylist ShapeType color © 2009, PrismTech. All Rights Reserved
  • 13. Topic/Instances/Samples Recap. Topics Instances Samples ti tj tnow time © 2009, PrismTech. All Rights Reserved
  • 14. OpenSplice DDS Delivering Performance, Openness, and Freedom Node/Links vs. Reader/Writers
  • 15. AMQP v1-0 Conceptual Model ‣ An AMQP Network consists of Nodes and Links ‣ A Node is a named source and/or sink of Messages. A Message is created at a (Producer) Node, and may travel along links, via other nodes until it reaches a terminating (Consumer) Node. ‣ A Link is a unidirectional route between nodes along which messages may travel. Links may have entry criteria (Filters) which restrict which messages may travel along them. The link lifetime is tied to the lifetime of the source and destination nodes. m m Link m Node Node
  • 16. Destructive Links Destructive Links consume the message from the originating source. Destructive Link Destructive Link Destructive Link m m m m Node 1 Node 2 Node 1 Node 2 Node 1 Node 2 Time
  • 17. Non-Destructive Links Non-Destructive Links don’t consume messages from the source node. Non-Destructive Non-Destructive Link Link m m m m m Node 1 Node 2 Node 1 Node 2 Node 1 Node 2 Time
  • 18. Filtered Links Links can have associated filters that allow to predicate on the messages that might traverse. Filter can be based on the non opaque portion of the message. Link Link m {color = red} {color = red} m m m Node Node m m m m Node Link Node Link m {color = green} {color = green} m Node Node Time
  • 19. Anatomy of a DDS Application Topic Topic Topic Samples Samples Instances Samples Instances Instances 1 1 21 62 21 62 1 1 22 62 22 62 1 1 23 63 23 63 DataReader DataReader 2 20 61 2 19 60 DataReader DataReader 2 20 61 2 19 60 DataWriter DataWriter DataReader DataReader 3 25 70 3 25 71 25 3 25 74 3 3 26 77 26 77 DataWriter DataWriter struct ShapeType { 3 25 70 3 25 71 25 3 25 74 long x; long y; long shapesize; string color; }; #pragma keylist ShapeType color Destructive/Non-Destructive Links can be paralleled with the DDS read/take semantics © 2009, PrismTech. All Rights Reserved
  • 20. Content Filtering X0 X1 X0 <= X <= X1 ‣ DDS allows to specify content- filtered Topics for which a subset of SQL92 is used to express the filter condition Y0 ‣ Content filters can be applied on the entire content of the Topic Type Y0 <= Y <= Y1 ‣ Content filters are applied by DDS Y1 each time a new sample is produced/delivered © 2009, PrismTech. All Rights Reserved
  • 21. Local Queries ‣ A subset of SQL92 can be used for performing queries X0 ‣ Queries are performed under Circle Topic user control and Y0 color x y shapesize Y0 provide a result that red 57 62 50 depends on the blue 90 85 50 Y0 <= Y <= Y1 current snapshot of yellow 30 25 50 the system, e.g., samples currently x > 25 AND y < 55 Y1 available color x y shapesize yellow 30 25 50 © 2009, PrismTech. All Rights Reserved
  • 22. OpenSplice DDS Delivering Performance, Openness, and Freedom Deployment Model
  • 23. AMQP v1-0 Deployment Model ‣ Nodes within the AMQP network exist within Containers ‣ A container is a physical or logical process to which network connections can be established [Source AMQP specification v1-0]
  • 24. DDS Deployment Model ‣ DDS is based around the concept of a fully distributed Global Data Publisher Subscriber Space (GDS) Global Data Space ‣ Publishers and Subscribers can join and leave the GDS at any time Subscriber ‣ Publishers and Subscribers Publisher Brokers express their intent to produce/ consume specific type of data, e.g., Topics Subscriber ‣ Data flows from Publisher to Publisher Subscribers DDS © 2009, PrismTech. All Rights Reserved
  • 25. Domains and Partitions Domain Domain ‣ A Domain is one instance of the DDS Global Data Space ‣ DDS entities always belong to a specific domain Partition ‣ A partition is a scoping mechanism provided by DDS organize a domain DDS Global Data Space Partition © 2009, PrismTech. All Rights Reserved
  • 26. OpenSplice DDS Delivering Performance, Openness, and Freedom Communication Model
  • 27. Sessions ‣ A Session is a named interaction [Source AMQP specification v1-0] between two containers providing for a pair of reliable ordered command streams (one in each direction) ‣ Links between nodes in different containers are created on a session ‣ Containers and Sessions form an underlay network, nodes and links an overlay network atop them
  • 28. Sessions & Commands ‣ Sessions are a transport for commands ‣ Commands are the atomic units of work of the AMQP transport protocol Commands are used to create links between nodes in the source and destination containers, to transfer message data, and to issue and revoke credit ‣ In general an AMQP session will be carried over some form of network layer, thus commands sent on a session are asynchronous. [Source AMQP specification v1-0]
  • 29. Transport Model m m Link m Node Node Links Links Session Session Links Links Session Transport Connection (TCP/IP) Session Links Links Session Session
  • 30. Anatomy of a DDS Application Topic Topic Topic Samples Samples Instances Samples Instances Instances 1 1 21 62 21 62 1 1 22 62 22 62 1 1 23 63 23 63 DataReader DataReader 2 20 61 2 19 60 DataReader DataReader 2 20 61 2 19 60 DataWriter DataWriter DataReader DataReader 3 25 70 3 25 71 25 3 25 74 3 3 26 77 26 77 DataWriter DataWriter struct ShapeType { 3 25 70 3 25 71 25 3 25 74 long x; long y; long shapesize; string color; }; #pragma keylist ShapeType color © 2009, PrismTech. All Rights Reserved
  • 31. Anatomy of a DDS Application Topic Topic Topic Samples Samples Instances Samples Instances Instances 1 1 21 62 21 62 1 1 22 62 22 62 1 1 23 63 23 63 DataReader DataReader 2 20 61 2 19 60 DataReader DataReader 2 20 61 2 19 60 DataWriter DataWriter DataReader DataReader 3 25 70 3 25 71 25 3 25 74 3 3 26 77 26 77 DataWriter DataWriter struct ShapeType { 3 25 70 3 25 71 25 3 25 74 long x; long y; Arrows long shapesize; string color; show }; #pragma keylist ShapeType color structural relationship s, not data- Subscriber Publisher flows Partition © 2009, PrismTech. All Rights Reserved
  • 32. Anatomy of a DDS Application Topic Topic Topic Samples Samples Instances Samples Instances Instances 1 1 21 62 21 62 1 1 22 62 22 62 1 1 23 63 23 63 DataReader DataReader 2 20 61 2 19 60 DataReader DataReader 2 20 61 2 19 60 DataWriter DataWriter DataReader DataReader 3 25 70 3 25 71 25 3 25 74 3 3 26 77 26 77 DataWriter DataWriter struct ShapeType { 3 25 70 3 25 71 25 3 25 74 long x; long y; long shapesize; Arrows string color; }; show #pragma keylist ShapeType color structural relationship s, not data- Subscriber Publisher flows Partition Domain Participant Domain © 2009, PrismTech. All Rights Reserved
  • 33. Transport Model Readers Writers Writers Subscriber Publisher Publisher Readers Readers Writers Writers Writers Writers Domain Subscriber Publisher Publisher Subscriber Publisher Publisher Participant Domain Domain Participant UDP (Unicast/MCast) Participant Domain Domain Participant Participant Subscriber Subscriber Subscriber Subscriber Publisher Publisher Readers Readers Readers Readers © 2009, PrismTech. All Rights Reserved Writers Writers
  • 34. OpenSplice DDS Delivering Performance, Openness, and Freedom Type System
  • 35. AMQP Type System ‣ AMQP defines a type-system that is used to encode messages and controls sent as part of the protocol ‣ This type system can be also used to encode application data [Source AMQP specification v1-0]
  • 36. Primitive Types DDS Type System boolean long octet unsigned long char long long wchar unsigned long long ‣ DDS supports the definition of types based on a subset of short unsigned short float double the IDL specification language. long double ‣ This type system is used internally by DDS and is also Constructed Types Example available to user for defining topic types enum enum Dimension { 1D, 2D, 3D, 4D }; Template Type Example string<length = UNBOUNDED> string s1; string<32> s2; struct Coord1D { long x;}; struct Coord2D { long x; long y; }; wstring<length = UNBOUNDED> wstring ws1; struct struct Coord3D { long x; long y; long wstring<64> ws2; z; }; struct Coord4D { long x; long y; long z, unsigned long long t;}; sequence<T,length = UNBOUNDED> sequence<octet> oseq; sequence<octet, 1024> oseq1k; sequence<MyType> mtseq; union Coord switch (Dimension) { sequence<MyType, 10> mtseq10; case 1D: Coord1D c1d; case 2D: Coord2D c2d; union case 3D: Coord3D c3d; fixed<digits,scale> fixed<5,2> fp; //d1d2d3.d4d5 case 4D: Coord4D c4d; };
  • 37. OpenSplice DDS Delivering Performance, Openness, and Freedom Putting it all Together
  • 38. DDS AMQP ‣ A generic DDS application is a self-formed ‣ A generic AMQP application is a graph of federation reads and writes topics over the nodes connected by links over which travel Global Data Space application provided messages ‣ Communication is hidden to the applications ‣ The link-related traffic is managed by which is provided with a read/write sematics sessions which in turns communicate via a transport connection. ‣ UDP Unicast and Multicast are available for DDS v1.2, DDSI v2.1 ‣ The only transport currently available for AMQP v1-0 is TCP
  • 39. AMQP v1-0 StatusDDS AMQP ‣ Addressing Scheme. Does not define a standard ‣ Data Centricity. DDS is about data and it is fair global addressing scheme, this will be part of v1-1 to say that data takes life in DDS, thanks to the ‣ Transport Protocol. Currently only supports support for keys, lifecycle management, etc. TCP, but UDP and SCTP will be added in future ‣ Transport Protocol. Currently supports UDP revisions of the spec (Unicast and Multicast). TCP will be supported in ‣ Broker Management. A SIG is working on upcoming revisions of the standard. However, defining an API for Broker Management, today, there is nothing that prevents DDS today to use each implementation has its own way TCP as a transport ‣ Topology Configuration. The Broker topology ‣ Topology Configuration. Topology is dynamically can be configured via management tools, yet the discovered by DDS via its standard discovery spec does not explicitly supports automatic protocol propagation of queue subscriptions (some product do)
  • 40. OpenSplice DDS Delivering Performance, Openness, and Freedom Code Examples
  • 41. Setting-up Subscriptions DDS AMQP std::string exchange = "amq.topic"; dds::Topic<Track> track("TrackTopic"); // Connect to the broker dds::Topic<TrackClass> track_class("TrackClassTopic"); Connection connection; connection.open(host, port); dds::DataReader<Track> tDR(track); dds::DataReader<TrackClass> tcDR(track_class); // Create a session Session session = connection.newSession(); // Decrlare a queue session.queueDeclare(arg::queue=queue, arg::exclusive=true, arg::autoDelete=true); struct Track { struct TrackClass { // Set-up routes short id; short id; session.exchangeBind(arg::exchange=exchange, long x; Classification cls; arg::queue="Track", long y; string descr; arg::bindingKey="Track.#"); }; }; session.exchangeBind(arg::exchange=exchange, #pragma keylist Track id #pragma keylist TrackClass id arg::queue="TrackClass", arg::bindingKey="TrackClass.#");
  • 42. Writing Data DDS AMQP dds::DataWriter<Track> tDW(track); Track t = { 101, 140, 200 }; dds::DataWriter<TrackClass> tcDW(track_class); Message message; Track t = { 101, 140, 200 }; message.getDeliveryProperties().setRoutingKey("Track.Radar101"); tDW(t); std::stringstream message_data; TrackClass tc = { 101, FRIENDLY, “Some descr.”}; data << t.id << “ “ << t.x << “ “ << t.y; tcDW.write(tc); message.setData(message_data.str()); async(session).messageTransfer(arg::content=message, arg::destination="amq.topic");
  • 43. Reading Data DDS AMQP std::vector<Track> data; void Listener::received(Message& message) { std::vector<SampleInfo> info; std::string data = message.getData(); Track t; tDR.read(data, info); // Parse the string to extract the data string_to_track(data, t); }
  • 44. OpenSplice DDS Delivering Performance, Openness, and Freedom Summing Up
  • 45. Concluding Remarks DDS AMQP ‣ DDS provides the abstraction of a Global ‣ AMQP is provides as basic abstraction that Data Space, a ubiquitous, universal and fully of messages and message routing. distributed data cache. ‣ AMQP standardized the wire-protocol and ‣ DDS makes user data a first class citizen uses this standard to achieve API ‣ DDS provides a standard API as well as an independence interoperable Wire-Protocol DDS and AMQP are very interesting technologies, which at some point might work in synergy. OpenSplice DDS could be using AMQP as one of its wire-protocols. The DDS API over AMQP could be standardize...
  • 46. Online Resources http://www.opensplice.com/ http://www.slideshare.net/angelo.corsaro emailto:opensplicedds@prismtech.com http://bit.ly/1Sreg http://twitter.com/acorsaro/ http://opensplice.blogspot.com http://www.youtube.com/OpenSpliceTube © 2009, PrismTech. All Rights Reserved