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

FreeBSD Manual Pages

  
 
  

home | help
Net::NTP(3)	      User Contributed Perl Documentation	   Net::NTP(3)

   offset($packet, $xmttime, $rectime)
       Given a NTP Packet (from	B), return the offset to local (A) according
       to its xmttime(T1) and rectime(T4)

	   theta = T(B)	- T(A) = 1/2 * [(T2-T1)	+ (T3-T4)]

   delay($packet, $xmttime, $rectime)
       Return the delay	from the sender	(B) of $packet given known local
       xmttime(T1) and rectime(T4)

	   delta = T(ABA) = (T4-T1) - (T3-T2).

NAME
       Net::NTP	- Perl extension for decoding NTP server responses

SYNOPSIS
	 use Net::NTP qw(get_ntp_response);
	 use Time::HiRes qw(time);
	 my %response =	get_ntp_response();

	 my $xmttime = time();
	 my $spkt = Net::NTP::Packet->new_client_packet($xmttime);
	 $socket->send($pkt->encode());
	 $socket->recv(my $data, 1024);
	 my $rectime = time();
	 my $cpkt = Net::NTP::Packet->decode($data, $xmttime, $rectime);
	 print "Stratum: ", $cpkt->{stratum}, "\n";
	 print "Offset:	", Net::NTP->offset($pkt, $xmttime, $rectime), "\n"

ABSTRACT
       All this	module does is send a packet to	an NTP server and then decode
       the packet received into	it's respective	parts -	as outlined in RFC5905
       (superseding RFC1305 and	RFC2030).

LIMITATIONS
       This only supports Association Mode 3 (Client).

DESCRIPTION
       This module exports a single method (get_ntp_response) and returns an
       associative array based upon RFC1305 and	RFC2030.  The response from
       the server is "humanized" to a point that further processing of the
       information received from the server can	be manipulated.	 For example:
       timestamps are in epoch,	so one could use the localtime function	to
       produce an even more "human" representation of the timestamp.

   EXPORT
       get_ntp_response(<server>, <port>);

       This module exports a single method - get_ntp_response.	It takes the
       server as the first argument (localhost is the default) and port	to
       send/recieve the	packets	(ntp or	123 by default).  It returns an
       associative array of the	various	parts of the packet as outlined	in
       RFC1305.	 It "normalizes" or "humanizes"	various	parts of the packet.
       For example: all	the timestamps are in epoch, NOT hexidecimal.

       Two special fields ("Delay" and "Offset") are calculated	and added to
       the response.

       If there's a timeout or other communications error get_ntp_response
       will die	(so call get_ntp_response in an	eval block).

SEE ALSO
       perl, IO::Socket, RFC5905, RFC1305, RFC2030

AUTHOR
       Now maintained by Ask BjA,rn Hansen, <ask@develooper.com<gt>

       Originally by James G. Willmore,	<jwillmore (at)	adelphia.net<gt> or
       <owner (at) ljcomputing.net<gt>

       Special thanks to Ralf D. Kloth <ralf (at) qrq.de<gt> for the code to
       decode NTP packets.

COPYRIGHT AND LICENSE
       Copyright 2009 by Ask BjA,rn Hansen; 2004 by James G. Willmore

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

NAME
       Net::NTP::Packet

DESCRIPTION
       Representation of a NTP Packet with serialization primitives.

   PROTOCOL - RFC 5905 - Section 7.
	      0			  1		      2			  3
	      0	1 2 3 4	5 6 7 8	9 0 1 2	3 4 5 6	7 8 9 0	1 2 3 4	5 6 7 8	9 0 1
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |LI | VN  |Mode |	  Stratum     |	    Poll      |	 Precision   |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |			       Root Delay			     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |			       Root Dispersion			     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |				Reference ID			     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     +			   Reference Timestamp (64)		     +
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     +			    Origin Timestamp (64)		     +
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     +			    Receive Timestamp (64)		     +
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     +			    Transmit Timestamp (64)		     +
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     .								     .
	     .			  Extension Field 1 (variable)		     .
	     .								     .
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     .								     .
	     .			  Extension Field 2 (variable)		     .
	     .								     .
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |				Key Identifier			     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	     |								     |
	     |				  dgst (128)			     |
	     |								     |
	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   new
       create a	new Net::NTP::Packet instance.

       Parameters are the field	names, gotten from "7.3.  Packet Header
       Variables"

   new_client_packet($xmttime)
       Make a packet in	association mode 'Client' to be	sent to	a server.

   encode()
       Encode a	packet to its wire format.  NOTE: It only encodes server
       packets at the moment.

   $packet = Net::NTP::Packet->decode($data, $xmttime, $rectime)
       decode the NTP packet from its wire format.

perl v5.32.0			  2020-08-11			   Net::NTP(3)

NAME | SYNOPSIS | ABSTRACT | LIMITATIONS | DESCRIPTION | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE | NAME | DESCRIPTION

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

home | help