Search code examples
cstreamingreal-timeforwardingtunneling

Multicast / UDP Router


I am looking how to do multicast (video streams) router, with the following requirements:

  • receiving and sending multicast streams at 3-30Mbps (vlan forwarding)
  • in-ram (or storage) delaying to compensate for network congestion
  • TCP tunneling (UDP to TCP and vice-versa)
  • rate shaping of output UDP streams with up to 1 second jitter
  • for TCP tunneling, multi-homed network support
  • hundreds of streams at 3-30Mbits

I have did extensive research and I could not find any networking or video broadcast product actually matching these requirements.

I have implemented C linux app which does the above for a single stream, but now I would need to add web interface, multiple stream support etc, so I was wondering if there is something which can accomplish the above with the quality and reliability suitable for the video broadcast, like some kind of product? Doing this in C is not easy so I was wondering if there are any higher level languages which could match the performance? Would perl, python, java would be a good choice?

How do I architect this kind of software? I am currently using C application running Redhat with RT kernel with command line interface and single stream support.

I want to do application which would run 100 streams 24/7 (using 8 or 16 core system with 64GB RAM) and would be easy to configure it on the fly using either command line or web interface.

I just cant see any better option than current Redhat RT kernel and simple C userspace app. It seems to be the best and easiest option to go with.


Solution

  • The usual division in architecting such an application is to have the high performance parts done by C code and to write low performance components, like a user interface for configuration and such, in a higher level language like Python or Ruby or what have you. It would be hard to achieve the performance requirements in a high level language, but it would be unnecessarily masochistic to write a web configuration system in C.