Setting Dscp (tos, QoS) for ssh sockets

Per Hedeland per@REDACTED
Mon Feb 17 16:03:41 CET 2020

On 2020-02-17 11:22, Dmytro Lytovchenko wrote:
 > As we discussed with you before, there are two options right now:
 > 1. From SSH connection handler, using sys module, request its state (private #data{} record) which contains the socket in its 9th field.
 > 2. (Christofer's idea) to replace the socket transport module using undocumented option {transport, {_, Module, _}}
 > Maybe someone sees other ways to do it?

Why would you need to use inet:setopts/2 specifically? Changing DSCP
on the fly is probably not meaningful in general, and from what I know
about your application, not required there (but maybe I'm wrong about

IMHO it would be reasonable to allow most/all options that can be
given to gen_tcp:connect/3,4 and gen_tcp:listen/2 (which both have
'tos' as option), respectively, also for ssh:connect/2,3,4 and
ssh:daemon/2,3 - maybe it is allowed, but if so not documented, as far
as I can see.

Alternatively you can at least for ssh:connect/2,3 apparently pass an
already connected socket from gen_tcp:connect(), where you can pass
'tos' to the latter. It seems the socket that can be passed to
ssh:daemon/2,3 should be from gen_tcp:accept() - it would seem more
natural to me to pass a "listen socket" from gen_tcp:listen() (which
can be passed 'tos'), but I guess you can do the accept-loop outside
ssh and use inet:setopts/2 on the socket from gen_tcp:accept() before
passing it to ssh:daemon/2,3.


 > On Mon, 17 Feb 2020 at 11:12, Christofer Tornkvist (ctornkvi) <ctornkvi@REDACTED <mailto:ctornkvi@REDACTED>> wrote:
 >     Hi,
 >     I would like to set the quality of service flag Dscp of the Tos field in the IP packet
 >     of an Ssh socket with the function inet:setopts(Socket, [{tos, Dscp}]).
 >     It should be possible to set the Dscp per IP packet sent.
 >     How do I get hold of the Ssh socket down in my Ssh channel module ?
 >     Regards
 >     /Christofer

More information about the erlang-questions mailing list