Integrering av HUGIN-servrar
Av Jaakko Kerola, mjukvaruarkitekt, Novator Solutions
Novator Solutions, HUGIN-system, är nätverksanslutna smalbandiga flerkanalsmottagare för COMINT- och signalspaningsapplikationer. HUGIN bygger på en server-klient mjukvaruarkitektur, där en HUGIN-server kan betjäna flera klientapplikationer som kommunicerar via enkla textbaserade kommandon enligt ett fastställt protokoll. Novator Solutions tillhandahåller även generella HUGIN-klientapplikationer, men om så krävs, t.ex. av sekretesskäl, kan även anpassade klientversioner användas.
Denna Application Note ger en översikt över HUGINs server-klient-kommunikationsprotokoll för användare som vill komma igång med att integrera HUGIN i sina befintliga signalövervakningssystem.
HUGINs nätverksarkitektur
Serverprogramvaran körs på en nätverksansluten styrenhet, antingen som en Windows®-tjänst eller som en körbar fil med ett användargränssnitt. HUGIN distribueras vanligtvis fullt installerad och konfigurerad med hårdvara, men det är också möjligt att installera HUGIN Server på ett rent Windows-system om så krävs. Administratörsåtkomst till serverdatorn behövs endast under installationen av programvaran.
HUGIN Server kan ha två typer av klientapplikationer: Konfigurationsklienter och dataklienter. Konfigurationsklientprogrammen kommunicerar med servern med hjälp av en uppsättning kommandon som definieras i NSP, Novator Server Protocol, som är ett kommandoprotokoll på applikationsnivå för server-klientkommunikation. Dokumentation av NSP-syntaxen medföljer HUGIN-programvarupaketen som referens. Med hjälp av NSP-kommandon kan en Configuration Client få fjärråtkomst till alla serverfunktioner, så direkt åtkomst till servern via användargränssnittet behövs inte när servern har konfigurerats.
Data Client är ett program som kan läsa två typer av dataströmmar som tillhandahålls av servern, dvs. bredbandsspektra och radiokanaler. HUGIN Server sänder dataströmmarna som multicast UDP-meddelanden. Programvarupaketet HUGIN innehåller dokumentation om hur UDP multicast-paketen är uppbyggda samt klientprogram för läsning av dataströmmarna. Steg för att skapa en anpassad HUGIN Data Client-applikation omfattas inte av denna Application Note.
Principer för Novator Server-protokoll
NSP-syntaxen definieras i en protokollbeskrivningsfil som innehåller en förteckning över konfigurationskommandon, de svar som servern ger på kommandona, kommandoparametrar och kommandotyper samt annan information om kommandona. Ett kommando för att ställa in mittfrekvensen för en tuner beskrivs t.ex. på följande sätt i dokumentationen av protokollsyntaxen:
TN_SET_FQ(uint CID,uchar TN,long FQ);Tuner;M;TN_FQ;
Ställ in tunerns mittfrekvens
Beskrivningen består av semikolonseparerade fält, som förklaras i tabell 1.
Tabell 1: Syntax för ett NSP-kommando TN_SET_FQ (ställa in tunerns mittfrekvens).
Serverprogrammet förväntas skicka ett svar till alla klienter, antingen som ett riktat svar till enbart avsändarprogrammet, varvid kommandots identifikationsnummer (CID, den första parametern i kommandosträngen) i det ursprungliga klientkommandot används, eller, om svaret påverkar alla anslutna klienter, som ett multicast-svar med ett speciellt multicast-CID-nummer 65535 (FFFF i hexadecimal). Ett multicast-svar skulle skickas när systemkonfigurationen ändras av en av klienterna, men ändringen kräver att alla anslutna klienter uppdaterar sin konfiguration.
Några ytterligare kommandon skickas automatiskt från servern till klienterna:
- När anslutningen inleds skickar servern initieringssträngar till klienterna, t.ex. för att informera klienten om den aktuella systemkonfigurationen så att applikationens användargränssnitt kan konfigureras så att det matchar den aktuella serverkonfigurationen.
- En systemstatusrapport skickas automatiskt när en hårdvaruförändring, t.ex. ett fel, har inträffat.
- En heartbeat-signal skickas med ett konfigurerbart tidsintervall. Klientapplikationer förväntas också skicka en heartbeat-signal till servern. Det är också möjligt att avaktivera sändning av heartbeat-signaler om så önskas.
Novator Server Protocol implementeras även i andra serverbaserade produkter från Novator Solutions, t.ex. MUNIN Wideband Recorders och ODEN Intelligent RF Spectrum Recorders, även om de faktiska kommandouppsättningarna skiljer sig åt för att matcha kraven för respektive produktfamilj.
NSP-kodning
I den aktuella versionen av HUGIN 2000 kodas kommandona, såsom de definieras i protokollbeskrivningen, till JSON-strängar som kompletteras med tecken för vagnsretur + radmatning. Ett praktiskt exempel med kommandot TN_SET_FQ (tabell 1 ovan) skulle vara1:
{”CMD”:”TN_SET_FQ”,”CID”:57122,”TN”:2,”FQ”:176000000}
Detta kommando innebär att vi vill göra det:
- Ställ in mittfrekvensen ("CMD":"TN_SET_FQ")
- för tuner nummer 2 ("TN":2)
- till 176 MHz ("FQ":176000000)
Kommando-ID-numret = 57122 genereras av klientapplikationen. Det finns inga regler för hur CID-numret ska genereras, men ett inkrementellt serienummer är den vanligaste lösningen. I Novator Solutions klientapplikationer genereras CID genom att kombinera ett 8-bitars serienummer med det sista fältet i datorns IP-adress till ett 16-bitars CID.
Servern svarar sedan med en bekräftelse som upprepar den nya inställningen, och eftersom en ändring av tunerns mittfrekvens påverkar alla klienter, ersätts det ursprungliga CID:t med 65535 och svaret skickas till alla klienter:
{”CMD”:”TN_FQ”,”CID”:65535,”TN”:2,”FQ”:176000000, ”STATUS”: {"NUM":0,"MSG":""}}
STATUS-strukturen anger att kommandot har tillämpats framgångsrikt av servern (statusnummer 0). Om så inte vore fallet skulle i stället den ursprungliga frekvensinställningen returneras, statusnumret skulle sättas till 1 och parametern MSG skulle innehålla ytterligare information om varför inställningen avvisades.
Eftersom JSON-kommandoparsern är en oberoende modul i servern kan Novator Solutions på begäran tillhandahålla alternativ för att använda andra kodningsmetoder, till exempel XML eller VITA49.2-kommandopaketformatering, istället för den JSON-kodning som används för närvarande.
Ansluta till servern
Som ett första steg i skapandet av en integrerad klientapplikation räcker det med en enkel TCP/IP-klient som är inställd för att använda HUGIN-serverns kommunikationsparametrar (IP-adress, port). Klientprogrammet måste skicka en heartbeat-signal, SYS_HB{}, till servern med regelbundna tidsintervall. Stöd för ytterligare kommandon kan byggas upp successivt eftersom klientprogrammet inte behöver kunna hantera hela serverns kommandouppsättning för att fungera.
Figur 1: HUGIN 2000 Config Debug Tool visar kommandologgen.
HUGIN 2000 Config är ett fullfjädrat klientprogram som kan installeras antingen på en nätverksansluten klientdator eller på själva serverdatorn. HUGIN 2000 Config kommunicerar med HUGIN Server med hjälp av NSP och loggar alla skickade och mottagna kommandon. Utvecklaren kan övervaka och lagra kommandotrafikloggarna, som fungerar som ett värdefullt verktyg för att förstå hur NSP kan användas i egna konfigurationsklientapplikationer (figur 1). Genom att jämföra kommandotrafikloggarna på serversidan från HUGIN Config-applikationen sida vid sida med loggarna från den egna applikationen under utveckling är det lätt att förstå vilken ordning som krävs för kommunikationen och att identifiera eventuella fel.
Programmeringsspråk
Novator Solutions har använt NI LabVIEW® för att koda klientapplikationen HUGIN 2000 Config. Eftersom kommunikationen hanteras på en hög abstraktionsnivå kan implementeringen av klientprogramvaran göras i valfritt programmeringsspråk. För att komma igång finns enkla exempel på klientapplikationer skrivna i ANSI C, Python® och Matlab® tillgängliga på begäran från Novator Solutions.
Exempel på tillämpning: Combitech SANDRA
Combitech SANDRA är en distribuerad programvarusvit för övervakning av smalbandsradiokommunikation som stöder dussintals samtidiga fjärroperatörer. Klientgränssnitten i SANDRA kommunicerar med HUGIN Server med hjälp av NSP-protokollet, vilket gör att operatörerna kan använda de intuitiva SANDRA-verktygen för att integrera ett eller flera HUGIN-system och ta emot potentiellt tusentals radiokanaler från olika geografiska platser.
Vid integreringen av SANDRA med HUGIN Server var HUGIN Config ett ovärderligt verktyg för Combitech för att förstå NSP-protokollet, både för att skapa SANDRA-kommunikationsuppsättningen och för att verifiera SANDRA-klientens kommunikation mot HUGIN. Dessutom kunde felscenarier testas med HUGIN Config parallellt med SANDRA-utvecklingen och därmed kunde felorsakerna isoleras bättre. De sparade kommandologgfilerna gjorde det också möjligt för Novator Solutions att duplicera problem med server-klientkommunikationen som Combitech hade stött på under integrationen, vilket gjorde felsökningen smidigare för båda parter.
Utvecklingsarbetet resulterade i en insticksmodul som fungerar som en klient till en HUGIN-server. Genom att installera insticksmodulen kan användare av SANDRA dra nytta av HUGINs kanaliseringsfunktioner utan att behöva lära sig ytterligare en applikation.
Python är ett registrerat varumärke som tillhör Python Software Foundation
Matlab är ett registrerat varumärke som tillhör The Mathworks, Inc.
LabVIEW är ett registrerat varumärke som tillhör National Instruments Corporation
Windows är ett registrerat varumärke som tillhör Microsoft Corporation