mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add round robin MPTCP scheduler options
This commit is contained in:
parent
5a97ebfff9
commit
3b1c0ae6c8
2 changed files with 66 additions and 43 deletions
|
@ -9,58 +9,77 @@ m = Map("network", translate("MPTCP"), translate("Networks MPTCP settings. Visit
|
|||
local unameinfo = nixio.uname() or { }
|
||||
|
||||
s = m:section(TypedSection, "globals")
|
||||
local mtcpg = s:option(ListValue, "multipath", translate("Multipath TCP"))
|
||||
mtcpg:value("enable", translate("enable"))
|
||||
mtcpg:value("disable", translate("disable"))
|
||||
local mtcpck = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum"))
|
||||
mtcpck:value(1, translate("enable"))
|
||||
mtcpck:value(0, translate("disable"))
|
||||
local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug"))
|
||||
mtcpck:value(1, translate("enable"))
|
||||
mtcpck:value(0, translate("disable"))
|
||||
local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh"))
|
||||
mtcppm:value("default", translate("default"))
|
||||
mtcppm:value("fullmesh", translate("fullmesh"))
|
||||
mtcppm:value("ndiffports", translate("ndiffports"))
|
||||
mtcppm:value("binder", translate("binder"))
|
||||
o = s:option(ListValue, "multipath", translate("Multipath TCP"))
|
||||
o:value("enable", translate("enable"))
|
||||
o:value("disable", translate("disable"))
|
||||
o = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum"))
|
||||
o:value(1, translate("enable"))
|
||||
o:value(0, translate("disable"))
|
||||
o = s:option(ListValue, "mptcp_debug", translate("Multipath Debug"))
|
||||
o:value(1, translate("enable"))
|
||||
o:value(0, translate("disable"))
|
||||
o = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh"))
|
||||
o:value("default", translate("default"))
|
||||
o:value("fullmesh", "fullmesh")
|
||||
o:value("ndiffports", "ndiffports")
|
||||
o:value("binder", "binder")
|
||||
if uname.release:sub(1,4) ~= "4.14" then
|
||||
mtcppm:value("netlink", translate("Netlink"))
|
||||
o:value("netlink", translate("Netlink"))
|
||||
end
|
||||
local mtcpsch = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler"))
|
||||
mtcpsch:value("default", translate("default"))
|
||||
mtcpsch:value("roundrobin", translate("round-robin"))
|
||||
mtcpsch:value("redundant", translate("redundant"))
|
||||
o = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler"))
|
||||
o:value("default", translate("default"))
|
||||
o:value("roundrobin", "round-robin")
|
||||
o:value("redundant", "redundant")
|
||||
if uname.release:sub(1,4) ~= "4.14" then
|
||||
mtcpsch:value("blest", translate("BLEST"))
|
||||
mtcpsch:value("ecf", translate("ECF"))
|
||||
o:value("blest", "BLEST")
|
||||
o:value("ecf", "ECF")
|
||||
end
|
||||
local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries"))
|
||||
mtcpsyn.datatype = "uinteger"
|
||||
mtcpsyn.rmempty = false
|
||||
local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is cubic"))
|
||||
o = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries"))
|
||||
o.datatype = "uinteger"
|
||||
o.rmempty = false
|
||||
o = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is cubic"))
|
||||
local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs")
|
||||
for cong in string.gmatch(availablecong, "[^%s]+") do
|
||||
congestion:value(cong, translate(cong))
|
||||
o:value(cong, translate(cong))
|
||||
end
|
||||
local mtcpfm_subflows = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses"))
|
||||
mtcpfm_subflows.datatype = "uinteger"
|
||||
mtcpfm_subflows.rmempty = false
|
||||
local mtcpfm_createonerr = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout"))
|
||||
mtcpfm_createonerr:value(1, translate("enable"))
|
||||
mtcpfm_createonerr:value(0, translate("disable"))
|
||||
|
||||
local mtcpnd_subflows = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number"))
|
||||
mtcpnd_subflows.datatype = "uinteger"
|
||||
mtcpnd_subflows.rmempty = false
|
||||
o = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses"))
|
||||
o.datatype = "uinteger"
|
||||
o.rmempty = false
|
||||
o.default = 1
|
||||
--o:depends("mptcp_path_manager","fullmesh")
|
||||
|
||||
o = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout"))
|
||||
o:value(1, translate("enable"))
|
||||
o:value(0, translate("disable"))
|
||||
--o:depends("mptcp_path_manager","fullmesh")
|
||||
|
||||
o = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number"))
|
||||
o.datatype = "uinteger"
|
||||
o.rmempty = false
|
||||
o.default = 1
|
||||
--o:depends("mptcp_path_manager","ndiffports")
|
||||
|
||||
o = s:option(ListValue, "mptcp_rr_cwnd_limited", translate("Fill the congestion window on all subflows for round robin"))
|
||||
o:value("Y", translate("enable"))
|
||||
o:value("N", translate("disable"))
|
||||
o.default = "Y"
|
||||
--o:depends("mptcp_scheduler","roundrobin")
|
||||
|
||||
o = s:option(Value, "mptcp_rr_num_segments", translate("Consecutive segments that should be sent for round robin"))
|
||||
o.datatype = "uinteger"
|
||||
o.rmempty = false
|
||||
o.default = 1
|
||||
--o:depends("mptcp_scheduler","roundrobin")
|
||||
|
||||
s = m:section(TypedSection, "interface", translate("Interfaces Settings"))
|
||||
mptcp = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master"))
|
||||
mptcp:value("on", translate("enabled"))
|
||||
mptcp:value("off", translate("disabled"))
|
||||
mptcp:value("master", translate("master"))
|
||||
mptcp:value("backup", translate("backup"))
|
||||
--mptcp:value("handover", translate("handover"))
|
||||
mptcp.default = "off"
|
||||
o = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master"))
|
||||
o:value("on", translate("enabled"))
|
||||
o:value("off", translate("disabled"))
|
||||
o:value("master", translate("master"))
|
||||
o:value("backup", translate("backup"))
|
||||
--o:value("handover", translate("handover"))
|
||||
o.default = "off"
|
||||
|
||||
|
||||
return m
|
||||
|
|
|
@ -10,7 +10,7 @@ USE_PROCD=1
|
|||
. /lib/functions/network.sh
|
||||
|
||||
global_multipath_settings() {
|
||||
local multipath mptcp_path_manager mptcp_schdeduler mptcp_debug congestion mptcp_checksum mptcp_syn_retries mptcp_fullmesh_num_subflows mptcp_fullmesh_create_on_err mptcp_ndiffports_num_subflows
|
||||
local multipath mptcp_path_manager mptcp_schdeduler mptcp_debug congestion mptcp_checksum mptcp_syn_retries mptcp_fullmesh_num_subflows mptcp_fullmesh_create_on_err mptcp_ndiffports_num_subflows mptcp_rr_cwnd_limited mptcp_rr_num_segments
|
||||
local multipath_status=0
|
||||
config_load network
|
||||
config_get multipath globals multipath
|
||||
|
@ -23,6 +23,8 @@ global_multipath_settings() {
|
|||
config_get mptcp_fullmesh_num_subflows globals mptcp_fullmesh_num_subflows
|
||||
config_get mptcp_fullmesh_create_on_err globals mptcp_fullmesh_create_on_err
|
||||
config_get mptcp_ndiffports_num_subflows globals mptcp_ndiffports_num_subflows
|
||||
config_get mptcp_rr_cwnd_limited globals mptcp_rr_cwnd_limited
|
||||
config_get mptcp_rr_num_segments globals mptcp_rr_num_segments
|
||||
|
||||
[ "$multipath" = "enable" ] && multipath_status=1
|
||||
|
||||
|
@ -37,6 +39,8 @@ global_multipath_settings() {
|
|||
[ -z "$mptcp_fullmesh_num_subflows" ] || sysctl -qw /sys/module/mptcp_fullmesh/parameters/num_subflows="$mptcp_fullmesh_num_subflows"
|
||||
[ -z "$mptcp_fullmesh_create_on_err" ] || sysctl -qw /sys/module/mptcp_fullmesh/parameters/create_on_err="$mptcp_fullmesh_create_on_err"
|
||||
[ -z "$mptcp_ndiffports_num_subflows" ] || sysctl -qw /sys/module/mptcp_ndiffports/parameters/num_subflows="$mptcp_ndiffports_num_subflows"
|
||||
[ -z "$mptcp_rr_cwnd_limited" ] || sysctl -qw /sys/module/mptcp_rr/parameters/cwnd_limited="$mptcp_rr_cwnd_limited"
|
||||
[ -z "$mptcp_rr_num_segments" ] || sysctl -qw /sys/module/mptcp_rr/parameters/num_segments="$mptcp_rr_num_segments"
|
||||
}
|
||||
|
||||
interface_macaddr_count() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue