27

I have two servers on the same subnet. I have an application installed which uses multicast UDP to propagate events between the two servers and keep them in sync.

This does not seem to be happening, so I want to make sure that the multicast UDP messages are getting through as my first step.

The servers are running Windows 2008 R2.

How can I test Multicast UDP connectivity between two servers?

7 Answers 7

20

Try iperf

An article that explains the different steps: http://taosecurity.blogspot.com/2006/09/generating-multicast-traffic.html

4
9

iperf is a great tool, but could be a long procedure in installing it; Most repositories don't have this package. Depending on your Distribution, netcat is available in mostly every repository

You can also use netcat :

Server: nc -lu -p PortNr

Client: nc -vzu ServerIP PortNr

5
  • +1 Ah! Awesome! I'm gonna try this!
    – Viet
    Dec 27, 2012 at 21:07
  • 9
    This will not work for UDP Multicatst. I tried it with a MC address like 224.4.4.4 and nothing happens. Also strace on it doesn't show any ADD_MEMBERSHIP operation. Multicast is also missing in man nc. I suggest sockperf - see below.
    – avner
    Jan 14, 2014 at 11:04
  • 1
    example with socat: socat UDP4-RECVFROM:9875,ip-add-membership=225.2.215.254:0.0.0.0,fork - |hexdump
    – Francois
    Apr 16, 2015 at 14:11
  • I don't think this is correct. How would I set the group?
    – AndreKR
    Jan 13, 2017 at 5:46
  • 2
    This just tests IP direct to the servers ip address not the multicast address
    – teknopaul
    May 7, 2021 at 13:14
6

I highly recommend sockperf

It's a great tool for checking performance with both TCP and UDP, including UDP Multicast.

Example of a multicast UDP stream:

  • on the server: sockperf server -i 224.4.4.4 -p 1234
  • on the client: sockperf ping-pong -i 224.4.4.4 -p 1234
1
3

You can use SimpleMulticastAnalyzer - it's a simple .net multicast application that I wrote.

Enjoy.

3

If one server is already listening on multicast (netstat -g will tell you if it is).

You can broadcast with normal netcat, and detect with tcpdump.

Send a fixed size message to the multicast address.

echo -n 1234567890| ncat -vu 224.4.4.4 4444

and you should see a 10 byte UDP packet arrive using tcpdump on the server

# tcpdump -i eth0 host 224.4.4.4 and port 444
09:23:26.694624 IP srchost.56837 > 224.4.4.4.4444: UDP, length 10

If you dont have tcpdump, wireshark or pcap will see it too.

Use tcpdump -A if you want to confirm the message is 1234567890.

1

You can just simply use multiNC utility, this one allows you to handle multiple connections on the same port, github repository

2
  • 2
    Hello, and welcome to ServerFault. You should indicate in your answer that you wrote this tool; otherwise it is likely to be marked as spam. Nov 14, 2017 at 14:14
  • I don't think multiNC sends multicast traffic.
    – mcr
    May 25, 2020 at 18:51
1

You can use iperf, but it seems to have problems above version 1.7.0.

Run server first:

:: 224.0.0.0-224.0.0.255   Reserved for special "well-known" multicast addresses
:: 224.0.1.0-238.255.255.255 Globally-scoped (Internet-wide) multicast addresses
:: 239.0.0.0-239.255.255.255 Administratively-scoped (local) multicast addresses
:: my location blocks ip's in (224.0.1.x)

netsh advfirewall firewall add rule name="iperf 5001 udp in" dir=in action=allow protocol=udp localport=5001

iperf --server --udp --bind 239.192.0.1 --parallel 1

Client:

iperf --client 239.192.0.1 --udp --time 10 --bandwidth 1000m --ttl 7

Or you can try uftp, but you need a file to send.

Server or receiver first:

:: kill when done, "taskkill -im uftpd.exe -f"
copy /y postreceive.bat c:\users\admin

netsh advfirewall firewall add rule name=uftpd dir=in action=allow protocol=udp localport=1044

uftpd.exe -x 1 -M 239.195.1.2 -d -F @LOG -s c:\users\admin\postreceive.bat

netsh advfirewall firewall delete rule name=uftpd
 
certutil -hashfile c:\temp\windows10.0-kb4534273-x64-jan-2020-973.msu md5 | find "c595e9f6fb0dde144be2b8d37c18bb7c"

exit /b %errorlevel%

Client or sender:

set file=windows10.0-kb4534273-x64-jan-2020-973.msu

netsh advfirewall firewall add rule name="uftp" dir=in action=allow protocol=udp remoteport=1044

uftp.exe -S @LOG -x 1 -M 239.195.1.2 -P 239.195.1.2 -ttl 11 -C tfmcc -s 50 %file%

set err=%errorlevel%

netsh advfirewall firewall delete rule name=uftp

exit /b %err%

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .