Kod źródłowy projektu msd (Multi Stream daemon) został udostępniony na licencji BSD, a repozytorium opublikowano na GitHub. Wcześniej w formie kodu źródłowego była dostępna jedynie okrojona wersja msd_lite, natomiast główny produkt pozostawał własnościowy. Oprócz zmiany licencji wykonano także port na platformę macOS (wcześniej obsługiwane były FreeBSD i Linux).
Program msd jest przeznaczony do organizacji strumieniowej transmisji IPTV w sieci przez protokół HTTP. Jeden serwer może jednocześnie obsługiwać kilka tysięcy klientów. Główny nacisk położono na osiągnięcie maksymalnej wydajności, a także na zapewnienie zaawansowanych ustawień wpływających na jakość odbioru usługi przez klientów: szybkość przełączania kanałów oraz odporność na błędy transmisji. Zaimplementowano proxy w trybie „jeden do wielu”: dane odebrane przez jedno połączenie HTTP mogą być udostępniane wielu podłączonym klientom.
Cechy
- Obsługa protokołów IPv4 i IPv6.
- Analizator strumienia MPEG2-TS.
- Automatyczne przełączanie na źródło zapasowe w przypadku braku sygnału lub błędów na bieżącym źródle.
- Zero Copy on Send (ZCoS) — zmniejsza narzut związany z obsługą podłączonych klientów, ponieważ całe zadanie wysyłania danych do klienta przejmuje jądro systemu operacyjnego.
- Obsługa klientów HTTP w trybie „half closed”.
- Odbiór udp-multicast, w tym RTP, jednocześnie z różnych interfejsów.
- Odbiór przez tcp-http-get (w jednym strumieniu i transmisja do wielu klientów).
- Automatyczne rozłączanie ze źródłami, jeśli nie ma podłączonych klientów.
- Wykorzystanie różnych algorytmów TCP Congestion Control w zależności od portu, na który połączył się klient, oraz adresu URL żądania klienta
- „Inteligentne” wysyłanie nagłówków MPEG2-TS do nowych klientów.
- Natychmiastowe wysyłanie nowemu klientowi danych z bufora pierścieniowego w celu zminimalizowania czasu oczekiwania na rozpoczęcie odtwarzania.
- Wysyłanie dowolnych dodatkowych nagłówków HTTP w żądaniach i odpowiedziach.
- Szablony konfiguracji dla Stream Hub i źródeł strumienia.
- Szczegółowe statystyki dla każdego połączenia TCP, ułatwiające diagnozowanie problemów na poziomie sieci.
Źródło: opennet.ru
