Multicast and partitions PreviousNext
Data Distribution Service (DDS) Forum > DDS Technical Forum >
Message/Author
Next message Janez Golob  posted on Monday, March 16, 2009 - 11:28 am
Hi,

is everybody tried to use multicast communication with OpenSplice DDS?

I my example I subscribe to partition (for example "receiver") and in ospl.xml I have following configuration:

<Partitioning>
<GlobalPartition Address="225.100.100.100"/>
<NetworkPartitions>
<NetworkPartition Address="226.0.0.13" Connected="true" Name="receiver"/>
</NetworkPartitions>
<PartitionMappings>
<PartitionMapping DCPSPartitionTopic="*.*" NetworkPartition="receiver"/>
</PartitionMappings>
</Partitioning>

Have I proper configuration or I missed something?
Next message Hans van 't Hag  posted on Monday, March 16, 2009 - 12:40 pm
Hi Janez,

I think you're confusing logical DDS-partitions (i.e. the DDS QoS Policy that you set on publishers and subscribers) and what is called 'physical' network-partitions in OpenSplice DDS which are characterized by a multicast-group.

The 'PartitionMapping' defines the relationship (or 'mapping') between a 'logical' Partition/Topic combination on DDS-level and an OpenSplice DDS NetworkPartition as a powerful and transparent optimization of traffic flow and confinement (utilizing hardware multicasting capabilities of the utilized network).

In your configuration example, you map ALL (*) topics in ALL (*) partitions (DCPSPartitionTopic="*.*") to the physical NetworkPartition called "receiver" that uses the 226.0.0.13 multicast address. So with such configuration the 'GlobalPartition' (i.e. the partition that will be used if no specific mapping applies) will not be utilized at all.

From a DDS-API perspective, physical partitions are transparent and communication will ONLY occur when there's a partition-match between the partition specified for the publisher a nd the subscriber. If you specify a partition called "receiver" at the subscriber, then you will only receive information if there's also a publisher that publishes into that "receiver" partition.

So to use multicast you don't need to define any NetworkPartitions at all, just specifying a multicast address for the 'GlobalPartition' (as you did) is enough. Just don't forget to use matching partition-names for the publisher and the subscriber.

hope this helps a little.
Next message Janez Golob  posted on Monday, March 16, 2009 - 01:06 pm
Hi,

thanks and Yes I confused DDS-partitions and network-partitions but at first I try also just to specifying a multicast address for the 'GlobalPartition' for example 225.100.100.100 and I didnt get any samples trough but when I use broadcast it works fine.

I am using ubuntu linux 8.4. Must I configure everything else or just GlobalPartition multicast address?

Thanks in advance.

regards,
janez
Next message Hans van 't Hag  posted on Monday, March 16, 2009 - 01:47 pm
Hi Janez,

Maybe you should check-out if multicast is enabled for the device:

To check your network interface supports multicast:

$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:F5:0E:22:B2
inet addr:192.168.123.169 Bcast:192.168.123.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:53660 errors:0 dropped:0 overruns:0 frame:0
TX packets:27334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:72230735 (68.8 Mb) TX bytes:1944680 (1.8 Mb)
Interrupt:9 Base address:0x2800

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:244325 errors:0 dropped:0 overruns:0 frame:0
TX packets:244325 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:73688746 (70.2 Mb) TX bytes:73688746 (70.2 Mb)

Note the MULTICAST attribute in the third line of the eth0 properties. If this is not present, it's possible that your kernel has not been compiled with multicast support. But before re-compiling the kernel try enabling multicast on your network interface (eth0 in this case) via ifconfig:

ifconfig etho multicast
Next message Hans van 't Hag  posted on Monday, March 16, 2009 - 01:48 pm
... sorry 'etho' above should have been 'eth0' :-)
Next message Janez Golob  posted on Monday, March 16, 2009 - 02:00 pm
Multicast works just fine (I write simple test program in perl).

regards,
janez
Next message Reinier Torenbeek  posted on Monday, March 16, 2009 - 02:16 pm
Hello Janez,

Do you see anything suspicious in the ospl-info.log file? Or is there a ospl-error.log?
Can you check wether the networking services have indeed joined the multicast group? cat /proc/net/igmp should show that.

Regards,
Reinier
Back to top
Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Post as "Anonymous"
Enable HTML code in message
Automatically activate URLs in message
Action: