28

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?

pauska
  • 19,766
Greg B
  • 1,658

7 Answers7

20

Try iperf

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

pauska
  • 19,766
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

Patel95
  • 476
  • 4
  • 7
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
Chris
  • 105
avner
  • 161
  • 1
  • 3
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.

teknopaul
  • 679
  • 6
  • 4
3

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%

js2010
  • 183
1

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

krypt0n
  • 11
  • 1