RE: Seeing TCP socket options (nodelay, cork, etc) in Linux procfs or elsewhere?

From: MacCana, Mike
Date: Mon Mar 15 2010 - 12:44:11 EST



-----Original Message-----
From: Eric Dumazet [mailto:eric.dumazet@xxxxxxxxx]
Sent: 15 March 2010 16:21
To: MacCana, Mike
Cc: linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: Seeing TCP socket options (nodelay, cork, etc) in Linux procfs or elsewhere?

>Le lundi 15 mars 2010 à 15:49 +0000, MacCana, Mike a écrit :
>> Hi kernel folks,
>>
>> I was wondering if there was a standard location to see TCP socket
>> options (eg, nodelay, cork, etc), perhaps via procfs or some other
>> means? I'd like to check whether arbitrary apps (for which I don't
>> have
>> code) are using particular TCP options.
>>
>> Wandering round /proc/net hasn't turned up anything yet, and after a
>> quick:
>> socket.setsockopt(0, 1, 1)
>> to enable NODELAY I can't see any obvious difference in procfs or
>> netstat output (where other Unixes seem to put this info). hat's the
>> best way to see TCP options on sockets created by others' code?
>>

>There is limited support given by ss command (part of iproute2) :
>
>ss -emoi
>
>ESTAB 0 0 55.225.18.5:4900
>55.225.18.5:50000 uid:501 ino:135421 sk:c3b405c0
> mem:(r0,w0,f4096,t0) ts bic wscale:6,6 rto:201 rtt:1/0.5 ato:40
>cwnd:3 send 393.2Mbps rcv_space:32768
>
> But CORK flag is not exported yet (its usually a volatile flag, at
> least with Apache server)

Thanks Eric. Checking here:

# sockettest.settcpoption(serversocket,'nodelay',True)

# ss -emoi
LISTEN 0 5 127.0.0.1:7778 *:* ino:4095699 sk:0a53b500ffff8100

<my last reply was truncated>

I can't get NODELAY either. Looking at lsof FAQ Linux seems to be limited in this regard.

3.14.1 Why doesn't lsof report socket options, socket states, and TCP
flags and values for my dialect?

Linux
No socket options and values, socket states, or TCP
flags and values are reported. The support for "-Tf"
could not be added to Linux, because socket options,
socket states, and TCP flags and values are not
available via the /proc file system.

However the SystemTap Networking Tapset provides a tcp.setsockopt breakpoint which I can use.

Mike

1. http://gd.tuwien.ac.at/utils/admin-tools/lsof/FAQ
2. http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/pdf/SystemTap_Tapset_Reference.pdf








===============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
===============================================================================

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/