From debdc682e15227e4c7ce8ff40c6e35df7feb3d9c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 22 Jul 2022 15:27:03 +0200 Subject: [PATCH 1/3] Fix adding latency to interface --- luci-app-openmptcprouter/root/etc/init.d/openmptcprouter | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 2463d20fa..9954d850a 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -104,7 +104,7 @@ omr_set_settings() { tc qdisc del dev ${ifname} root netem 2>&1 >/dev/null fi if [ "$addlatency" != "0" ]; then - if [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then + if [ "$(tc qdisc show dev $ifname | grep delay)" = "" ]; then tc qdisc add dev ${ifname} root netem delay ${addlatency}ms 2>&1 >/dev/null elif [ "$(tc qdisc show dev $ifname | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then tc qdisc replace dev ${ifname} root netem delay ${addlatency}ms 2>&1 >/dev/null From 966d58c0cf201571023c41db707a82f6489d0f12 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 22 Jul 2022 15:28:56 +0200 Subject: [PATCH 2/3] Add mptcp_stale_loss_cnt sysctl setting for 5.15 kernel --- luci-app-mptcp/luasrc/model/cbi/mptcp.lua | 5 +++++ mptcp/files/etc/init.d/mptcp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index e401c59f0..b95eca4ff 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -65,6 +65,11 @@ if uname.release:sub(1,4) == "5.15" then o.datatype = "uinteger" o.rmempty = false o.default = 1 + + o = s:option(Value, "mptcp_stale_loss_cnt", translate("The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 4 else o = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses")) o.datatype = "uinteger" diff --git a/mptcp/files/etc/init.d/mptcp b/mptcp/files/etc/init.d/mptcp index 29f4a354e..4f26ff74e 100755 --- a/mptcp/files/etc/init.d/mptcp +++ b/mptcp/files/etc/init.d/mptcp @@ -29,6 +29,7 @@ global_multipath_settings() { config_get mptcp_rr_cwnd_limited globals mptcp_rr_cwnd_limited config_get mptcp_rr_num_segments globals mptcp_rr_num_segments config_get mptcp_version globals mptcp_version "0" + config_get mptcp_stale_loss_cnt globals mptcp_stale_loss_cnt "4" [ "$multipath" = "enable" ] && multipath_status=1 @@ -51,6 +52,7 @@ global_multipath_settings() { ip mptcp limits set add_addr_accepted $mptcp_add_addr_accepted subflows $mptcp_subflows 2>&1 >/dev/null [ -z "$mptcp_add_addr_timeout" ] || sysctl -qew net.mptcp.add_addr_timeout="$mptcp_add_addr_timeout" [ -z "$mptcp_checksum" ] || sysctl -qew net.mptcp.checksum_enabled="$mptcp_checksum" + [ -z "$mptcp_stale_loss_cnt" ] || sysctl -qew net.mptcp.stale_loss_cnt="$mptcp_stale_loss_cnt" fi [ -z "$congestion" ] || sysctl -qew net.ipv4.tcp_congestion_control="$congestion" } From a614a47da2720564d6f2d249b247cf3fd3264240 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 23 Jul 2022 09:23:27 +0200 Subject: [PATCH 3/3] Add latency in post-tracking --- .../usr/share/omr/post-tracking.d/post-tracking | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index c2f77fe34..615c0fad2 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -1556,6 +1556,21 @@ fi fi } +if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then + addlatency=$(uci -q get network.${OMR_TRACKER_INTERFACE}.addlatency) + [ -z "$addlatency" ] && addlatency="0" + if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | grep delay)" != "" ]; then + tc qdisc del dev ${OMR_TRACKER_DEVICE} root netem 2>&1 >/dev/null + fi + if [ "$addlatency" != "0" ]; then + if [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | grep delay)" = "" ]; then + tc qdisc add dev ${OMR_TRACKER_DEVICE} root netem delay ${addlatency}ms 2>&1 >/dev/null + elif [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then + tc qdisc replace dev ${OMR_TRACKER_DEVICE} root netem delay ${addlatency}ms 2>&1 >/dev/null + fi + fi +fi + # If a service is down, force restart it if [ -f /etc/init.d/shadowsocks-libev ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep ss-redir)" = "" ] && [ "$(pgrep ss-local)" = "" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ]; then _log "Can't find Shadowsocks, restart it..."