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

FreeBSD Manual Pages

  
 
  

home | help
DTRACE_SCTP(4)		 BSD 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 fi-
     nal 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>.

BSD				August 22, 2018				   BSD

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