TCP_MAXSEG option with TSO enabled

3 messages, 2 authors, 2012-03-30 · open the first message on its own page

TCP_MAXSEG option with TSO enabled

From: Daniel Baluta <hidden>
Date: 2012-03-30 11:33:37

Hello,

I am using TCP_MAXSEG option on an interface which has TSO enabled.

strace output for connection looks as follows:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 26
setsockopt(26, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_MAXSEG, [300], 4) = 0
connect(26, {sa_family=AF_INET, sin_port=htons(1935),
sin_addr=inet_addr("10.10.0.1")}, 16) = -1 EINPROGRESS (Operation now
in progress)

I can see that MSS (300) is advertised in SYN packet, anyhow capturing
the traffic
I notice that are some TCP segments with length greater than MSS.

Is this normal taking in consideration that TSO is enabled?

thanks,
Daniel.

Re: TCP_MAXSEG option with TSO enabled

From: Rick Jones <hidden>
Date: 2012-03-30 17:38:03

On 03/30/2012 04:33 AM, Daniel Baluta wrote:
Hello,

I am using TCP_MAXSEG option on an interface which has TSO enabled.

strace output for connection looks as follows:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 26
setsockopt(26, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_MAXSEG, [300], 4) = 0
connect(26, {sa_family=AF_INET, sin_port=htons(1935),
sin_addr=inet_addr("10.10.0.1")}, 16) = -1 EINPROGRESS (Operation now
in progress)

I can see that MSS (300) is advertised in SYN packet, anyhow capturing
the traffic
I notice that are some TCP segments with length greater than MSS.

Is this normal taking in consideration that TSO is enabled?
I would think so.  What do the netstat stats suggest for segments and 
bytes per segment when you are running your test?  You could always look 
for an on-the-wire packet trace.

Not sure that a trace on a receiver would give you that though - the 
inbound promiscuous tap may be above GRO (and almost certainly will be 
above LRO)

rick jones
thanks,
Daniel.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Re: TCP_MAXSEG option with TSO enabled

From: Daniel Baluta <hidden>
Date: 2012-03-30 18:07:58

On Fri, Mar 30, 2012 at 8:38 PM, Rick Jones [off-list ref] wrote:
On 03/30/2012 04:33 AM, Daniel Baluta wrote:
quoted
Hello,

I am using TCP_MAXSEG option on an interface which has TSO enabled.

strace output for connection looks as follows:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 26
setsockopt(26, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(26, SOL_TCP, TCP_MAXSEG, [300], 4) = 0
connect(26, {sa_family=AF_INET, sin_port=htons(1935),
sin_addr=inet_addr("10.10.0.1")}, 16) = -1 EINPROGRESS (Operation now
in progress)

I can see that MSS (300) is advertised in SYN packet, anyhow capturing
the traffic
I notice that are some TCP segments with length greater than MSS.

Is this normal taking in consideration that TSO is enabled?

I would think so.  What do the netstat stats suggest for segments and bytes
per segment when you are running your test?  You could always look for an
on-the-wire packet trace.

Not sure that a trace on a receiver would give you that though - the inbound
promiscuous tap may be above GRO (and almost certainly will be above LRO)
Thanks Rick. Indeed on-the-wire capture looks fine. I have TSO enabled
at sender and LRO at receiver, everything makes sense now.

thanks,
Daniel.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help