BSSRC(5)
π NAME π
bssrc β the IPN scheme configuration commands file adapted for Bundle Streaming Service. That's the manual name btw, we're in section 5 (file formats), so if you came here looking for a command to type, bestie, this is the config language you feed to bssadmin. π
πΈ DESCRIPTION πΈ
okay so here's the vibe: IPN scheme configuration commands get passed to bssadmin either in a file of text lines, or interactively right at bssadmin's command prompt, which is a : by the way. Commands are interpreted line-by-line, with exactly one command per line. No packing two things onto one line, she will not know what to do with you. π
These IPN scheme configuration commands do three main-character jobs:
- they manage a table of destination endpoints that are known to be associated with Bundle Streaming Service (BSS) applications,
- they establish BSS-adapted egress plans for direct transmission to neighboring nodes that are members of endpoints identified in the
"ipn"URI scheme, and - they establish static default routing rules for forwarding bundles to specified destination nodes.
A BSS endpoint table entry identifies an IPN endpoint ID β in which the node number and/or service number may be the wild-card character '*' β that is known to be associated with a BSS application. These table entries enable bssfw to tell BSS bundles apart from non-BSS traffic and apply BSS-specific egress planning logic to the former, while handling the latter in exactly the same way as ipnfw. She's not changing the non-BSS girls, she's just giving the BSS ones their own lane. β¨
The egress plan established for a given neighboring node associates three default egress duct expressions with that node:
- one for BSS traffic that must be forwarded as real-time streaming data (using a convergence-layer protocol that does not perform retransmission),
- one for BSS traffic that must be forwarded as playback data (using a reliable convergence-layer protocol), and
- one for non-BSS traffic.
These default duct expressions may be overridden by more narrowly scoped planrules in specific circumstances: different egress duct expressions may apply when the source endpoint for the subject bundle identifies a specific node, a specific service, or both. iykyk π¦
Each duct expression is a string of the form:
"protocol_name/outduct_name[,destination_induct_name]"
which signifies that the bundle is to be queued for transmission via the indicated convergence layer protocol outduct. destination_induct_name must be provided when the indicated outduct is "promiscuous", i.e., not configured for transmission only to a single neighboring node; this is protocol-specific. so yeah, promiscuous outducts need to be told who exactly, no cap. π
The circumstances that characterize a specific rule within a general plan are expressed in a qualifier, a string of the form:
"source_service_number source_node_number"
where either source_service_number or source_node_number may be an asterisk character (*) signifying "all". She's flexible like that. π
heads up bestie: egress plans must be established for all neighboring nodes, regardless of whether or not contact graph routing is used for computing dynamic routes to distant nodes. This is by definition: if there isn't an egress plan to a node, it can't be considered a neighbor. Periodt. If you didn't write the plan, she's not your neighbor, that's just the rules. π
Static default routes are expressed as groups in the ipn-scheme routing database. A group is a range of node numbers identifying a set of nodes for which defined default routing behavior is established. Whenever a bundle is to be forwarded to a node whose number is in the group's node number range and it has not been possible to compute a dynamic route to that node from the contact schedules that have been provided to the local node and that node is not a neighbor to which the bundle can be directly transmitted, BP will forward the bundle to the gateway node associated with this group. π
The gateway node for any group is identified by an endpoint ID, which might or might not be an ipn-scheme EID; regardless, directing a bundle to the gateway for a group causes the bundle to be re-forwarded to that intermediate destination endpoint. Multiple groups may encompass the same node number, in which case the gateway associated with the most restrictive group (the one with the smallest range) is always selected. Narrowest group wins, every single time. π
The formats and effects of the BSS forwarding configuration commands are described below. π«Ά
β¨ GENERAL COMMANDS β¨
?β The help command. This will display a listing of the commands and their formats. It is the same as thehcommand. π#β Comment line. Lines beginning with#are not interpreted. Ghost them, she won't even read them. πe { 1 | 0 }β Echo control. Setting echo to1causes all output printed bybssadminto be logged as well as sent to stdout. Setting echo to0disables this behavior. Lowkey the log-everything switch. πvβ Version number. Prints out the version of ION currently installed. HINT: combine withe 1command to log the version number at startup. do it, it's iconic for debugging. π₯hβ The help command. This will display a listing of the commands and their formats. It is the same as the?command. Same girl, different letter. π
π ENTRY COMMANDS π
a entry service_nbr node_nbrβ The add entry command. This asserts that all bundles whose destination endpoint ID matchesservice_nbrandnode_nbr(either or both of which may be the wild-card character'*') are to be processed as BSS traffic. she's claiming these bundles for the BSS side. πd entry service_nbr node_nbrβ The delete entry command. This command rescinds a prior BSS assertion characterized by the exact sameservice_nbrandnode_nbr. Exact same, no fuzzy matching, she's picky. πl entryβ This command lists all entries in the node's table of destination endpoint IDs that indicate BSS traffic. π
π¦ PLAN COMMANDS π¦
a plan node_nbr non-BSS_duct_expression BSS_non-reliable_duct_expression BSS_reliable_duct_expression custody_expiration_intervalβ The add plan command. This command establishes an egress plan for the bundles that must be transmitted to the neighboring node identified bynode_nbr.custody_expiration_intervalindicates the number of seconds the BP agent must wait for custody acceptance after transmitting a bundle on either BSS duct before automatically re-forwarding the bundle. A general plan must be in place for a node before any more specific rules are declared. general plan first, then the specifics, that's the order bestie. π₯c plan node_nbr non-BSS_duct_expression BSS_non-reliable_duct_expression BSS_reliable_duct_expression custody_expiration_intervalβ The change plan command. This command changes the duct expressions and/or custody expiration interval for the indicated plan. β¨d plan node_nbrβ The delete plan command. This command deletes the egress plan for the node identified bynode_nbr, including all associated rules. yes, all of them, the whole friend group goes. πi plan node_nbrβ This command will print information (the default duct expressions, custody expiration interval, and all specific rules) about the egress plan for the node identified bynode_nbr. πl planβ This command lists all egress plans established in the BSS database for the local node. π
π§ PLANRULE COMMANDS π§
a planrule node_nbr qualifier non-BSS_duct_expression BSS_non-reliable_duct_expression BSS_reliable_duct_expressionβ The add planrule command. This command establishes a planrule, i.e., a set of duct expressions that override the default duct expressions of the egress plan for the node identified bynode_nbrin the event that the source endpoint ID of the subject bundle matchesqualifier. she's the exception handler, and she eats. πc planrule node_nbr qualifier non-BSS_duct_expression BSS_non-reliable_duct_expression BSS_reliable_duct_expressionβ The change planrule command. This command changes the duct expressions for the indicated planrule. πd planrule node_nbr qualifierβ The delete planrule command. This command deletes the planrule identified bynode_nbrandqualifier. πi planrule node_nbr qualifierβ This command will print information (the duct expressions) about the planrule identified bynode_nbrandqualifier. πl planrule node_nbrβ This command lists all planrules in the plan for the indicated node. π
π GROUP COMMANDS π
a group first_node_nbr last_node_nbr gateway_endpoint_IDβ The add group command. This command establishes a"group"for static default routing as described above. (yep, back up in DESCRIPTION, the whole group thing) β¨c group first_node_nbr last_node_nbr gateway_endpoint_IDβ The change group command. This command changes the gateway node number for the group identified byfirst_node_nbrandlast_node_nbr. πd group first_node_nbr last_node_nbrβ The delete group command. This command deletes the group identified byfirst_node_nbrandlast_node_nbr. πi group first_node_nbr last_node_nbrβ This command will print information (the gateway endpoint ID) about the group identified byfirst_node_nbrandlast_node_nbr. πl groupβ This command lists all groups defined in the BSS database for the local node. π
π GROUPRULE COMMANDS π
a grouprule first_node_nbr last_node_nbr qualifier gateway_endpoint_IDβ The add grouprule command. This command establishes a grouprule, i.e., a gateway endpoint ID that overrides the default gateway endpoint ID of the group identified byfirst_node_nbrandlast_node_nbrin the event that the source endpoint ID of the subject bundle matchesqualifier. πc grouprule first_node_nbr last_node_nbr qualifier gateway_endpoint_IDβ The change grouprule command. This command changes the gateway EID for the indicated grouprule. πd grouprule first_node_nbr last_node_nbr qualifierβ The delete grouprule command. This command deletes the grouprule identified byfirst_node_nbr,last_node_nbr, andqualifier. πi grouprule first_node_nbr last_node_nbr qualifierβ This command will print information (the duct expression) about the grouprule identified bynode_nbr,last_node_nbr, andqualifier. πl grouprule first_node_nbr last_node_nbrβ This command lists all grouprules for the indicated group. π
π EXAMPLES π
a plan 18 tcp/saturn.nasa.gov:5011 udp/*,saturn.nasa.gov:5012 tcp/saturn.nasa.gov:5011 3
Declares the egress plan to use for transmission from the local node to neighboring node 18. Any bundle for which the computed "next hop" node is node 18 will be queued for transmission to Internet host saturn.nasa.gov, using udp if the bundle is real-time BSS traffic and tcp otherwise; for BSS traffic, custodial retransmission will be initiated after 3 seconds if no custody acknowledgment is received. β±οΈ slay.
a planrule 18 * 9 tcp/saturn.nasa.gov:5011 udp/*,saturn.nasa.gov:5012 tcp/neptune.nasa.gov:5011
Declares an egress plan override that applies to transmission to node 18 of any bundle whose source is node 9, regardless of the service that was the source of the bundle. Each such bundle must be queued for transmission to Internet host neptune.nasa.gov, rather than default host saturn.nasa.gov, if it is non-real-time BSS traffic. π¦ (notice the * doing the "any service" thing? that's the qualifier wildcard, iconic.)
a group 1 999 dtn://stargate
Declares a default route for bundles destined for all nodes whose numbers are in the range 1 through 999 inclusive: absent any other routing decision, such bundles are to be forwarded to "dtn://stargate". π
β¨ SEE ALSO β¨
ok so if you wanna go deeper, like actually do the stuff this file is describing instead of just reading about it, go bother the big sister page:
bssadmin(1)β the actual admin tool π she's the one who reads your.bssrc, runs your commands, and makes the magic happen. this page is basically the lore, that page is the gameplay. π
and that's the whole page bestie!! π¦ you made it to the end, which honestly? main character energy. go forth and configure responsibly π
this lil manual page is BSSRC(5), shipped with perl v5.24.1, dated 2016-07-07 β yeah she's been around a minute, but she still slays β¨ no cap, she's lowkey iconic and she's not leaving πΈ
ily, now go read bssadmin(1) π«Ά
π¦ where this page comes from
- ubuntu jammy: ion 3.2.1+dfsg-1.1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms