23

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?

20

Try iperf

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

4
8

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 '12 at 21:07
  • 7
    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 '14 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 '15 at 14:11
  • I don't think this is correct. How would I set the group?
    – AndreKR
    Jan 13 '17 at 5:46
  • This just tests IP direct to the servers ip address not the multicast address
    – teknopaul
    May 7 at 13:14
5

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
2

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

Enjoy.

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%
0

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 '17 at 14:14
  • I don't think multiNC sends multicast traffic.
    – mcr
    May 25 '20 at 18:51
0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.