fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo_dia2gsup/+/40126?usp=email )
Change subject: osmo_dia2gsup: disable Nagle for TCP/SCTP by default ......................................................................
osmo_dia2gsup: disable Nagle for TCP/SCTP by default
Disable the Nagle's algorithm by default in order to reduce latency of the DIAMETER peer. Allow re-enabling it via the environment parameter 'diameter_nodelay' (false enables the Nagle).
Change-Id: I1e62cdbcbbdb29a0a98f390b33cf14592079d579 --- M src/osmo_dia2gsup.erl 1 file changed, 15 insertions(+), 3 deletions(-)
Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve
diff --git a/src/osmo_dia2gsup.erl b/src/osmo_dia2gsup.erl index e38f5e3..4f7f21f 100644 --- a/src/osmo_dia2gsup.erl +++ b/src/osmo_dia2gsup.erl @@ -47,6 +47,7 @@ -export([code_change/3, terminate/2]).
-define(SERVER, ?MODULE). +-define(ENV_DEFAULT_NODELAY, true).
% Diameter application definitions
@@ -147,9 +148,7 @@ Proto = get_env(diameter_proto, sctp), ConnectTimer = get_env(diameter_connect_timer, 30000), TransOpts = [{transport_module, tmod(Proto)}, - {transport_config, [{ip, parse_addr(LAddr)}, - {port, LPort}, - {reuseaddr, true}]}, + {transport_config, tcfg(Proto, LAddr, LPort)}, {connect_timer, ConnectTimer}], {ok, _} = diameter:add_transport(Name, {listen, TransOpts}), lager:info("Diameter HSS Application started on IP ~s, ~p port ~p~n", @@ -158,6 +157,19 @@ tmod(tcp) -> diameter_tcp; tmod(sctp) -> diameter_sctp.
+tcfg(tcp, LAddr, LPort) -> + Cfg = #{nodelay => get_env(diameter_nodelay, ?ENV_DEFAULT_NODELAY)}, + tcfg(Cfg, LAddr, LPort); + +tcfg(sctp, LAddr, LPort) -> + Cfg = #{sctp_nodelay => get_env(diameter_nodelay, ?ENV_DEFAULT_NODELAY)}, + tcfg(Cfg, LAddr, LPort); + +tcfg(Cfg, LAddr, LPort) when is_map(Cfg) -> + maps:to_list(Cfg#{ip => parse_addr(LAddr), + port => LPort, + reuseaddr => true}). + parse_addr(any) -> any; parse_addr(localhost) -> localhost;