[
https://issues.apache.org/jira/browse/DIRMINA-1123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17084160#comment-17084160
]
Marcin L edited comment on DIRMINA-1123 at 4/15/20, 3:10 PM:
-------------------------------------------------------------
Wow this was fast ;).
Let's skip the theory and go straight to practice. I created a simple
NioAcceptor / NioConnector application and created a TCP dumps. The buffers are
set immediately after object creation e.g.
NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReceiveBufferSize(65535 * 2);
NioSocketConnector connector = new NioSocketConnector();
connector.getSessionConfig().setReceiveBufferSize(65535 * 3);
*Case 1*
- no connector receive buffer set
- no acceptor receive buffer set
Connector SYN packet looks correct WS = 256 (Windows default, max 16MB)
Acceptor SYN/ACK packet looks correct d WS = 256 (Windows default, max 16MB)
This is correct behaviour.
*Case 2 (unmodified mina code base)*
- nio connector receive buffer 192kb
- nio acceptor receive buffer 128kb
Connector SYN packet looks correct WS = 4 (max window size can be increasted up
to 256kb)
Acceptor SYN/ACK packet looks wrong WS = 256 (windows default, max 16MB)
This is wrong. Server advertises bad WS.
*Case 3*
Added a small code change in as proof of concept
org.apache.mina.transport.socket.nio.NioSocketAcceptor#open
if (sessionConfig instanceof SocketSessionConfig) {
SocketSessionConfig socketSessionConfig = (SocketSessionConfig) sessionConfig;
if (socketSessionConfig.getReceiveBufferSize() > 65535)
{ socket.setReceiveBufferSize(socketSessionConfig.getReceiveBufferSize()); }
}
Connector, receive buffer = 192kb
Acceptor, receive buffer = 128kb
Connector SYN packet looks correct WS = 4 (max window size can be increased up
to 256kb)
Acceptor SYN/ACK packet looks correct WS = 2 (max window size can be increased
up to 128kb)
Acceptor window scale now looks correct.
I will look into the code because this setting does not seem to be populated as
stated in your comment. TCP dumps attached.
was (Author: the-thing):
Wow this was fast ;).
Let's skip the theory and go straight to practice. I created a simple
NioAcceptor / NioConnector application and created a TCP dumps. The buffers are
set immediately after object creation e.g.
NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReceiveBufferSize(65535 * 2);
NioSocketConnector connector = new NioSocketConnector();
connector.getSessionConfig().setReceiveBufferSize(65535 * 3);
*Case 1*
- no connector receive buffer set
- no acceptor receive buffer set
Connector SYN packet looks correct WS = 256 (Windows default, max 16MB)
Acceptor SYN/ACK packet looks correct d WS = 256 (Windows default, max 16MB)
This is correct behaviour.
*Case 2 (unmodified mina code base)*
- nio connector receive buffer 192kb
- nio acceptor receive buffer 128kb
Connector SYN packet looks correct WS = 4 (max window size can be increasted up
to 256kb)
Acceptor SYN/ACK packet looks wrong WS = 256 (windows default, max 16MB)
This is wrong. Server advertises bad WS.
*Case 3*
Added a small code change in as proof of concept
org.apache.mina.transport.socket.nio.NioSocketAcceptor#open
if (sessionConfig instanceof SocketSessionConfig) {
SocketSessionConfig socketSessionConfig = (SocketSessionConfig) sessionConfig;
if (socketSessionConfig.getReceiveBufferSize() > 65535)
{ socket.setReceiveBufferSize(socketSessionConfig.getReceiveBufferSize()); }
}
Connector, receive buffer = 192kb
Acceptor, receive buffer = 128kb
Connector SYN packet looks correct WS = 4 (max window size can be increased up
to 256kb)
Acceptor SYN/ACK packet looks correct WS = 2 (max window size can be increased
up to 128kb)
Acceptor window scale now looks correct.
I will look into the code because this setting does not seem to be propagand as
state in your comment. TCP dumps attached.
> Receive buffer size is never set for NIO acceptor
> -------------------------------------------------
>
> Key: DIRMINA-1123
> URL: https://issues.apache.org/jira/browse/DIRMINA-1123
> Project: MINA
> Issue Type: Bug
> Components: Transport
> Affects Versions: 2.0.22, 2.1.3
> Reporter: Marcin L
> Assignee: Jonathan Valliere
> Priority: Minor
> Attachments: case dumps.png, case1.pcap, case2.pcap, case3.pcap
>
>
> Acceptor window size can't be increased beyond OS defaults.
> It seems the receive buffer size is properly set for
> org.apache.mina.transport.socket.nio.NioSocketConnector, but it is not set at
> all for org.apache.mina.transport.socket.nio.NioSocketAcceptor before socket
> is bound.
> org.apache.mina.core.polling.AbstractPollingIoAcceptor.Acceptor#registerHandles
> comment states that receive buffer size should be initialised, but then
> org.apache.mina.transport.socket.nio.NioSocketAcceptor#open does not do it.,
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]