Ookla SpeedTest SDN Endpoint Configuration
Design
In the past, Ookla endpoint was hardcoded within OpenSync. This feature removes the limitation and makes possible that a node may have an Ookla endpoint configured per customer needs (Ookla server in use).
Northbound API
The feature is realized by modifying the Wifi_Speedtest_Config table. This enables the controller to push the Ookla endpoint down to the firmware.
############# Wifi_Speedtest_Config schema #############
testid: "integer"
traffic_cap: "real"
delay: "integer"
test_type: "enum" [ "OOKLA", "MPLAB", "IPERF3_S", "IPERF3_C", "SAMKNOWS" ]
preferred_list: "integer",
select_server_id: "integer",
st_server: "string"
st_port: "integer",
st_len: "integer",
st_parallel: "integer",
st_udp: "boolean"
st_bw: "integer",
st_pkt_len: "integer",
st_dir: "enum" [ "DL", "UL", "DL_UL" ]
# This is the new column using which the controller will have the option to specify an Ookla endpoint
st_endpoint_url: "string"
# However, if the controller pushes an empty config_url column, OpenSync will use the hardcoded endpoint specified in the firmware just like it does now.
############# Wifi_Speedtest_Status schema #############
testid: "integer"
UL: "real"
DL: "real"
server_name: "string"
server_IP: "string"
ISP: "string"
RTT: "real"
jitter: "real"
duration: "real"
timestamp: "integer"
status: "integer"
DL_bytes: "integer"
UL_bytes: "integer"
DL_duration: "real"
UL_duration: "real"
test_type: "enum": [ "OOKLA", "MPLAB", "IPERF3_S", "IPERF3_C", "SAMKNOWS" ]
pref_selected: "boolean"
hranked_offered: "boolean"
DL_pkt_loss: "real"
UL_pkt_loss: "real"
DL_jitter: "real"
UL_jitter: "real"
host_remote: "string" # The new column will be passed to the Ookla binary on the start of the speedtest. Example:
/usr/opensync/bin/ookla -c "$config_url" -fjson -s 99999
# This is a new column, which will tell the controller the Ookla endpoint passed to the binary for the test
endpoint_url: "string"