4. Cloud configuration

Hint

If you don’t have two PCs at your hand or if you are just not interested in inter-machine-communication, just skip this topic. It is not essential for the next tutorials to use cloud communication.

Of course, you can use a virtual machine (e.g. with VMWare or VirtualBox) as second PC. Just add a host-only adapter to your VM.

Quite often you want data to flow between eCAL nodes on different machines. eCAL can run in two modes, that differ from each other: local mode and cloud mode.

Local mode vs. cloud mode

Local mode

Cloud mode

  • Uses localhost (127.0.0.1) for registration (-> e.g. telling others about new topics and subscribing to topics)

  • Uses Multicast (239.0.0.1) for registration

  • Uses shared memory to send actual data to other processes

  • Uses UDP multicast (239.0.0.x) to send data to other hosts

  • Uses shared memory to send data to processes on the same host

By default, eCAL already is configured in cloud mode, so you don’t have to change anything. You however have to configure your operating system, so it knows where to send that multicast traffic to. This is done by creating a multicast route.

See also

Please refer to the advanced section to learn about changing between local mode and cloud mode!

4.1. Multicast configuration on Windows

  1. Check the IPv4 address of the ethernet adapter you are using to connect your two PCs. You can do that by typing ipconfig in a command prompt.

  2. Open a command prompt with administrator privileges

  3. Enter the following line and replace xx.xx.xx.xx with your IP address

    route -p add 239.0.0.0 mask 255.255.255.0 xx.xx.xx.xx
    

    Tip

    If you made a mistake, you can delete your route/s with route delete 239.0.0.0. Your eCAL communication may not work, if you leave faulty routes in place.

  4. Reboot

  5. Check the result from a command prompt. It should show your route under IPv4 Route Table / Persistent Routes.

    route print
    
    Windows route print

Tip

It is recommended to assign a static IP, so your multicast route will not become outdated at some point.

4.2. Multicast configuration on Ubuntu

  1. Configure the loopback route (this will become active, if you disconnect from all networks)

    sudo gedit /etc/network/interfaces
    

    Add the following lines beneath the iface lo inet loopback line:

    post-up ifconfig lo multicast
    post-up route add -net 239.0.0.0 netmask 255.255.255.0 dev lo metric 1000
    

    Note

    The high metric will cause this loopback route to have lower priority than the route to the external interface that we will create in the next step.

  2. Configure a route for the external interface:

    • Recommended way: If you have a graphical network manager installed (-> Desktop Ubuntu), you should use it to configure the route.

      • System Settings -> Network -> Your Adapter -> Options -> IPv4 Tab -> Routes

      • Create a route:

        • Address: 239.0.0.0

        • Netmask: 255.255.255.0

        • Gateway: 0.0.0.0

        • Metric: 1

        Ubuntu multicast route
    • Not recommended (but works fine): If you do not have a graphical network manager (-> Server Ubuntu), again add the post-up lines to /etc/network/interfaces (just as for loopback, but with metric 1):

      # replace eth0 with your network adapter
      post-up ifconfig eth0 multicast
      post-up route add -net 239.0.0.0 netmask 255.255.255.0 dev eth0 metric 1
      
  3. Restart your PC

  4. Check the result from a terminal. It should show routes for local and external communication:

    route -n
    
    Ubuntu route -n

4.3. eCAL Samples over network

Now start one ecal_sample_person_snd and one ecal_sample_person_rec, just as in the previous section. But on different machines! If you configured everything correctly, publisher and subscriber should connect almost immediatelly and exchange data.

person_snd and person_rec sample over network