Transports

This is just a broad overview of transports - relevant for multimaster since we are often dealing with the difficulties arising from wifi networks. Please update if you have more accurate information.

References

These are old and just useful as a starting reference.

Transport Types

Reliable

Examples: TCP, ZeroMQ.

Description: Use to absolutely make sure a client gets the packet you send it. Ideal for ros service or action style messaging where you absolutely need a message flow to not break down.

Issues: Difficult to rely on for wireless connections. {TODO} what exactly goes wrong in ros when both ends aren't guaranteed to be there?

Semi Reliable

Examples: OpenPGM

Description: Allows the receiver end to determine what to do about lost packets - resend the packet, data or just ignore. Ideal perhaps for multi-robot-device communications.

Issues: No current implementation with ros message marshalling.

Unreliable

Examples: UDP

Description: Lost packets are just thrown away and ignored. In ros, this means a whole data message gets thrown away if just one udp packet gets lost.

Issues: No current rospy implementation, no control over what to do about lost packets.

Transport Hints

{TODO}

Current Status

Desirables not in ros comms (as of fuerte):

  • An unreliable implementation for rospy (don't know about rosjava).
  • No way at the system level to specify transport type and hints - it's done in code.
    • It would be far more logical to do type and hints from the launcher, like remaps.
  • Optionally request packet or data resends when a single packet is lost (bad situation for large data messages, e.g. images, etc)
  • Optionally pick up the latest message in a queue (really important for small packet, high frequency data).
  • Quality of Service information between machines

Uncertain Desirables:

  • QoS on a connection by connection basis?
  • Multicast - is this worth pursuing if it's not guaranteed on all routers yet?

Future

<notice>It is our responsibility to ensure that when there is progress in this area we make sure we provide input</notice>

As much as I'd like to, transports is a huge job and part of the core ros - not our sphere. However it's important we remember the previous point. Unfortunately it's not likely that any of this will be available with the ros msg architecture soon, but we should be ready when it comes.

  • RosCon 2012 had a discussion on upgrading the transport systems.

    • Plans got put on hold while the build environment upgrades.
  • Darc has potential since it integrates with the ros msg system.

    • Might be able to influence it's design if it keeps moving.

Wiki: sig/Multimaster/Transports (last edited 2012-09-17 14:33:48 by DanielStonier)