fixeria submitted this change.
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(-)
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;
To view, visit change 40126. To unsubscribe, or for help writing mail filters, visit settings.