mirror of
https://github.com/novatiq/packages.git
synced 2026-04-30 15:38:40 +01:00
udpspeeder: Add new package udpspeeder to implement Forward Error Correction (FEC) for UDP VPNs like OpenVPN
Maintainer: @codemarauder Compile tested: Yes Run tested: x86_64 PCEngines APU Description: A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction,for All Traffics(TCP/UDP/ICMP) It does it by sending redundant packets and re-arranging them to account for packet loss over the link. It uses Reed–Solomon code. Signed-off-by: Nishant Sharma <codemarauder@gmail.com>
This commit is contained in:
Executable
+114
@@ -0,0 +1,114 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
# Copyright (C) 2020 Nishant Sharma <nishant@hopbox.in>
|
||||
|
||||
START=89
|
||||
STOP=11
|
||||
|
||||
USE_PROCD=1
|
||||
PROG=/usr/bin/udpspeeder
|
||||
|
||||
validate_udpspeeder_section() {
|
||||
uci_validate_section udpspeeder udpspeeder "${1}" \
|
||||
'enabled:bool:0' \
|
||||
'server:bool:0' \
|
||||
'mode:integer:0' \
|
||||
'mtu:integer:1250' \
|
||||
'timeout:integer:8' \
|
||||
'local:string' \
|
||||
'remote:string' \
|
||||
'report:integer:10' \
|
||||
'disable_obscure:bool:0' \
|
||||
'interval:integer:0' \
|
||||
'fec:string:20:10' \
|
||||
'disable_fec:bool:0' \
|
||||
'sock_buf:integer:1024' \
|
||||
'log_level:integer:4' \
|
||||
'decode_buf:integer:2000' \
|
||||
'fix_latency:bool:0' \
|
||||
'queue_len:integer:200'
|
||||
}
|
||||
|
||||
start_instance() {
|
||||
|
||||
local section="$1"
|
||||
|
||||
local server mode mtu timeout local remote report disable_obscure fifo interval fec disable_fec sock_buf queue_len \
|
||||
decode_buf sock_buf log_level enabled
|
||||
|
||||
fifo="/tmp/udpspeeder-${section}.fifo"
|
||||
|
||||
validate_udpspeeder_section $section || {
|
||||
echo "validation failed"
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ "${enabled}" -ne 1 ]
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param respawn
|
||||
procd_set_param stderr 1
|
||||
procd_set_param stdout 1
|
||||
|
||||
procd_set_param command "${PROG}"
|
||||
|
||||
if [ "${server}" -eq 1 ]
|
||||
then
|
||||
procd_append_param command -s
|
||||
else
|
||||
procd_append_param command -c
|
||||
fi
|
||||
|
||||
if [ "${disable_fec}" -eq 1 ]
|
||||
then
|
||||
procd_append_param command --disable-fec
|
||||
else
|
||||
procd_append_param command --fec "${fec}"
|
||||
fi
|
||||
|
||||
if [ "${fix_latency}" -eq 1 ] && [ "${mode}" -eq 0 ]
|
||||
then
|
||||
procd_append_param command --fix-latency
|
||||
fi
|
||||
|
||||
if [ "${disable_obscure}" -eq 1 ]
|
||||
then
|
||||
procd_append_param command --disable-obscure
|
||||
fi
|
||||
|
||||
procd_append_param command -l "${local}"
|
||||
procd_append_param command -r "${remote}"
|
||||
procd_append_param command --mode "${mode}"
|
||||
procd_append_param command --report "${report}"
|
||||
procd_append_param command --interval "${interval}"
|
||||
procd_append_param command --mtu "${mtu}"
|
||||
procd_append_param command --sock-buf "${sock_buf}"
|
||||
procd_append_param command --decode-buf "${decode_buf}"
|
||||
procd_append_param command --queue-len "${queue_len}"
|
||||
procd_append_param command --log-level "${log_level}"
|
||||
procd_append_param command --fifo "${fifo}"
|
||||
|
||||
# procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
start_service() {
|
||||
|
||||
config_load 'udpspeeder'
|
||||
config_foreach start_instance 'udpspeeder'
|
||||
|
||||
}
|
||||
|
||||
stop_service()
|
||||
{
|
||||
service_stop ${PROG}
|
||||
}
|
||||
|
||||
service_triggers()
|
||||
{
|
||||
procd_add_reload_trigger "udpspeeder"
|
||||
procd_add_validation validate_udpspeeder_section
|
||||
}
|
||||
Reference in New Issue
Block a user