Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DTRACE_SCTP(4)	       FreeBSD Kernel Interfaces Manual		DTRACE_SCTP(4)

NAME
     dtrace_sctp -- a DTrace provider for tracing events related to the
     sctp(4) protocol

SYNOPSIS
     sctp:cwnd::init(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:cwnd::ack(uint32_t, uint32_t,	uintptr_t, int,	int);

     sctp:cwnd::rttvar(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);

     sctp:cwnd::rttstep(uint64_t, uint64_t, uint64_t, uint64_t,	uint64_t);

     sctp:cwnd::fr(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:cwnd::to(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:cwnd::bl(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:cwnd::ecn(uint32_t, uint32_t,	uintptr_t, int,	int);

     sctp:cwnd::pd(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:rwnd:assoc:val(uint32_t, uint32_t, int, int);

     sctp:flightsize:net:val(uint32_t, uint32_t, uintptr_t, int, int);

     sctp:flightsize:assoc:val(uint32_t, uint32_t, int,	int);

     sctp:::receive(pktinfo_t *, csinfo_t *, ipinfo_t *, sctpsinfo_t *,
	 sctpinfo_t *);

     sctp:::send(pktinfo_t *, csinfo_t *, ipinfo_t *, sctpsinfo_t *,
	 sctpinfo_t *);

     sctp:::state-change(void *, csinfo_t *, void *, sctpsinfo_t *, void *,
	 sctplsinfo_t *);

DESCRIPTION
     The DTrace	sctp provider allows users to trace events in the sctp(4) pro-
     tocol implementation.  This provider is similar to	the dtrace_ip(4) and
     dtrace_udp(4) providers, but additionally contains	probes corresponding
     to	protocol events	at a level higher than packet reception	and transmis-
     sion.

     The sctp:cwnd::() probes track changes in the congestion window on	a
     netp.  The	sctp:rwnd::() probes track changes in the receiver window for
     an	assoc.	The sctp:flightsize:net:val() probe tracks changes in the
     flight size on a net or assoc and the sctp:flightsize:assoc:val() probe
     provides the total	flight version.

     The arguments of all sctp probes except for sctp:cwnd::rtt*() and
     sctp::assoc:val() are the Vtag for	this end, the port number of the local
     side, the pointer to struct sctp_nets *changing, the old value of the
     cwnd, and the new value of	the cwnd.

     The arguments of sctp:::val() are similar to the above except the fourth
     argument is the up/down amount.

     The sctp:cwnd::rtt*() probe arguments are a bitmap	of Vtag	<< 32 |
     localport << 16 | remoteport, a bitmap of obw | nbw, a bitmap of bwrtt |
     newrtt, flight, and a bitmap of (cwnd << 32) | point << 16	| retval(0/1).

     The sctp:cwnd::init() probe fires when a remotely-initiated active	SCTP
     open succeeds.  At	this point the new connection is in the	ESTABLISHED
     state, and	the probe arguments expose the headers associated with the
     final ACK of the four-way handshake.

     The sctp:::send() and sctp:::receive() probes fire	when the host sends or
     receives an SCTP packet, respectively.  As	with the dtrace_udp(4)
     provider, sctp probes fire	only for packets sent by or to the local host;
     forwarded packets are handled in the IP layer and are only	visible	to the
     dtrace_ip(4) provider.

     The sctp:::state-change() probe fires upon	local SCTP association state
     transitions.  Its first, third and	fifth arguments	are currently always
     NULL.  Its	last argument describes	the from-state in the transition, and
     the to-state can be obtained from args[3]->sctps_state.

FILES
     /usr/lib/dtrace/sctp.d  DTrace type and translator	definitions for	the
			     sctp provider.

EXAMPLES
     A script that logs	SCTP packets in	real time:

	   #pragma D option quiet
	   #pragma D option switchrate=10hz

	   dtrace:::BEGIN
	   {
		   printf(" %3s	%15s:%-5s      %15s:%-5s0, "CPU",
		       "LADDR",	"LPORT", "RADDR", "RPORT");
	   }

	   sctp:::send
	   {
		   printf(" %3d	%16s:%-5d -> %16s:%-5d0, cpu,
		       args[2]->ip_saddr, args[4]->sctp_sport,
		       args[2]->ip_daddr, args[4]->sctp_dport);
	   }

	   sctp:::receive
	   {
		   printf(" %3d	%16s:%-5d <- %16s:%-5d0, cpu,
		       args[2]->ip_daddr, args[4]->sctp_dport,
		       args[2]->ip_saddr, args[4]->sctp_sport);
	   }
     A script that logs	SCTP association state changes as they occur:

	   #pragma D option quiet
	   #pragma D option switchrate=10

	   int last[int];

	   dtrace:::BEGIN
	   {
		   printf(" %3s	%12s  %-25s    %-25s0,
		       "CPU", "DELTA(us)", "OLD", "NEW");
	   }

	   sctp:::state-change
	   / last[args[1]->cs_cid] /
	   {
		   this->elapsed = (timestamp -	last[args[1]->cs_cid]) / 1000;
		   printf(" %3d	%12d  %-25s -> %-25s0, cpu, this->elapsed,
		       sctp_state_string[args[5]->sctps_state],
		       sctp_state_string[args[3]->sctps_state]);
		   last[args[1]->cs_cid] = timestamp;
	   }

	   sctp:::state-change
	   / last[args[1]->cs_cid] == 0	/
	   {
		   printf(" %3d	%12s  %-25s -> %-25s0, cpu, "-",
		       sctp_state_string[args[5]->sctps_state],
		       sctp_state_string[args[3]->sctps_state]);
		   last[args[1]->cs_cid] = timestamp;
	   }

COMPATIBILITY
     The sctp:::send(),	sctp:::receive(), and sctp:::state-change() probes are
     compatible	with the sctp provider in Solaris.  All	other probes are only
     available in FreeBSD.

SEE ALSO
     dtrace(1),	dtrace_ip(4), dtrace_udp(4), dtrace_udplite(4),	sctp(4),
     SDT(9)

AUTHORS
     This manual page was written by Devin Teske <dteske@FreeBSD.org>.

FreeBSD	Ports 11.2		August 22, 2018		    FreeBSD Ports 11.2

NAME | SYNOPSIS | DESCRIPTION | FILES | EXAMPLES | COMPATIBILITY | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=dtrace_sctp&sektion=4&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help