Funkrufmaster 2.0 DAPNET

dapnet logo

Übersicht

Einleitung und Motivation

Der aktuelle Funkrufmaster Version 1.16 von DH4DAI und DH6BB ist etwas in die Jahre gekommen und läuft bei manchen Installationen nicht stabil. Alle Versuche unsererseits, das Problem zu beheben, sind leider fehlgeschlagen. Daher haben wir uns entschieden, die Software neu zu programmieren und moderne Cluster-Frameworks für die Realisierung des verteilten Systems zu benutzen. Herausgekommen ist DAPNet, eine auf Java basierte Anwendung, welche auf IP als Transport-Protokoll zur Kommunikation der Knoten untereinandern und mit den Sendern aufsetzt. Damit zielt dieses Software-Paket insbesondere auf den Einsatz im Hamnet ab. Den DAPNet-Core hat Daniel Sialkowski geschrieben. Marvin Menzerath programmiert die Weboberfläche. Mittlerweile wird der Core von Philipp Thiel und Ralf Wilke gepflegt.

Auf der 2. Hamnet-Tagung hat Ralf Wilke DH3WR die Software vorgestellt. Die Folien können hier heruntergeladen werden.

 

DAPNET Core - Übersicht der Software-Architektur und Netzstruktur

Wie auch im alten Funkrufmaster ist die Software so geschrieben, dass ein Verbundnetz von Knoten (hier Cores genannt) aufgebaut wird. An diese Cores sind die Sender angebunden. Die Cores sind über eine Cluster-Verbindung miteinander vernetzt und synchronisieren ihre Daten automatisch. Fällt ein Teils des Clusters aus dem Verbund, so können weiterhin an die lokalen Sender Rufe übermittelt werden, aber es können keine Änderungen an Konfigurationen durchgeführt werden. Nach einer Wiederherstellung der Verbindung zum Cluster wird der Datenbestand automatisch aktualisiert.

DAPNET Architektur

Bild: Architektur des DAPNET

 

Schnittstelle zum Core-Cluster über REST-API

Zur Kommunikation mit der Weboberfläche und mit anderen Anwendungen zur Dateneinspeisung ist eine REST-API implementiert.

DAPNET REST API

Bild: REST API des DAPNET Core mit möglichen Anwendungen

 

DAPNET Web - Grafische Weboberfläche zur Bedienung

Zur Benutzerinteraktion und zum Konfigurieren wurde eine Web-Oberfläche geschrieben. Diese erlaubt es, alle Funktionen bequem über einen Browser zu steuern. Diese sind unter anderem:

  • Benutzer-Authetifizierung
  • Benutzer-Verwaltung
  • Sender-Verwaltung
  • Absenden von Rufen
  • Inhaltserstellung für die Skyper-Rubriken
  • Kartendarstellung der Sender und DAPNET Cores
  • Abdeckungsdarstellung ähnlich zur bereits implementierten Variante in der HamnetDB, gerade in Arbeit

Wir zeigen wir hier einige Screenshots:

DAPNet Screenshot 1 DAPNet Screenshot 2 DAPNet Screenshot 3 DAPNet Screenshot 4

 

Erreichbarkeit der Benutzeroberfläche

 

Adresse für zur Anbindung von Sendern

Um Sender anzubinden, kann man als Default-Knoten db0sda nehmen.

Typ Hostname IP  Port
Internet dapnet.afu.rwth-aachen.de 137.226.79.100 43434
Hamnet dapnet.db0sda.ampr.org 44.225.164.27 43434

 

DAPNET Proxy - Ein Proxy für alte Sender-Software

Mit der Version 1.1.0 des DAPNET-Cores wurde die Rummigkeit des Verbindungsaufbaus zwischen Core und Sender umgekehrt. Damit können sich nun die Sender selbstständig mit dem Core verbinden und brauchen keine feste IP mehr. Für Software auf Sendern, die nicht auf diese neue Variante umgestellt werden kann, hat Philipp Thiel einen Proxy geschrieben, der sich zwischen Core und Sender schaltet lässt und zu beiden aktiv eine Verbindung aufbaut.

 

Status der Entwicklung, Veröffentlichungplan und Download

Bezeichnung Entwicklungsstatus Veröffentlichungsstatus Download
DAPNET Core fertig veröffentlicht https://github.com/DecentralizedAmateurPagingNetwork/Core/releases
DAPNET Web Oberfläche fertig veröffentlicht https://github.com/DecentralizedAmateurPagingNetwork/Web/releases
DAPNET Proxy
fertig veröffentlicht https://github.com/rwth-afu/raspager-proxy

 

Anbindung von Funkruf-Sendern

Was ist zu tun, wenn ich meinen bestehenden Sender an das neue DAPNET anschließen möchte?

RaspiPlusPasPagerC9000 kleinNeue Hardware - RasPagerC9000

Wer einen C9000 mit einer RPC-Karte oder der AATIS-Variante hat, kann diesen mittels eines Raspberry Pi und einer "RasPagerC9000" genannten Aufsteckplatine auf IP umbauen. Mehr Informationen gibt es auf der Projektseite.

 

Neue Hardware - RasPager

Christian Jansen hat einen 10 mW Sender als Aufsteckplatine für den Raspberry Pi entwickelt. Sie kann hier bezogen werden. Als Software empfehlen wir den RustPager. Bitte zur Zeit den Branch "client-auth" verwenden. Die Java-Version wird zur Zeit nur noch über den DAPNET-Proxy unterstützt.

 

Frontansicht kleinNeue Hardware - SDR Pager

