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"