Though I’ve no previous plans to release part-II. But unfortunately what I found after some packet sniffing, inspired me to post this next part. This part deals with the reality of multicasting. Multicasting is a good technique that can minimize the unnecessary traffic on the internet, but unfortunately it is not implemented properly (by ISPs, by network devices etc.) . First, read the following dump:
[abbe@chatteau-d-lf ~]$ vlc -I dummy --sout='#duplicate{dst=display,dst=std{access=rtp,\\
> mux=ts,dst=239.1.0.3:1234}}' http://ct4.fast-serv.com:9620 >&2 2>/dev/null &
[1] 24445
[abbe@chatteau-d-lf ~]$ ssh abbe@172.16.0.3
abbe@172.16.0.3's password:
Linux marseilles 2.6.15-27-amd64-generic #1 SMP PREEMPT Sat Sep 16 01:50:50 UTC 2006 x86_64 GNU/Linux
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
You have mail.
Last login: Fri Oct 6 11:02:59 2006
abbe@marseilles:~$ sudo tcpdump -i eth0 ether multicast and dst port 1234
Password:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
12:04:18.934508 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.075196 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.223828 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.368566 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.517352 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.666095 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.810695 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:19.955592 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:20.100319 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:20.248925 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:20.393607 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:20.542330 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
12:04:20.686872 IP 172.16.0.2.32805 > 239.1.0.3.1234: UDP, length 1316
13 packets captured
27 packets received by filter
0 packets dropped by kernel
abbe@marseilles:~$ exit
logout
Connection to 172.16.0.3 closed.
[abbe@chatteau-d-lf ~]$ sudo /usr/sbin/tcpdump -i eth2 ether multicast and dst port 1234
Password:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
12:05:53.730136 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:53.878769 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.023399 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.171926 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.316514 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.465112 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.609687 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.754349 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:54.902971 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:55.047641 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:55.196428 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12:05:55.341313 IP 172.16.0.2.32805 > 239.1.0.3.search-agent: UDP, length 1316
12 packets captured
24 packets received by filter
0 packets dropped by kernel
As you can see in the above dump, that the audio is being multicasted to a multicast ethernet address, but the network switch (in my case it is D-Link DES-1026G) is over (or under)-smart :-P. So it is not altering the destination address of the ethernet frame but instead broadcasting (not actually ethernet layer broadcast i.e. not destined for FF:FF:FF:FF:FF:FF MAC address) to all ethernet ports. Hence this is a virtual multicasting (or simulation of multicast ;-) ). So before going for any network device, make sure it supports multicasting properly (if you plan to multicast in future). And at last, I would like to thank Gautam for sharing his Late W. Richard Steven‘s UNP book, his knowledge, and that multiple unicast anecdote :-D with me.