Difference between revisions of "Ivy"

From PaparazziUAV
Jump to navigation Jump to search
Line 1: Line 1:
Ivy is a [https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern Publish-Subscribe (or pub/sub)] bus used in Paparazzi to link the different components of the ground network together.  See [[Overview#System_Architecture System Architecture]] and [[DevGuide/Server_GCS_com]] for a general overview of its role in the Paparazzi UAS.
Ivy is a [https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern Publish-Subscribe (or pub/sub)] bus used in Paparazzi to link the different components of the ground network together.  See [[Overview#System_Architecture|System Architecture]] and [[DevGuide/Server_GCS_com]] for a general overview of its role in the Paparazzi UAS.


Ivy is text-based (ASCII) and features [https://en.wikipedia.org/wiki/Regular_expression regular expression] based message subscription.  Ivy agents (software applications) announce their presence on the local network by UDP broadcast and share subscriptions.  Messages are communicated thereafter via TCP sockets.  While the traffic is TCP, the use of UDP broadcast requires that peers reside within the same network subnet.
Ivy is text-based (ASCII) and features [https://en.wikipedia.org/wiki/Regular_expression regular expression] based message subscription.  Software applications employing Ivy announce their presence on the local network by UDP broadcast and share subscriptions.  All messages are communicated thereafter via direct TCP connections.  While the traffic is TCP, the use of UDP protocol for broadcast announcements requires that peers reside within the same network subnet.


Paparazzi software applications default to binding to locahost and thus will not communicate with peers residing elsewhere on the local area network.  Most paparazzi components can be directed to bind to a local network interface thereby permitting LAN communication with peers by simply supplying a bus designation commandline argument shown below.  These can be saved in a Paparazzi Center session for persistence.
Paparazzi software applications default to binding to locahost and thus unable to communicate with peers residing elsewhere on the local area network.  Ivy and subsequently the paparazzi software applications can be directed to bind to a local network interface instead, thereby permitting LAN communication with peers by simply supplying a bus designation command-line argument shown below.  These can be saved in a Paparazzi Center session for persistence.


Including the libivy headers and library and using a predefined set of messages, it is possible for any software component to take part in communication in a Paparazzi biotope.  Ivy, the protocol itself is developed independently of the Paparazzi project and can be obtained along with examples and documentation from http://www.tls.cena.fr/products/ivy/ .
Including the libivy headers and library and using a predefined set of messages, it is possible for any software component to take part in communication in a Paparazzi biotope.  Ivy, the protocol itself is developed independently of the Paparazzi project and can be obtained along with examples and documentation from http://www.tls.cena.fr/products/ivy/ .
Line 15: Line 15:
Examples:
Examples:


192.168.0.0/24 (192.168.0.x network) UDP/2010  
192.168.0.0/24 (192.168.0.x network) UDP/2010; The following are all valid:
 
The following are all valid:


  program -b 192.168.0.255
  program -b 192.168.0.255
Line 24: Line 22:
  program -b 192.168.0:2010
  program -b 192.168.0:2010


10.0.0.0/8 (10.x.x.x or 10.255.255.255)
10.0.0.0/8 (10.x.x.x or 10.255.255.255); The following are all valid:


  program -b 10
  program -b 10

Revision as of 17:47, 28 July 2015

Ivy is a Publish-Subscribe (or pub/sub) bus used in Paparazzi to link the different components of the ground network together. See System Architecture and DevGuide/Server_GCS_com for a general overview of its role in the Paparazzi UAS.

Ivy is text-based (ASCII) and features regular expression based message subscription. Software applications employing Ivy announce their presence on the local network by UDP broadcast and share subscriptions. All messages are communicated thereafter via direct TCP connections. While the traffic is TCP, the use of UDP protocol for broadcast announcements requires that peers reside within the same network subnet.

Paparazzi software applications default to binding to locahost and thus unable to communicate with peers residing elsewhere on the local area network. Ivy and subsequently the paparazzi software applications can be directed to bind to a local network interface instead, thereby permitting LAN communication with peers by simply supplying a bus designation command-line argument shown below. These can be saved in a Paparazzi Center session for persistence.

Including the libivy headers and library and using a predefined set of messages, it is possible for any software component to take part in communication in a Paparazzi biotope. Ivy, the protocol itself is developed independently of the Paparazzi project and can be obtained along with examples and documentation from http://www.tls.cena.fr/products/ivy/ .

Ivy Networks

Binding Ivy Networks

Ivy defaults to UDP port 2010 if a port is not specified. Port is specified by :PORTNUMBER suffix on network.

Examples:

192.168.0.0/24 (192.168.0.x network) UDP/2010; The following are all valid:

program -b 192.168.0.255
program -b 192.168.0.255:2010
program -b 192.168.0
program -b 192.168.0:2010

10.0.0.0/8 (10.x.x.x or 10.255.255.255); The following are all valid:

program -b 10
program -b 10:2010
program -b 10.255.255.255
program -b 10.255.255.255:2010

Extending Ivy Networks

Ivy requires that all peers in the network reside within the same local area network (it does not support routing). This can be solved by two different approaches.

1) Virtual Private Network (VPN)

By employing a standard IP VPN, remote hosts may communicate within the Ivy network permitting the VPN configuration is BRIDGED and not ROUTED. Many (routed) VPN configurations provide a network subnet for VPN clients and then route the traffic to the remote network. While this is approach is inline with best practices for IT systems, it does not permit Ivy to operate.

2) Ivy Bridging

-- looking for more information

Tools

Ivyprobe

Ivyprobe is a command-line tool for sending and receiving messages on the Ivy bus. This tool is useful for monitoring and troubleshooting an Ivy bus in the same way an Ivy client would behave, with custom regexp match filters.

Run it with the -h option to display the help:

$ ivyprobe -h

E.g. to simply display all messages:

$ ivyprobe '(.*)'