fixeria has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40019?usp=email )
Change subject: sctp_{client,server}: set sndbuf/recbuf explicitly
......................................................................
sctp_{client,server}: set sndbuf/recbuf explicitly
For some reason, Erlang/OTP does overwrite the OS-default
SO_SNDBUF/SO_RCVBUF values even if the respective socket options
are not given to gen_sctp:open/N explicitly. Even worse, the
receive buffer size is set to a very low value (1024), resulting
in major performance issues when dealing with large packets.
Set both sndbuf/recbuf to 65536 explicitly - this is the value
that Erlang/OTP sets for the sndbuf by default. Allow tuning
sndbuf/recbuf via the environment variables.
Change-Id: I66f4a0f6a2441a3c8a4dbd266da8e44a3860b993
Related: SYS#7288
---
M src/osmo_s1gw_sup.erl
1 file changed, 7 insertions(+), 2 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
fixeria: Looks good to me, approved
diff --git a/src/osmo_s1gw_sup.erl b/src/osmo_s1gw_sup.erl
index 67b6f47..92f908b 100644
--- a/src/osmo_s1gw_sup.erl
+++ b/src/osmo_s1gw_sup.erl
@@ -42,6 +42,7 @@
-define(SERVER, ?MODULE).
-define(ENV_APP_NAME, osmo_s1gw).
+-define(ENV_DEFAULT_SCTP_BUFSZ, 65536).
-define(ENV_DEFAULT_SCTP_NODELAY, true).
-define(ENV_DEFAULT_S1GW_BIND_ADDR, "127.0.1.1").
-define(ENV_DEFAULT_S1GW_BIND_PORT, ?S1AP_PORT).
@@ -89,7 +90,9 @@
-spec client_cfg() -> sctp_client:cfg().
client_cfg() ->
- SockOpts = #{sctp_nodelay => get_env(mme_nodelay, ?ENV_DEFAULT_SCTP_NODELAY)},
+ SockOpts = #{sctp_nodelay => get_env(mme_nodelay, ?ENV_DEFAULT_SCTP_NODELAY),
+ recbuf => get_env(mme_recbuf, ?ENV_DEFAULT_SCTP_BUFSZ),
+ sndbuf => get_env(mme_sndbuf, ?ENV_DEFAULT_SCTP_BUFSZ)},
#{laddr => get_env(mme_loc_addr, ?ENV_DEFAULT_MME_LOC_ADDR),
raddr => get_env(mme_rem_addr, ?ENV_DEFAULT_MME_REM_ADDR),
rport => get_env(mme_rem_port, ?ENV_DEFAULT_MME_REM_PORT),
@@ -98,7 +101,9 @@
-spec server_cfg() -> sctp_server:cfg().
server_cfg() ->
- SockOpts = #{sctp_nodelay => get_env(s1gw_nodelay, ?ENV_DEFAULT_SCTP_NODELAY)},
+ SockOpts = #{sctp_nodelay => get_env(s1gw_nodelay, ?ENV_DEFAULT_SCTP_NODELAY),
+ recbuf => get_env(s1gw_recbuf, ?ENV_DEFAULT_SCTP_BUFSZ),
+ sndbuf => get_env(s1gw_sndbuf, ?ENV_DEFAULT_SCTP_BUFSZ)},
#{laddr => get_env(s1gw_bind_addr, ?ENV_DEFAULT_S1GW_BIND_ADDR),
lport => get_env(s1gw_bind_port, ?ENV_DEFAULT_S1GW_BIND_PORT),
sockopts => maps:to_list(SockOpts),
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40019?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I66f4a0f6a2441a3c8a4dbd266da8e44a3860b993
Gerrit-Change-Number: 40019
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>