BRSCCLA(1)

πŸ“¦ version 3.2.1, in ubuntu jammy

πŸ’– BRSCCLA β€” bestie edition πŸ’–

okay so this is the manual for brsccla (BP executables, iykyk) β€” the BRSC-based BP convergence layer adapter, and yes she is an input and output task, she does both, she's an overachiever πŸ’…


✨ NAME ✨

brsccla β€” BRSC-based BP convergence layer adapter (input and output) task πŸ¦‹


✨ SYNOPSIS ✨

brsccla server_hostname[:server_port_nbr]_own_node_nbr

that's it. that's the whole invocation. one argument, one string, slay. πŸ’œ


✨ DESCRIPTION ✨

okay so context first, because you need the lore. BRSC is the "client" side of the Bundle Relay Service (BRS) convergence layer protocol for BP. It is complemented by BRSS, the "server" side of the BRS convergence layer protocol for BP. BRS clients send bundles directly only to the server, regardless of their final destinations, and the server forwards them to other clients as necessary. like, the server is the group chat admin and everyone DMs her instead of each other. iconic. πŸŽ€

brsccla is a background "daemon" task comprising three threads, bestie, three whole threads, main character energy three ways:

  • one that connects to the BRS server, spawns the other threads, and then handles BRSC protocol output by transmitting bundles over the connected socket to the BRS server πŸ”₯
  • one that simply sends periodic "keepalive" messages over the connected socket to the server (to assure that local inactivity doesn't cause the connection to be lost) 🫢
  • one that handles BRSC protocol input from the connected server 🌸

🌈 the output thread (the extrovert)

The output thread connects to the server's TCP socket at server_hostname and server_port_nbr, sends over the connected socket the client's own_node_nbr (in SDNV representation) followed by a 32-bit time tag and a 160-bit HMAC-SHA1 digest of that time tag, to authenticate itself (yes she's showing her ID at the door, no cap); checks the authenticity of the 160-bit countersign returned by the server; spawns the keepalive and receiver threads; and then begins extracting bundles from the queues of bundles ready for transmission via BRSC and transmitting those bundles over the connected socket to the server. πŸ”₯

Each transmitted bundle is preceded by its length, a 32-bit unsigned integer in network byte order. so like, length first, then the bundle. every time. no exceptions.

🌸 The default value for server_port_nbr, if omitted, is 80. remember it, bestie, because it's load-bearing.

πŸ¦‹ the reception thread (the listener, the empath)

The reception thread receives bundles over the connected socket and passes them to the bundle protocol agent on the local ION node. Each bundle received on the connection is preceded by its length, a 32-bit unsigned integer in network byte order. πŸ’œ


πŸ’« the keepalive thread (the "you up?" texter)

The keepalive thread simply sends a "bundle length" value of zero (a 32-bit unsigned integer in network byte order) to the server once every 15 seconds. she's just checking in. she's just saying hi. 15 seconds is her love language. 🫢


πŸ‘‘ important vibe check

Note that brsccla is not a "promiscuous" convergence layer daemon: it can transmit bundles only to the BRS server to which it is connected, so scheme configuration directives that cite this outduct need only provide the protocol name and the BRSC outduct name as specified on the command line when brsccla is started. she's loyal. she's not talking to anybody else. periodt. πŸ’…


πŸŽ€ who starts and stops her

brsccla is spawned automatically by bpadmin in response to the 's' (START) command that starts operation of the Bundle Protocol, and it is terminated by bpadmin in response to an 'x' (STOP) command. brsccla can also be spawned and terminated in response to START and STOP commands that pertain specifically to the BRSC convergence layer protocol. ✨


✨ EXIT STATUS ✨

  • "0" β€” brsccla terminated normally, for reasons noted in the ion.log file. If this termination was not commanded, investigate and solve the problem identified in the log file and use bpadmin to restart the BRSC protocol. all good, no notes πŸ’–
  • "1" β€” brsccla terminated abnormally, for reasons noted in the ion.log file. Investigate and solve the problem identified in the log file, then use bpadmin to restart the BRSC protocol. not the vibe. go read the log. 😭

✨ FILES ✨

No configuration files are needed. we love a low-maintenance queen πŸŽ€


✨ ENVIRONMENT ✨

No environment variables apply. nothing to export, nothing to source, just vibes 🌸


✨ DIAGNOSTICS ✨

The following diagnostics may be issued to the ion.log log file:

  • brsccla can't attach to BP. β€” bpadmin has not yet initialized Bundle Protocol operations.
  • No such brsc induct. β€” No BRSC induct with duct name matching server_hostname, own_node_nbr, and server_port_nbr has been added to the BP database. Use bpadmin to stop the BRSC convergence-layer protocol, add the induct, and then restart the BRSC protocol.
  • CLI task is already started for this duct. β€” Redundant initiation of brsccla. she's already here, bestie, she's already in the call πŸ’€
  • No such brsc outduct. β€” No BRSC outduct with duct name matching server_hostname, own_node_nbr, and server_port_nbr has been added to the BP database. Use bpadmin to stop the BRSC convergence-layer protocol, add the outduct, and then restart the BRSC protocol.
  • Can't connect to server. β€” Operating system error. Check errtext, correct problem, and restart BRSC.
  • Can't register with server. β€” Configuration error. Authentication has failed, probably because (a) the client and server are using different HMAC/SHA1 keys or (b) the clocks of the client and server differ by more than 5 seconds. Update security policy database(s), as necessary, and assure that the clocks are synchronized. clock drift is the enemy fr fr πŸ•°οΈ
  • brsccla can't create receiver thread β€” Operating system error. Check errtext, correct problem, and restart BRSC.
  • brsccla can't create keepalive thread β€” Operating system error. Check errtext, correct problem, and restart BRSC.

✨ BUGS ✨

Report bugs to <ion-bugs@korgano.eecs.ohiou.edu> tell them everything, they want to know 🫢


✨ SEE ALSO ✨

bpadmin(1), bprc(5), brsscla(1) the whole friend group πŸ’œ


and that's the whole page, bestie β€” this one's from perl v5.24.1, dated 2016-07-07, filed under BRSCCLA(1). she's been iconic since 2016 and she's still serving πŸ’…βœ¨

πŸ“¦ where this page comes from