Aug 19, 2004

Multicast Sockets...

I have recently purchased Multicast Sockets: Practical Guide for Programmers by David Makosfske and Kevin Almeroth, and it is a good book on multicast development.

In Using Multiple Vendor's ORBs with Name Service, I showed a simple multicast implementation in C++, C#, and Java. This book is an extension of this, and also implements a full interface for C, C#, and Java. The C++ not implemented, but would be easily implemented. I find the C# bit especially amusing, in that it actually states that C# is pronounced C-Sharp. I would be rather surprised that developers today are unaware of C#. In the C# section, they also discuss silliness of the UdpClient class, but not as harsh as my first exposure to C#.

While Unix Network Programming: Volume 1--Third Edition provides you with a fast overview of multicasting, this book goes a little more in depth. It discusses, for example, SSM at length, whereas the second edition of UNP was published prior to SSM and the third edition only mentions the functionality. That being said, however, I was a little surprised that the Multicast Sockets did not talk more about IPv6 and Chapter 2 does not even implemented IPv6 support, whereas UNP does this quite nicely.

The book primarily focuses on multicast applications as a method of streaming video, audio, and data like UDPCast, but it is important to realize that the concepts in this book can be used for all kinds of things, such as the discovery of the CORBA nameserver as previously mentioned. As the book is targeted towards developers, the authors state that there are details that are left out that are not important for developers; I would have discussed a little bit more about some applications for multicasts to get developers thinking where they can use this important technology.

UNP does not go into elaborate detail about some of the techniques surrounding multicasting, but Multicast Sockets goes into a little more detail. It discusses, for example, the history of multicasting, some problems relating to multicasting, and some methods for dealing with reachability, scalability, and congestion. One quote mentioned when dealing with congestion that I have not seen in a while has been the Internet Robustness Principle, which states “Be liberal in what you accept and conservative in what you send.”

While the book has a lot of great information, the programs developed in the book is a multicast-specific ping application and an mrouted-type application. While these applications do not seem to be the best examples of multicasting, with multicast-based ping application, they highlight the issues of reachability, scalability, and dealing with congestion. Likewise, the mrouted application seems redundant, except for the fact that commercially-developed applications would need such a utility to be able to route multicasts reliably over the Internet.

If you are going to work with multicasts and really want to know what it is about, I would recommend that you get Multicast Sockets: Practical Guide for Programmers.

Filed In