Wstęp


Telewizja unicast realizowana jest w oparciu o technologię HLS (HTTP Live Streaming). Docelowy strumień danych, który ma zostać odebrany przez dekoder, zostaje podzielony na mniejsze części/pliki (ang. chunk) o wielkości od kilkuset KB do kilku MB (~3 sekundy kontentu) a następnie jest udostępniany na ‘świat’ poprzez serwer http.


Głównym celem serwera proxy w sieci operatora jest poprawienie jakości usługi telewizji unicastowej oraz ograniczenie potrzebnego pasma w relacji Evio → Operator. Odbywa się to dzięki jednokrotnemu pobieraniu tego samego kontentu, żądanego przez wiele dekoderów, przez serwer (cache'owanie chunków). Ponadto serwer proxy cechuje się też większą wydajnością (sieciową, obliczeniową) w stosunku do dekoderów dzięki czemu radzi sobie lepiej z problemami natury sieciowej (retransmisjami TCP, wysokim RTT czy gubieniem pakietów pomiędzy siecią operatora a Evio).

Kontent unicastowy możemy podzielić na:

  • live - telewizja na żywo
  • timeshift - kilkugodzinny bufor umożliwiający oglądanie telewizji wstecz
  • pvr/catchup - nagrania audycji


Dekodery w trybie 'unicast' korzystają ze wszystkich, wyżej wymienionych, typów wykorzystując transmisję unicastową. W przypadku dekoderów multicastowych, dekodery telewizję live otrzymują za pomocą multicastów a pozostałe usługi (timeshift, pvr, catchup) otrzymują za pomocą unicastów.


Najlepiej cache’ującym się typem kontentu, pod względem trafień do cache’a proxy (hit ratio), jest telewizja na żywo unicast - bardzo duże prawdopodobieństwo że dwa lub więcej dekoderów odbiera dany kanał i zgłasza zapotrzebowanie na te same pliki. Niskim hit ratio wykazuje się timeshift. Dla usług pvr/catchup występuje praktycznie zerowy współczynnik trafień do cache’a. W przypadku dekoderów z telewizją na żywo w unicast, proxy pozwala zmniejszyć wolumen ruchu między Evio -> operator. W przypadku dekoderów z telewizją na żywo w multicast działanie proxy ogranicza się głównie do polepszenia jakości działania usług timeshit/npvr/catchup.


Spadek ruchu Evio → Operator najbardziej widoczny jest w godzinach szczytu; po-południowo-wieczornych (2-4 krotnie mniejszy ruch gdzie występuje proxy wewnątrz sieci operatora) a najmniej w godzinach nocnych (mniej aktywnych dekoderów, większe zróżnicowanie oglądanych kanałów TV). Największe oszczędności pasma odnotowuje się podczas dużych wydarzeń sportowych gdy większość osób ogląda ten sam kanał. Przykładem korzystnego zmniejszenia się ruchu były mecze Polaków w piłce nożnej w mistrzostwach świata, gdzie proxy pozwalało na jego spadek nawet 9 krotnie.


Serwer proxy do cache’owania wykorzystuje aplikację open source Apache Traffic Server (ATS).


Wymagania sprzętowo-sieciowo-systemowe serwera


Sprzętowe


  • procesor Intel Xeon Processor E3-1230 v5/v6 ~3.5GHz lub ekwiwalent
  • pamięć ram 16GB
  • storage 32GB na system operacyjny (dysk/pendrive)


Sieciowe


  • łącze conajmniej 1 Gbps od strony Evio (internet)
  • łącze 10 Gbps od strony sieci dekoderów
  • dostęp dekoderów do serwera proxy (do wszystkich portów lub do portu 80 (tcp), 48888 (tcp/udp) oraz zakresu 50000-65535 (tcp/udp))


Systemowe



Przetestowana, rekomendowana konfiguracja:


  • Supermicro Superserver CSE-514-R400C
  • Płyta główna super micro X11SSL-F-O
  • Radiator SNK-P0046A4
  • Intel Xeon Processor E3-1230 v6 8MB Cache, 3,50GHz
  • Samsung 16GB DDR4 ECC REG M391A2K43BB1-CRC
  • Karta sieciowa AOC-STGN-I2S
  • Riser RSC-RR1U-E8
  • Sandisk Ultra Fit 32gb

obsługa ruchu wychodzącego do kilkunastu Gbps


Etapy wdrożenia proxy


  • przygotowanie serwera pod względem sieciowym i software’owym (Operator)
  • instalacja i konfiguracja oprogramowania cache’ującego (Evio)
  • test wybranych przez operatora dekoderów z użyciem proxy (Evio/Operator)
  • przepięcie wszystkich dekoderów na korzystanie z  proxy operatora (Evio)


Przygotowanie serwera pod względem sieciowym i software’owym (Operator)


Operator instaluje na serwerze system operacyjny Centos 7.x oraz konfiguruje sieć wg schematu który mu najbardziej odpowiada (zalecamy konsultacje). 

Przykłady:

  • 1 interfejs o publicznej adresacji IP do pobierania kontentu z Evio (1Gbps/10Gbps), 1 interfejs prywatny do ruchu w kierunku dekoderów (10Gbps)
  • 1 interfejs 10Gbps + vlany
  • 2 interfejsy 10Gbps + teaming/bonding + vlany


Operator umożliwia dostęp pracownikom Evio do serwera:

  • konta z uprawnieniami root

    useradd -c "Tomasz Jozwiak" -p '$6$A4k5mby.$a9cN9vJX3NH7otDf3.k0Ke5W./WBUl9.4vi1TzUF4ls/20Ue1YbT2C5M/VZuXoiQ86d3r0IaaZ.p.0Lw65i.Y0' -G wheel -u 1033 tjozwiak
    useradd -c "Mateusz Witkowski" -p '$6$rNP3wLFq$EKVBFPXkhnl5eiEl7duKJMF1CSzgKjdlhRCsIyS8yP2fknWP4aMvQd/NuqQVwbrDKIkY7KdY0d.JMG8XVBMfV1' -G wheel -u 1099 mwitkowski
    
  • dodanie zakresu IP Evio do zaufanej sieci w firewallu:

    firewall-cmd --permanent --zone=trusted --add-source=31.222.16.0/21
    firewall-cmd --reload
    

    Zakładamy że serwer dostępny jest pod adresem publicznym. Powyższe polecenie odblokowuje dostęp do wszystkich portów dla podsieci Evio. Domyślny firewall w Centos’ie ma odblokowany dostęp do portu ssh oraz http. Evio potrzebuje dostępu do portu ssh (22 tcp), http (80 tcp), snmp (161 udp) oraz 9100 (tcp). Jeśli serwer miałby nie być dostępny publicznie prosimy o konsultacje - wymagane by było przekierowanie powyższych portów by były dostępne dla Evio.

  • przesłanie namiarów na serwer proxy pracownikom Evio (np. pomoc.evio.pl)


Instalacja i konfiguracja oprogramowania cache’ującego (Evio)


Pracownik Evio konfiguruje serwer cache’ujący, serwer iperf pod sondę unicastową oraz narzędzie do zbierania statystyk ruchu.


Test losowych dekoderów z użyciem proxy (Evio/OP)


Po konfiguracji serwera, operator podaje 2-3 adresy MAC dekoderów w swojej sieci na których zostaną przeprowadzone testy. Testy polegają na próbnej konfiguracji dekoderów na otrzymywanie kontentu z serwera proxy.


Przepięcie wszystkich dekoderów na proxy operatora (Evio)


Po udanych testach wszystkie dekodery otrzymują nową konfigurację źródła i traktują serwer proxy operatora jako główne źródło kontentu unicastowego.