.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "OWLTSIM 1" .TH OWLTSIM 1 "2014-07-08" "perl v5.20.1" "ICI executables" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" owltsim \- one\-way light time transmission delay simulator .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBowltsim\fR \fIconfig_filename\fR [\-v] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBowltsim\fR delays delivery of data between pairs of \s-1ION\s0 nodes by specified lengths of time, simulating the signal propagation delay imposed by distance between the nodes. .PP Its operation is configured by delay simulation configuration lines in the file identified by \fIconfig_filename\fR. A pair of threads is created for each line in the file: one that receives \s-1UDP\s0 datagrams on a specified port and queues them in a linked list, and a second that later removes queued datagrams from the linked list and sends them on to a specified \s-1UDP\s0 port on a specified network host. .PP Each configuration line must be of the following form: .Sp .RS 4 \&\fIto\fR \fIfrom\fR \fImy_port#\fR \fIdest_host\fR \fIdest_port#\fR \fIowlt\fR \fImodulus\fR .RE .IP "\fIto\fR identifies the receiving node." 4 .IX Item "to identifies the receiving node." This parameter is purely informational, intended to make \fBowltsim\fR's printed messages more helpful to the user. .IP "\fIfrom\fR identifies the sending node." 4 .IX Item "from identifies the sending node." A value of '*' may be used to indicate \*(L"all nodes\*(R". Again, this parameter is purely informational, intended to make \fBowltsim\fR's printed messages more helpful to the user. .IP "\fImy_port#\fR identifies \fBowltsim\fR's receiving port for this traffic." 4 .IX Item "my_port# identifies owltsim's receiving port for this traffic." .PD 0 .IP "\fIdest_host\fR is a hostname identifying the computer to which \fBowltsim\fR will transmit this traffic." 4 .IX Item "dest_host is a hostname identifying the computer to which owltsim will transmit this traffic." .IP "\fIdest_port#\fR identifies the port to which \fBowltsim\fR will transmit this traffic." 4 .IX Item "dest_port# identifies the port to which owltsim will transmit this traffic." .IP "\fIowlt\fR specifies the number of seconds to wait before forwarding each received datagram." 4 .IX Item "owlt specifies the number of seconds to wait before forwarding each received datagram." .IP "\fImodulus\fR controls the artificial random data loss imposed on this traffic by \fBowltsim\fR." 4 .IX Item "modulus controls the artificial random data loss imposed on this traffic by owltsim." .PD A value of '0' specifies \*(L"no random data loss\*(R". Any other modulus value N causes \fBowltsim\fR to randomly drop (i.e., not transmit upon expiration of the delay interval) one out of every N packets. .PP The optional \fB\-v\fR (\*(L"verbose\*(R") parameter causes \fBowltsim\fR to print a message whenever it receives, sends, or drops (due to artificial random data loss) a datagram. .PP Note that error conditions may cause one delay simulation (a pair of threads) to terminate without terminating any others. .PP \&\fBowltsim\fR is designed to run indefinitely. To terminate the program, just use control-C to kill it. .SH "EXIT STATUS" .IX Header "EXIT STATUS" .ie n .IP """0"" Nominal termination." 4 .el .IP "``0'' Nominal termination." 4 .IX Item "0 Nominal termination." .PD 0 .ie n .IP """1"" Termination due to an error condition, as noted in printed messages." 4 .el .IP "``1'' Termination due to an error condition, as noted in printed messages." 4 .IX Item "1 Termination due to an error condition, as noted in printed messages." .PD .SH "EXAMPLES" .IX Header "EXAMPLES" Here is a sample owltsim configuration file: .IP "2 7 5502 ptl07.jpl.nasa.gov 5001 75 0" 4 .IX Item "2 7 5502 ptl07.jpl.nasa.gov 5001 75 0" .PD 0 .IP "7 2 5507 ptl02.jpl.nasa.gov 5001 75 16" 4 .IX Item "7 2 5507 ptl02.jpl.nasa.gov 5001 75 16" .PD .PP This file indicates that \fBowltsim\fR will receive on port 5502 the \s-1ION\s0 traffic from node 2 that is destined for node 7, which will receive it at port 5001 on the computer named ptl07.jpl.nasa.gov; 75 seconds of delay (simulating a distance of 75 light seconds) will be imposed on this transmission activity, and \fBowltsim\fR will not simulate any random data loss. .PP In the reverse direction, \fBowltsim\fR will receive on port 5507 the \s-1ION\s0 traffic from node 7 that is destined for node 2, which will receive it at port 5001 on the computer named ptl02.jpl.nasa.gov; 75 seconds of delay will again be imposed on this transmission activity, and \fBowltsim\fR will randomly discard (i.e., not transmit upon expiration of the transmission delay interval) one datagram out of every 16 received at this port. .SH "FILES" .IX Header "FILES" Not applicable. .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" No environment variables apply. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" The following diagnostics may be printed to stdout: .IP "owltsim can't open configuration file" 4 .IX Item "owltsim can't open configuration file" The program terminates. .IP "owltsim failed on fscanf" 4 .IX Item "owltsim failed on fscanf" Failure on reading the configuration file. The program terminates. .IP "owltsim stopped malformed config file line \fIline_number\fR." 4 .IX Item "owltsim stopped malformed config file line line_number." Failure on parsing the configuration file. The program terminates. .IP "owltsim can't spawn receiver thread" 4 .IX Item "owltsim can't spawn receiver thread" The program terminates. .IP "owltsim out of memory." 4 .IX Item "owltsim out of memory." The program terminates. .IP "owltsim can't open reception socket" 4 .IX Item "owltsim can't open reception socket" The program terminates. .IP "owltsim can't initialize reception socket" 4 .IX Item "owltsim can't initialize reception socket" The program terminates. .IP "owltsim can't open transmission socket" 4 .IX Item "owltsim can't open transmission socket" The program terminates. .IP "owltsim can't initialize transmission socket" 4 .IX Item "owltsim can't initialize transmission socket" The program terminates. .IP "owltsim can't spawn timer thread" 4 .IX Item "owltsim can't spawn timer thread" The program terminates. .IP "owltsim can't acquire datagram" 4 .IX Item "owltsim can't acquire datagram" Datagram transmission failed. This causes the threads for the affected delay simulation to terminate, without terminating any other threads. .IP "owltsim failed on send" 4 .IX Item "owltsim failed on send" Datagram transmission failed. This causes the threads for the affected delay simulation to terminate, without terminating any other threads. .IP "at \fItime\fR owltsim \s-1LOST\s0 a dg of length \fIlength\fR from \fIsending node\fR destined for \fIreceiving node\fR due to \s-1ECONNREFUSED.\s0" 4 .IX Item "at time owltsim LOST a dg of length length from sending node destined for receiving node due to ECONNREFUSED." This is an informational message. Due to an apparent bug in Internet protocol implementation, transmission of a datagram on a connected \s-1UDP\s0 socket occasionally fails. \fBowltsim\fR does not attempt to retransmit the affected datagram. .SH "BUGS" .IX Header "BUGS" Report bugs to .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIudplsi\fR\|(1), \fIudplso\fR\|(1)