hi Nico

On 02/04/2010 17:48, Nicolas Williams wrote:
On Fri, Apr 02, 2010 at 11:53:33AM +0100, Alan Maguire wrote:
                [...]. I think adding the following
set of probes to the original proposal should hopefully
address shortcomings in this area in a manner
consistent with the connect-* and accept-* probes:

tcp:::close-request

Fires when a FIN segment is sent to a peer, either
[...]

tcp:::close-established

Fires when an ACK is received to a previously-sent
FIN segment. This probe firing may simply indicate
[...]

tcp:::close-accepted

Fires when a FIN segment is received from a peer.
[...]

tcp:::reset-request

Fires when a RST segment is sent to a peer connection
[...]

tcp:::reset-accepted

[...]
I'd rather see probes named and specified unambiguously after:

  - TCP state transitions (where the name of the probe that fires
    represents the new state of a connection and the old state is in some
    argument).

    State names should be taken from the standard: CLOSED, LISTEN,
    SYN_RCVD, SYN_SENT, EXTABLISHED, CLOSE_WAIT, LAST_ACK, FIN_WAIT_1,
    CLOSING, FIN_WAIT_2, TIME_WAIT.

    You might have just one probe, with the old and new states being
    arguments.

Yep - see the tcp:::state-change probe in the original
proposal. The above were additional probes, to cover
the points Darren raised.
  - TCP "signals": locally-initiated close/shutdown, active open
    (connect), passive open (listen), receipt of RST, SYN, SYN-ACK, FIN,
    FIN-ACK, and ACK of a SYN-ACK, FIN, or FIN-ACK.  These should also be
    named after the terminology used in the standard.

    Whether a signal is "accepted" or "rejected" (either dropped silently
    or responded to via a TCP or ICMP message) should be an argument of
    the TCP signals probes.

    You might have just one probe, with the signal being an argument.
    (Or two probes, one for locally generated signals and one for remote
    signals.)

These are the tcp:::connect-request, tcp:::connect-established,
tcp:::connect-refused (sending a SYN, receiving the final
ACK in the three-way handshake, receiving a RST|ACK);
tcp:::accept-established and tcp:::accept-refused (received a
SYN and responding with SYN|ACK, received a SYN and
responding with a RST|ACK); tcp:::close-request,
tcp:::close-established and tcp:::close-accepted (sending a FIN,
receiving an ACK to a FIN, receiving a FIN).
  - TCP options?  A probe per-option?  Or let the caller parse options
    data passed as arguments to the relevant probes?  TCP options can
    have a huge impact on perfomance (think of SACK, window scaling,
    PAWS, ...).  Arguably the options that apply to a given connection
    should always be available for any probes firing for any connection
    in at least ESTABLISHED state.
I've tried to make a certain amount of this state available via
the tcpsinfo_t translation of the tcp_t.
  - data send/receive, ACKs of data
Yep, see the tcp:::send and tcp:::receive probes.
  - window size changes
These are available at the various probe points,
either via the tcpsino_t structure (which is a translated
version of the tcp_t), or via the translated tcp headers
which are arguments to the tcp:::send/receive
probes.
  - congestion state transitions
These are available at the tcp:::send/tcp:::receive
probe points by examining the tcp flags and headers,
but it might be useful to add tcp_cwnd to the tcpsinfo_t
translation of the tcp_t.
  - PMTUD events

There's already a SDT probe (tcp_update_pmtu) for
PATH MTU update events, but again it might be useful
to make the MSS is available via the tcpsinfo_t  translator
of the tcp_t.

The last five are probably crucial for performance analysis.  The first
two could be used to test for correctness (module drops, of course), for
example, as well as to measure connection establishment performance,
etcetera.  All are important in general.

Understood. I think it would be a good idea to augment
the fields in the tcpsinfo_t with the additional information.
Thanks!

Alan
_______________________________________________
opensolaris-arc mailing list
[email protected]

Reply via email to