Linux, IPTV and the rest of us
We mentioned on several occasions in this blog, that we are working on IPTV solutions. Just like any other software company, we are trying to avoid reinventing the wheels, by using solid, proven solutions. So, we use Linux. And for us, most of the time Linux works great. We love Ubuntu. We have several boxes with different versions of Ubuntu Server and Ubuntu Desktop. Even this post is written on Ubuntu Desktop. We love other OSs too (Go FreeBSD !!!), but the focus of this post is our latest experience with Linux.
In our test network, we have several multicast streams. We use them for Set-Top-Box testing, middle-ware testing, fun, etc. And they all work fine. Until yesterday. We were testing a border device we’re developing and strange problem occurred. Our application is supposed to read from different streams (different multicast ip + port combinations) and process the data in a different manner depending on the source. But something wrong happened. After some testing and debugging we found that all multicast traffic reaches all readers. Kernel should register every reader to unique pair of multicast source address and port and send traffic only from this address and port to that reader. But apparently there is a bug with that. We thought it is a problem with our code and tried to debug it for several hours without any luck.
Later that day a person with more experience in this matter told us that it’s possibly a Linux kernel bug. Seems reasonable. Now, let’s confirm it.
Moral of the story: It is not always your code that is the problem, just most of the time.