HOMER a Asterisk

HOMER a HEP

   HOMER je robustní, vysoce škálovatelné a spolehlivé řešení pro monitorování paketů a událostí v oblasti VoIP/RTC na základě protokolů HEP/EEP. Dokáže zpracovat obrovské množství signálů, událostí RTC, logů a statistik s okamžitým vyhledáváním, možností detailního prozkoumání a okamžité analýzy.

HOMER využívají velké podniky, provozovatelé hlasových sítí a poskytovatelé VoIP po celém světě. 

Byl implementován jako služba třetí strany v hlasových platformách a je vhodný pro nasazení v produkčním prostředí.


HOMER nabízí řadu funkcí a výhod, jako:

Jádrem HOMERu je Kamailio SIP proxy, modulární a robustní základ pro velké množství SIP dat, modul Sipcapture rozšiřuje Kamailio o monitorovací režim.

V ekosystému HOMER jsou dva hlavní aktéři:

HEPv3/EEP

HEPv3 (HOMER Encapsulation Protocol version 3) též EEP (Extensible Encapsulation protocol) je Protokol původně navržený pro HOMER, který se používá k přenosu a zpracování paketů SIP a RTCP mezi Asteriskem a HOMER serverem.

Princip spočívá v duplikaci IP datagramu pro vzdálené sběry, a to prostřednictvím enkapsulace původního datagramu v novém, který je přenášen přes UDP/TCP/SCTP protokoly. Enkapsulace udržuje původní obsah datagramu včetně jeho hlavičkových informací neporušené.

HEP je nativně implementováno v mnoha SIP platformách:

Instalace - Homer 7 pro Ubuntu

Aktivace HEPv3 modulů

HOMER ke svému správnému fungování potřebuje mít aktivované HEPv3 moduly. Od Asterisku verze 20.0 není nutné tyto moduly manuálně vybírat před instalací Asterisku. 

V případě, že by jste chtěli tyto moduly nainstalovat na starší verzi Asterisku nebo se jen přesvědčit, zdali jsou vybrané, můžete tak provést v Asterisk instalačním adresáři pomocí příkazu make menuselect.

V sekci Resource Modules pak můžete dole nalézt moduly res_hep.so, res_hep_pjsip.so a res_hep_rtcp.so.

Po instalaci Asterisku je nutné tyto moduly aktivovat v souboru /etc/asterisk/modules.conf přepsáním unload na load:

load = res_hep.so 
load = res_hep_pjsip.so 
load = res_hep_rtcp.so

Pro aplikování změn restartujeme Asterisk pomocí příkazu:

systemctl restart asterisk.service

Kontrolu načtení modulů je možné provést přes Asterisk konzoli (asterisk -r):

ubuntu*CLI> module show like res_hep 
Module                     Description                   Use Count       Status              Support Level 
res_hep.so                HEPv3 API                     2                       Running                  extended 
res_hep_pjsip.so      PJSIP HEPv3 Logger     0                       Not Running          extended
res_hep_rtcp.so       RTCP HEPv3 Logger     0                       Not Running          extended 
3 modules loaded

Ve výchozím stavu je HEPv3 deaktivována a je nutné ji pro použití aktivovat v /etc/asterisk/hep.conf a popřípadě i změnit další parametry:

[general] 
enabled = yes                                                   ; Enable/disable forwarding of packets to a
                                                                           ; HEP server. Default is "no". 
capture_address = 192.168.168.3:9061      ; The address of the HEP capture server. 
capture_password = foo                                ; If specified, the authorization password 
                                                                           ; for the HEP server. If not specified, no 
                                                                           ; authorization password will be sent. 
capture_id = 1234                                           ; A unique integer identifier for this 
                                                                           ; server. This ID will be embedded sent 
                                                                           ; with each packet from this server. 
;capture_name = asterisk                              ; A unique string identifier for this 
                                                                           ; server. This ID will be embedded sent 
                                                                           ; with each packet from this server. 
uuid_type = call-id                                           ; Specify the preferred source for the Homer 
                                                                           ; correlation UUID. Valid options are: 
                                                                           ; - 'call-id' for the PJSIP or chan_sip SIP 
                                                                           ; Call-ID ; - 'channel' for the Asterisk channel name 
                                                                           ; Note: If 'call-id' is specified but the 
                                                                           ; channel is not PJSIP or chan_sip then the 
                                                                           ; Asterisk channel name will be used instead.

Pro aplikování změn je opět potřeba restartovat Asterisk:

systemctl restart asterisk.service

Instalace HOMER 7

Instalace HOMER 7 se provádí nejjednodušeji prostřednictvím Dockeru.

Nejprve se nainstalují veškeré prerekvizity:

apt update && apt install docker docker-compose git

Klonování úložiště:

git clone https://github.com/sipcapture/homer7-docker

Přechod do adresáře:

cd homer7-docker/heplify-server/hom7-prom-all

Spuštění Docker kontejneru:

docker-compose up -d

Kontrola zdali Docker kontejnery běží:

root@ubuntu:/etc/asterisk# docker ps
CONTAINER ID      IMAGE                                        COMMAND                             CREATED                       STATUS                  PORTS                  
                                                                                     NAMES
