[ntp:questions] Multicast question

Frank Kardel kardel at ntp.org
Sat Mar 1 10:14:44 UTC 2008

John Vossler wrote:
> Greetings,
> I have a new system running Solaris 10 set up as an NTP server.  IT is 
> synchronizing correctly but I cannot get it to multicast on any 
> interface except the systems primary Ethernet interface, bge0.  I need 
> it to multicast on interfaces bge1-bge3 and ce0 - ce7.
> Client systems reside on the network segments on these other interfaces.
> Anyone have any suggestions on getting the server to multicast on these 
> other interfaces?
> John

This issue has been discussed on the newsgroup around 2007-02-23. At
that time I taught ntpd to find the multicast default interface. This
solution is only suffcient on system with a single interface. To
quote the analysis from Bug #785 

   As it turns out the IPv4 mcast implementation will copy the multicast
   packets to any interface where the respective multicast groups have been
   joined. For that to happen on a multihomed host (one with several
   multicast capable interfaces) you need to run mrouted, zebra or some 
   multicast routing daemon.

So usually IPv4 MCAST will go via one interface. The kernel and/or
Multicast routing deamons then run the IGMP and other protocols to
find out which subscribers are connected on which interface and instruct
the kernel to do the respective packet replications.

On NetBSD (probably other BSDs too ans systems derived from that) my
setup is like this:


broadcast ttl 5 autokey

I run mrouted.

and mrouted detects via IGMP my multicast clients. The multicast
routing table of the kernel is currently:

netstat -g

Virtual Interface Table
  Vif  Thresh  Limit  Local-Address    Remote-Address   Pkt_in  Pkt_out
    0       1      0  10.x.y.1                               0       31
    1       1      0  84.xxx.xxx.xxx                         0      613

Multicast Forwarding Cache
  Hash  Origin           Mcastgroup       Traffic  In-Vif  Out-Vifs/Forw-ttl
    38  84.xxx.xxx.xxx           613        1  0/1

Total no. of entries in cache: 1

This means for the Mcastgroup (NTP.MCAST.NET) 613 packets
where sent via the interface Vif1 84.... These packets are replicated to
the interfaces Vif0 10... and Vif1 84.... for real output. You also
see that the interface Vif0 (10....) only sent 31 packets. This is
because I just started my notebook which is a multicast client.
As soon as ntpd on the notebook joined the Mcastgroup
pakets started flowing via the Vif0.

Solaris may or may not be needing a multicast routing daemon, but
I leave that research to someone else for now. But one thing to
note is that you may not see NTP Mcast traffic unless IGMP
messages are visible on the network segments (you can snoop for them).
So for debugging you need an ntpd on the interesting network segments
that listens for the multicast packets *before* you are likely to see
NTP multicast packets leaving the interface for that segment.
Usually Mcast packets are only send when necessary except for the
primary interface.

My current IGMP traffic looks like this (tcpdump -v -v -s 512 -i <iface> 
11:06:39.860323 IP (tos 0x0, ttl 1, id 0, offset 0, flags [none], proto 
IGMP (2), length 28) server > ALL-SYSTEMS.MCAST.NET: igmp query v2
11:06:39.860404 IP (tos 0x0, ttl 1, id 0, offset 0, flags [none], proto 
IGMP (2), length 32) server > DVMRP.MCAST.NET: igmp dvmrp Probe
         genid 3783968839
11:06:45.498743 IP (tos 0x0, ttl 1, id 556, offset 0, flags [none], 
proto IGMP (2), length 28) client > NTP.MCAST.NET: igmp v2 report 
11:06:49.960402 IP (tos 0x0, ttl 1, id 0, offset 0, flags [none], proto 
IGMP (2), length 32) server > DVMRP.MCAST.NET: igmp dvmrp Probe

Note the igmp v2 report line. Here the client documents interest in
NTP.MCAST.NET multicast packets which leads to forwarding the packets
to that network segment.

Hope this helps a bit.


More information about the questions mailing list