Reflector de voz digital multiprotocolo universal
El servidor reflector de puerta de enlace multiprotocolo URF, urfd , es parte del sistema de software para una red de voz digital. Las fuentes se publican bajo licencias GPL.
Esta bifurcación de URFD es compatible con todos los modos que se utilizan actualmente en la radioafición: D-Star, DMR, YSF, P25, NXDN, M17 y USRP (para conexiones a nodos AllStar, etc.). Toda la transcodificación está centralizada, por lo que no hay doble transcodificación hacia/desde ningún modo. Esta bifurcación de urfd, junto con la rama swambe2 de mi repositorio tcd, contiene muchos cambios con respecto al original:
Reflector P25 integrado con software imbe vocoder.
Reflector NXDN integrado
Reflector USRP integrado
La codificación de voz de software opcional de AMBE+2 (DMR/YSF/NXDN) se puede realizar mediante la biblioteca md380_vocoder. Esto significa que solo se requiere 1 dongle USB dv por módulo. Esto también hace que una plataforma ARM (como Rpi) sea un requisito. Consulte el README de tcd para obtener más detalles.
Numerosas correcciones, como el reconocimiento de entrada tardía de modos como YSF, que de otro modo son ignorados por el reflector original cuando no se ha recibido ningún encabezado.
Los Clientes USRP se leen desde un archivo definido en Main.h. El formato de este archivo es ipaddr;port; un host por línea, ej:
192.168.1.100;32000; 192.168.1.101;32001;
El resto de este LÉAME no ha cambiado respecto al original.
Esto construirá un nuevo tipo de reflector de voz digital. Basado en el nuevo-xlxd de N7TAE , que, a su vez, se basa en el primer reflector multiprotocolo, xlxd , urfd admite todos los protocolos de sus predecesores, así como los protocolos M17, ¡ solo voz y voz + datos ! Una parte clave de esto es el transcodificador híbrido, tcd, que está en un repositorio separado. URFd no es compatible con new-xlxd ni con xlxd. No puede vincular urfd con xlxd. Este reflector se puede construir sin un transcodificador, pero los clientes solo escucharán a otros clientes que usen el mismo protocolo. Tenga en cuenta que actualmente, urfd solo admite el transcodificador tcd cuando se ejecuta localmente. Para obtener el mejor rendimiento, urfd y tcd utilizan sockets UNIX DGRAM para comunicaciones entre procesos. Estos sockets de base kernel son significativamente más rápidos que los sockets UDP/IP convencionales. Cabe señalar que tcd admite dispositivos DVSI-3003 y DVSI-3000, que utiliza para la codificación de voz AMBE.
Esta compilación admite la operación de doble pila , por lo que el servidor en el que se ejecuta debe tener una dirección enrutable IPv4 e IPv6 si va a configurar un reflector de doble pila. URF puede admitir enlaces DExtra salientes, agregando un nuevo tipo DExtra Peer y tiene muchos cambios diseñados para aumentar la confiabilidad y la estabilidad.
Hay muchas mejoras de urfd sobre xlxd, algunas de las cuales fueron heredadas de new-xlxd:
- Casi todos los contenedores std::vector han sido reemplazados por contenedores más apropiados.
- No se derivan clases de ningún contenedor estándar.
- Para la concurrencia, es decir , la gestión de subprocesos, las llamadas a la biblioteca de subprocesos estándar (std::thread) han sido reemplazadas por std::future.
- La memoria administrada, std::unique_ptr y std::shared_ptr, se usa para reemplazar la necesidad de llamadas a new y delete .
- Su reflector se puede configurar con hasta 26 módulos, de la A a la Z y con tan solo un módulo. Para otras opciones, los módulos de configuración no tienen que ser contiguos. Por ejemplo, podría configurar los módulos A, B, C y E.
Solo se admiten los sistemas operativos basados en systemd. Se recomienda Debian o Ubuntu. Si desea instalar esto en un sistema operativo no basado en systemd, está solo. Además, de forma predeterminada, tcd y urfd se compilan sin compatibilidad con gdb. Puede agregar compatibilidad con la depuración en el script de configuración, ./rconfig
. Finalmente, este repositorio está diseñado para que no tenga que modificar ningún archivo en el repositorio cuando construya su sistema. Cualquier archivo que necesite modificar para configurar correctamente su reflector será un archivo que copie de su repositorio clonado localmente. Esto facilita la actualización del código fuente cuando se actualiza este repositorio. Siga las instrucciones a continuación para construir su reflector URF de transcodificación.
Uso
Los paquetes que se describen en este documento están diseñados para instalar software de servidor que se utiliza para la infraestructura de red de D-Star. ¡Requiere una conexión a Internet las 24 horas del día, los 7 días de la semana que puede admitir hasta tres módulos transcodificados y hasta 23 módulos más no transcodificados para conectar repetidores y dongles de punto de acceso!
- El servidor puede construir un reflector que admita IPv4, IPv6 o ambos (doble pila).
- Las direcciones IP públicas deben tener un registro DNS que debe publicarse en los archivos de host comunes.
Instalación
A continuación se encuentran las instrucciones para construir un reflector URF. Si está planeando un reflector URF sin un transcodificador, puede ayudar a sus usuarios nombrando módulos con nombres que sugieran qué protocolo es bienvenido. Usted nombra los módulos en el archivo config.inc.php que se menciona a continuación.
El transcodificador está en un repositorio separado, pero compilará, instalará y monitoreará el transcodificador y el reflector desde dos scripts diferentes, rconfig y radmin en este repositorio. Debe revisar el archivo README.md en el repositorio tcd para comprender el transcodificador .
Después de una instalación limpia de Debian, asegúrese de ejecutar la actualización y la actualización
sudo apt update sudo apt upgrade
Paquetes requeridos (algunos de estos probablemente ya estarán instalados)
sudo apt install git sudo apt install apache2 php5 sudo apt install build-essential sudo apt install libmariadb-dev-compat
Soporte de conexión directa YSF
Se necesita lo siguiente si planea admitir la base de datos de registro de frecuencia local de YSF para aquellos clientes de YSF que desean conectarse directamente a URF. También deberá instalar las páginas de registro de frecuencia del cliente en su servidor web. Esto se debe a que el protocolo WiresX proporciona la frecuencia operativa a los clientes que se conectan.
sudo apt install php-mysql mariadb-server mariadb-client
Descarga los repositorios
git clone https://github.com/n7tae/urfd.git
Y, si es necesario, el transcodificador híbrido:
git clone https://github.com/n7tae/tcd.git
Cree y edite su lista negra, lista blanca y archivos de enlace
Primero, vaya al directorio de compilación del reflector:
cd urfd/reflector
El archivo de la lista negra define los indicativos que no pueden vincularse o transmitirse. El archivo de la lista blanca define los indicativos que pueden vincularse y transmitir. Ambos archivos admiten el asterisco como comodín. El archivo de la lista negra suministrado está vacío y el archivo de la lista blanca suministrado contiene una sola definición, *, que permitirá que cualquier indicativo se enlace y transmita, sin bloquear a nadie. El archivo interlink define posibles enlaces Brandmeister, XRF y URF. El archivo de terminal define operaciones para el modo Terminal y Punto de acceso de Icom, a veces llamado G3 . Este protocolo requiere recursos de conexión significativamente más altos que cualquier otro modo, por lo que es posible construir un reflector URF sin soporte G3.
cp ../config/urfd.blacklist . cp ../config/urfd.whitelist . cp ../config/urfd.interlink . cp ../config/urfd.terminal .
Si no va a admitir la vinculación G3, no necesita copiar el archivo .terminal. Usa tu editor favorito para modificar cada uno de estos archivos. Si desea una red totalmente abierta, los archivos de la lista negra y la lista blanca están listos para funcionar. La lista negra determina qué indicativos no pueden usar el reflector. La lista blanca determina qué indicativos pueden usar el reflector. El archivo de interconexión configura la interconexión URF<—>URF y/o la vinculación entre pares XRF saliente.
Cuando haya terminado con los archivos de configuración y esté listo para iniciar el proceso de instalación, puede volver al directorio del repositorio principal:
cd ..
Configurando tu reflector
¡Configurar, compilar y mantener la construcción de su reflector es fácil! Inicie el script de configuración en el directorio base de su repositorio clonado:
./rconfig
Solo hay algunas cosas que necesitan ser especificadas. Los más importantes son el indicativo del reflector y las direcciones IP para los puertos de escucha IPv4 e IPv6 y un puerto transcodificador, si hay un transcodificador. La operación de doble pila se habilita especificando una dirección IPv4 e IPv6. La pila única de solo IPv4 se puede especificar dejando la dirección IPv6 configurada en none
. Incluso es posible operar en una configuración solo de IPv6 dejando la dirección IPv4 en el valor predeterminado none
. Para la mayoría de los usuarios, puede definir las direcciones IP como «cualquiera», pero puede especificar direcciones IPv4 e IPv6 específicas, si es necesario para su sitio de instalación.
Puede configurar cualquier módulo, de la A a la Z. No tienen que ser contiguos. Si su reflector está configurado con un transcodificador, puede especificar qué módulos configurados se transcodificarán. Se pueden transcodificar hasta tres módulos. También hay indicadores de verdadero/falso para evitar la compatibilidad con G3 y para que pueda crear ejecutables que admitan la depuración de gdb.
Puede soportar su propia base de datos de frecuencias YSF. Esto es muy útil para puntos de acceso que utilizan enlaces YSF. Estos hotspots vinculados pueden usar el comando WiresX en sus radios para poder conectarse a cualquier módulo URF configurado. Los usuarios pueden registrar su frecuencia de TX y RX (generalmente la misma para la mayoría de las configuraciones de puntos de acceso) en http:< urf url >/wiresx/login.php. Una vez que se registra su punto de acceso, URF devolverá la frecuencia correcta para su punto de acceso cuando se envíe un comando WiresX al reflector. Deberá habilitar la vinculación automática de YSF, especificar un módulo predeterminado y definir un nombre de base de datos, un usuario y una contraseña de usuario. Cuando escribe su configuración URF, una base de datos configure.sqlEl script se construirá no solo para crear la base de datos y el usuario de la base de datos, sino también la tabla para los datos de frecuencia de puntos calientes.
Asegúrese de escribir los archivos de configuración y revisar los hasta siete archivos de configuración diferentes que se crean. El primer archivo, reflector.cfg, es el archivo de memoria para rconfig, de modo que si vuelve a iniciar ese script, recordará cómo dejó las cosas. Hay uno o dos .h
archivos para reflector y tcd y hay uno o dos .mk
archivos para reflector y tcd makefiles. No debe modificar estos archivos a mano a menos que realmente sepa exactamente cómo funcionan. El script rconfig no se iniciará si detecta que ya se está ejecutando un servidor URF. Puede anular este comportamiento en el modo experto: ./rconfig expert
. Si cambia la configuración después de haber compilado el código, es más seguro si limpia el repositorio y luego lo vuelve a compilar.
Completando e instalando su sistema
Después de haber escrito sus archivos de configuración, puede compilar e instalar su sistema:
./radmin
Utilice este comando para compilar e instalar su sistema. También se puede utilizar para desinstalar su sistema. Utilizará la información en reflector.cfg para realizar cada tarea. Este menú de radmin también puede realizar otras tareas, como reiniciar el reflector o el proceso del transcodificador. También se puede usar para actualizar el software, si el sistema está desinstalado.
Detener e iniciar los servicios manualmente
sudo systemctl stop urfd # (or xrfd) sudo systemctl stop tcd
Puede iniciar cada componente reemplazándolo stop
con start
, o puede reiniciar cada uno usando restart
.
Copie el tablero a /var/www
Dado que URF es un superconjunto de XLX, aún podemos aprovechar la infraestructura XLX existente. De hecho, el archivo xml generado por urfd se reporta a sí mismo como un reflector XLX. Esto cambiará en algún momento.
sudo cp -r ~/urfd/dashboard /var/www/urf # or whatever your html server uses
Tenga en cuenta que su directorio raíz www podría estar en otro lugar. Hay un archivo que necesita configuración. Edite los archivos copiados, no los del repositorio:
- pgs/config.inc.php – Como mínimo, establezca su dirección de correo electrónico, país y comentario.
NO habilite la función «llamar a casa» a menos que esté seguro de que no infringirá un reflector XLX o XRF existente con el mismo sufijo indicativo. Si no entiende lo que esto significa, ¡no establezca $CallingHome['Active']
en verdadero!
Si ha configurado la compatibilidad con el registro de frecuencia de puntos de acceso, copie recursivamente el directorio wiresx donde se encuentra el archivo index.php para su tablero. También desde el directorio de compilación, cree la base de datos y el usuario de la base de datos y la tabla de frecuencia de puntos de acceso:
sudo mysql < configure.sql
El archivo configure.sql será generado automáticamente por el script rconfig si ha habilitado la base de datos local de YSF .
Actualización de urfd y tcd
La actualización se puede realizar completamente en el script de radmin, pero en caso de que haya una nueva versión del script de radmin, puede comenzar primero con un simple archivo git pull
. Si algún archivo .h o .cpp tiene actualizaciones, puede iniciar radmin y hacer una limpieza y compilación y luego desinstalar e instalar: cl, co, us, is
. Siga eso con un rl
para ver el registro del reflector, o un rt
para ver el transcodificador mientras aparece.
Si rconfig se actualizó con el git pull
, sería conveniente ejecutarlo primero para ver si se agregaron nuevas opciones a la base de código. Si es así, asegúrese de escribir los nuevos archivos de configuración antes de salir de rconfig. Luego puede reconstruir y reinstalar su reflector.
Si cambia alguna configuración después de compilar su reflector, asegúrese de limpiar/compilar/desinstalar/reinstalar para sincronizar su sistema con la nueva configuración.
Configuración del cortafuegos
El servidor URF requiere que los siguientes puertos estén abiertos y reenviados correctamente para el tráfico de red entrante y saliente:
TCP port 80 (http) optional TCP port 443 (https)
UDP port 10002 (BM connection)
UDP port 10017 (URF interlinking)
UDP port 42000 (YSF protocol)
UDP port 17000 (M17 protocol)
UDP port 30001 (DExtra protocol)
UPD port 20001 (DPlus protocol)
UDP port 30051 (DCS protocol)
UDP port 8880 (DMR+ DMO mode)
UDP port 62030 (MMDVM protocol)
UDP port 12345 - 12346 (Icom Terminal presence and request port)
UDP port 40000 (Icom Terminal dv port)
Servidor Maestro YSF
Atención, el Servidor URF actúa como un Maestro YSF, que proporciona salas de 26 hilos-x. No tiene nada que ver con la red normal de YSFReflector, por lo que no necesita registrar su URF en ysfreflector.de.
tareas pendientes
Eventualmente admitiré una opción de transcodificador remoto, para que pueda, por ejemplo, ejecutar urfd en un centro de datos y luego ejecutar el transcodificador en algún lugar al que tenga acceso físico para que pueda conectar sus codificadores de voz AMBE. No recomiendo esto ya que agregará una latencia innecesaria y variable a su reflector.
El equipo de M17 trabajará en grandes cambios para el tablero. ¡No puedo esperar a ver qué se les ocurre!
Derechos de autor
- Copyright © 2016 Jean-Luc Deltombe LX3JL y Luc Engelmann LX1IQ
- Copyright © 2021 Thomas A. Early N7TAE
Visitas: 126