da68cb913a5e      sipcapture/webapp                 "/docker-entrypoint.…"        6 minutes ago             Up 6 minutes        0.0.0.0:9080->80/tcp, :::9080->80/tcp homer-webapp
08b9d1f74a58      sipcapture/heplify-server       "./heplify-server"                   6 minutes ago             Up 6 minutes        9090/tcp, 0.0.0.0:9060-9061->9060-9061/tcp, 0.0.0.0:9060->9060/udp, :::9060-                                                                                                                                                                                                                   9061->9060-9061/tcp, :::9060->9060/udp, 9096/tcp heplify-server
7e0ef176b98a      prom/node-exporter:latest     "/bin/node_exporter …"      6 minutes ago              Up 6 minutes       9100/tcp nodeexporter
c3a5df39710f       prom/alertmanager:latest       "/bin/alertmanager -…"       6 minutes ago              Up 6 minutes       9093/tcp alertmanager
91e979cd8441     postgres:11-alpine                    "docker-entrypoint.s…"       6 minutes ago              Up 6 minutes  (healthy)  5432/tcp db
cac32b8f48c9       grafana/grafana:master           "/run.sh"                                6 minutes ago              Up 6 minutes (healthy)   0.0.0.0:9030->3000/tcp, :::9030->3000/tcp grafana
a6dbfe2d9eb4      grafana/loki                               "/usr/bin/loki -conf…"          6 minutes ago               Up 6 minutes       0.0.0.0:3100->3100/tcp, :::3100->3100/tcp loki
fdfd841c5a4c        prom/prometheus:latest         "/bin/prometheus --c…"     6 minutes ago               Up 6 minutes       9090/tcp prometheus

Ukázka - Homer 7

Služby

HOMER 7 Docker kontejner obsahuje celou řadu služeb, které se starají o sběr, analýzu a zobrazování dat.

HomerUi

Základní informace:

V horním panelu se nachází:

  1. Hlavní nastavení HOMER
  2. Přepínač pro dashbordy
  3. Přepínač časového rozsahu
  4. Manuální aktualizace a nastavení automatické aktualizace 

Možnosti analýzy:

Výchozí dashboard zahrnuje levý panel s filtry, aktuálním časem a středový panel, který zobrazuje pakety

Po rozkliknutí paket záznamu je možné zobrazit Call Flow

V další sekci se nachází Session Info, kde můžeme vyčíst dobu hovoru, dobu vyzvánění, delay a další informace

Další užitečná sekce zobrazuje grafy ohledně QoS, ze kterých můžeme například vyčíst informace o ztracených paketech a jitteru

V následující sekci je možné provádět různé exporty, kde nechybí ani export do PCAP souboru, který je možný otevřít ve Wiresharku

Zobrazení paketů z vyexportovaného PCAP souboru ve Wiresharku

Ukázka filtrace

 Grafana

Zobrazení grafů související s QoS

HOMER 10 (beta) demo

HOMER 10+ se transformuje na "headless observability solution". To znamená, že již nespoléhá na vlastní grafické uživatelské rozhraní. Místo toho se zaměřuje na analýzu dat prostřednictvím standardizovaných nástrojů třetích stran, jako je Grafana. 

HOMER 10 je aktuálně k dispozici pouze ve zkušební verzi, která slouží k představení nové vize vývojářů. Tato verze už zahrnuje i vzorová data pro demonstraci.

Instalace

git clone https://github.com/sipcapture/homer-docker.git 
cd all-in-one 
docker-compose up -d

Služby

HOMER 10 Docker kontejner obsahuje řadu služeb, které se starají o sběr, analýzu a zobrazování dat.

Grafana

Po rozkliknutí paket záznamu je možné zobrazit Call Flow

Ukázka grafů související s QoS

Reference

  1. https://lms.vsb.cz/pluginfile.php/2431251/mod_resource/content/1/VoIP_cviceni_11.pdf "Exercise 11 - HOMER 7 - Installation, Connection with Asterisk, Setting Up, Analysis of the Calls"
  2. https://github.com/sipcapture/homer/wiki/Quick-Install  "GitHub - HOMER"
  3. https://github.com/sipcapture/homer "Github "Homer 10" 
  4. https://github.com/sipcapture/homer-docker/tree/main/all-in-one "HOMER 10 + qryn (all-in-one)" 
  5. https://github.com/sipcapture/homer-docker "GitHub - HOMER 10 Docker" 
  6. https://qryn.metrico.in/#/introduction "qryn - Introduction" 
  7. https://www.kamailio.org/events/2016-KamailioWorld/Day0/W03-Lorenzo.Mangani-Analyzing-SIP-Traffic-With-Sipcapture.pdf "SIPCAPTURE WORKSHOP" 
  8. https://github.com/sipcapture/HEP "GitHub - HEP" 
  9. https://github.com/sipcapture/homer/wiki/Basics "Github - HOMER Basics"
  10. https://github.com/sipcapture/homer7-docker "GitHub - HOMER 7 Docker Containers"

Autoři

Martin D​vořák / DVO0247

Tomáš Juríček / JUR0484