OWLTSIM(1)

๐Ÿ“ฆ version 3.2.1, in ubuntu jammy

๐Ÿ’ซ OWLTSIM ๐Ÿ’ซ โ€” one-way light time transmission delay simulator

okay bestie, sit down, hydrate, because we're talking about owltsim, a lil icon from the ICI executables lineup, and she is literally the reason your ION nodes feel like they're a whole planet apart. ๐Ÿช


โœจ SYNOPSIS โœจ

owltsim config_filename [-v]

๐Ÿซถ DESCRIPTION ๐Ÿซถ

so here's the tea: owltsim makes data between pairs of ION nodes take forever to arrive โ€” well, exactly as long as you tell it to. it's simulating the signal propagation delay you'd get from actual physical distance between nodes. space is big, the speed of light is finite, and this program is here to make your testbed feel that. ๐Ÿ›ฐ๏ธ

how does she know what to do? from delay simulation configuration lines in the file you hand her as config_filename. for every single line in that file, she spawns a pair of threads:

  • one thread that receives UDP datagrams on a specified port and queues them up in a linked list ๐Ÿ“ฅ
  • a second thread that later pulls those queued datagrams out of the linked list and sends them on to a specified UDP port on a specified network host ๐Ÿ“ค

so cute, so organized, no cap.

Every config line has to look exactly like this, no improvising:

to from my_port# dest_host dest_port# owlt modulus
  • to โ€” who's receiving. this one is purely informational, it just makes the messages owltsim prints nicer for you to read. that's it. it's a vibe label. ๐Ÿ’…
  • from โ€” who's sending. you can put '*' here to mean "all nodes". also purely informational, again just there so the printed messages are actually helpful. ๐Ÿท๏ธ
  • my_port# โ€” the receiving port owltsim listens on for this particular traffic. ๐Ÿ“ฎ
  • dest_host โ€” a hostname identifying the computer she's gonna transmit this traffic to. ๐Ÿ–ฅ๏ธ
  • dest_port# โ€” the port she transmits this traffic to. ๐ŸŽฏ
  • owlt โ€” how many seconds to wait before forwarding each received datagram. (one-way light time, get it? iykyk.) โณ
  • modulus โ€” controls the artificial random data loss she inflicts on this traffic. a value of '0' means "no random data loss". any other value N makes owltsim randomly drop โ€” like, not transmit when the delay interval expires โ€” one out of every N packets. ๐Ÿ’€

and about that optional -v ("verbose") parameter: turn it on and she'll print a message every single time she receives, sends, or drops a datagram (drops happen because of the artificial random data loss, bestie, not because she's being shady). ๐Ÿ—ฃ๏ธ

heads up: error conditions may cause one delay simulation (that's one pair of threads) to terminate without terminating any of the others. she's resilient like that. ๐Ÿซก

owltsim is designed to run indefinitely. to make her stop, just hit control-C and kill her. that's the whole shutdown procedure. โœŒ๏ธ


๐Ÿ’– EXIT STATUS ๐Ÿ’–

  • "0" โ€” nominal termination, we love a clean exit โœจ
  • "1" โ€” termination due to an error condition, as noted in the printed messages ๐Ÿ˜ญ

๐ŸŒˆ EXAMPLES ๐ŸŒˆ

here's a sample owltsim config file, pls admire her:

2 7 5502 ptl07.jpl.nasa.gov 5001 75 0
7 2 5507 ptl02.jpl.nasa.gov 5001 75 16

what is this file even saying?? let me translate:

line one: owltsim receives on port 5502 the ION traffic from node 2 that's destined for node 7, and node 7 will receive it at port 5001 on the computer named ptl07.jpl.nasa.gov. 75 seconds of delay get imposed on this transmission activity (that's simulating a distance of 75 light seconds, iconic), and owltsim will not simulate any random data loss. clean, no drama. ๐Ÿงผ

line two, the reverse direction: owltsim receives on port 5507 the ION traffic from node 7 destined for node 2, and node 2 will receive it at port 5001 on the computer named ptl02.jpl.nasa.gov. 75 seconds of delay again, same energy. but this time she will randomly discard โ€” again, not transmit when the transmission delay interval expires โ€” one datagram out of every 16 received at this port. spicy. ๐ŸŒถ๏ธ


๐ŸŽ€ FILES ๐ŸŽ€

Not applicable. (nothing to see here bestie, move along ๐Ÿ’…)


๐Ÿฆ‹ ENVIRONMENT ๐Ÿฆ‹

No environment variables apply. not a single one. she's self-sufficient. ๐Ÿ‘‘


๐Ÿ‘‘ DIAGNOSTICS ๐Ÿ‘‘

these are the messages that may get printed to stdout:

  • owltsim can't open configuration file โ€” the program terminates. ๐Ÿ’€
  • owltsim failed on fscanf โ€” failure on reading the configuration file. the program terminates.
  • owltsim stopped malformed config file line line_number. โ€” failure on parsing the configuration file. the program terminates.
  • owltsim can't spawn receiver thread โ€” the program terminates.
  • owltsim out of memory. โ€” the program terminates.
  • owltsim can't open reception socket โ€” the program terminates.
  • owltsim can't initialize reception socket โ€” the program terminates.
  • owltsim can't open transmission socket โ€” the program terminates.
  • owltsim can't initialize transmission socket โ€” the program terminates.
  • owltsim can't spawn timer thread โ€” the program terminates.
  • owltsim can't acquire datagram โ€” datagram transmission failed. this causes the threads for the affected delay simulation to terminate, without terminating any other threads. ๐Ÿซ‚
  • owltsim failed on send โ€” datagram transmission failed. this causes the threads for the affected delay simulation to terminate, without terminating any other threads. ๐Ÿซ‚
  • 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 UDP socket occasionally fails. owltsim does not attempt to retransmit the affected datagram. so like, she's telling you, not fixing it. ๐Ÿ™ˆ

๐Ÿ”ฅ BUGS ๐Ÿ”ฅ

report bugs to <ion-bugs@korgano.eecs.ohiou.edu> ๐Ÿ›


โญ SEE ALSO โญ

udplsi(1), udplso(1)


and that's the whole page, bestie!! this one's from the ICI executables crew, documented with perl v5.24.1, dated 2016-07-07, and honestly? she ate. go simulate some interplanetary latency, you main character. ๐Ÿ’œ๐Ÿ›ฐ๏ธโœจ

๐Ÿ“ฆ where this page comes from