Wer ein entsprechendes FM-Funkgeräte hat, kann mittels eines Raspberry Pis und der onboard Soundkarte einen Funkrufsender bauen. Mehr Informationen auf der Projektseite. Als Software empfehlen wir den RustPager. Bitte zur Zeit den Branch "client-auth" verwenden. Die Java-Version SDRPager wird zur Zeit nur noch über den DAPNET-Proxy unterstützt.

 

Alte Hardware - C9000, PR340 und ähnliche AX.25 KISS Interface Geräte

Für diese Geräte-Arten ist etwas mehr Aufwand nötig. Die Möglichkeiten sind:

Zentrale Anbindung von AX.25 Sendern über db0sda.ampr.org

Wenn ein Sender über das alte Packet-Radio Netz über IGATE erreichbar ist, kann dieser von Aachen aus mit Daten versorgt werden. Bitte dazu "db0sda-12" als Master eintragen und Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! eine Email schicken. Der Sender wird dann eingetragen.

Eigenes Interface von AX.25 nach TCP

Wenn die IGATE-Verbindung nicht möglich oder gewünscht ist, kann man auch selbst zum Beispiel mit einem Raspberry Pi ein entsprechendes Interface erstellen. Die Schritte dazu sind:

  1. Verbinden des Senders mittels USB-Seriell-Adapter
  2. Aufsetzen eines ax0-Kernel-Netzwerk-Devices mit kissattach
  3. Installieren von xinetd
  4. Einfügen von unten stehender Datei nach /etc/xinetd.d
  5. Verwendung des DAPNET-Proxy, um sich mit dem Core zu verbinden
  6. Sender selbst eintragen oder durch Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! eintragen lassen

# description: AX.25 Interface to DB0SDA C9000
service rpc_db0sda
{
disable = no
type = UNLISTED
port = 19999
id = funkruf
socket_type = stream
protocol = tcp
user = root
wait = no
server = /usr/bin/axcall
server_args = -r -S -R -s db0sda-12 -r ax0 db0sda-7
}

Dabei ist db0sda-12 das eigene Rufzeichen, ax0 das AX.25 Kernel-Interface und db0sda-7 der Connect-Path inkl. Zielrufzeichen.

WICHTIG: Man baucht eben dieser Lösung seit der Umstellung der Richtung des Verbindungsaufbaus zusätzlich den dapnet-proxy.

 

Update-Prozedur

Bei Updates kann sich die im Cluster verteilte Datenstruktur ändern. Um Konsistenz zu wahren, wird nun automatisch vom Programm die Versionsnummer an die Cluster-ID angehängt. Somit können sich nur gleiche Versionen miteinander verbinden. Der Eintrag in config/ClusterConfig.xml muss in

<!--Enter here NodeName@ClusterName -->
<pbcast.GMS name="rufzeichen@DAPNET"
print_local_addr="false"/>
</config>

geändert werden, wobei rufzeichen entsprechend zu ersetzen ist.

Funkrufe per Skript aussenden

Natürlich ist auch die beim alten FunkrufMASTER vorhandene Funktion einer automatisierten Eingabe von Daten implementiert. Dazu wird die REST-API verwendet. Ein Beispiel zum Versenden von Rufen ist:

curl -H "Content-Type: application/json" -X POST -u USER:PASSWORD -d '{ "text": "FUNKRUFTEXT", "callSignNames": ["RUFZEICHEN"], "transmitterGroupNames": ["SENDERGRUPPENNAME"], "emergency": false }' URL/calls

Dabei sind die rot geschriebenen Zeichenketten wie folgt zu ersetzen:

  • USER: Ihr Benutzername im DAPNET
  • PASSWORT: Ihr Passwort im DAPNET
  • FUNKRUFTEXT: Der auszusendende Text, max. 80 Zeichen
  • RUFZEICHEN: Das Empfänger-Rufzeichen
  • SENDERGRUPPENNAME: Die zu verwendende Sendergruppe, im Zweifel All
  • URL: URL der REST-API z.B. http://db0sda.ampr.org:8080 oder aus dem Internet http://www.hampager.de:8080

Monitoring / Überwachung

Die Überwachung der Sender ist über die REST-API sehr einfach möglich. Wir benutzen Nagios, daher wird hier der Weg entsprechend beschrieben. Zunächst ist das Plugin check_http_json zu installieren.

Dann ist in commands.cfg das Kommando hinzuzufügen.

# 'check_http_json' command definition
define command{
command_name check_http_json
command_line /usr/lib/nagios/plugins/check_http_json -H '$HOSTNAME$' -P $ARG1$ -p $ARG2$ -B $USER12$:$USER13$ -Q "$ARG3$,$ARG4$"
}

Dabei bedeuten die Variablen:

  • ARG1: Port der REST API des DAPNET-Core
  • ARG2: HTTP Pfad, hier transmitters/db0kwe Der Wert ist entsprechend mit dem Sender Namen zu ersetzen.
  • ARG3: status (hier ist der Wert aus der JSON-Antwort zu verwenden, für den Sender-Status ist es status .)
  • ARG4: ONLINE (Siehe ARG3)
  • USER12: in resource.cfg definierter Wert für den API Benutzernamen
  • USER13: in resource.cfg definierter Wert für das API Benutzerpassword

Anschließend ist der Service zu erstellen:

# DAPNET Transmitter db0kwe
define service {
use generic-service-rwthafu ; Name of service template to use
host_name db0sda.ampr.org
service_description Funkrufsender DB0KWE
check_command check_http_json!8080!transmitters/db0kwe!status!ONLINE
}

Fertig:

nagios dapnet check example

 

Aktuelle Seite: Home Projekte Funkruf Pager POCSAG Funkrufmaster 2.0 DAPNET