## 5 Proof-of-Concept Results
### The P4 Algorithm
A fully featured implementation was ultimately not able to be produced due to a myriad of issues that stem from a design incompatibility between BP's complex encoding scheme and flexible bundle layout, and the P4 languages support for variable-width fields. The details of these issues and the underlying cause are enumerated which may serve as a useful reference for those interested in the impact of BP's encoding scheme on resource-constrained development environments. Future directions of research in further improving this hardware implementation, space DTN scalability and SDDTN are also shared. A successful execution of a SDDTN and with a fully programmable DTN network stack would advance the future of large-scale space DTN networks by enabling cognitive nodes, elimination of network bottlenecks, and reliable routing capabilities at large scale. Conceptualization, D.T., S.B. and R.D. ; methodology, S.B. ; software, D.T. and S.B. ; validation, D.T. and S.B. ; investigation, D.T. ; resources, S.B. ; writing--original draft preparation, D.T. ; writing--review and editing, D.T., S.B. and R.D. ; visualization, D.T. and S.B. ; supervision, R.D. All authors have read and agreed to the published version of the manuscript. This research was funded by the NASA Glenn Research Center and the NASA Space Communications and Navigation (SCaN) program. Not applicable. The authors would like to thank the NASA GRC HDTN team, Cognitive Communications team, Space Communications and Navigation Internship Project (SIP) team, and DTN researchers at other NASA facilities for their provided resources and guidance, which was instrumental in laying the groundwork for this research. We would also like to thank [PERSON], [PERSON], and [PERSON] for their critical review and comments which improved and clarified this manuscript. The authors declare no conflict of interest. ## Appendix A Overview of P4

The most current iteration of the P4 language and abstraction specification is P4\({}_{16}\), introduced in 2016. The P4 language has a core library that provides a minimal set of functionality by design. This language is extended by vendors providing externs to provide extra functionality to users creating P4 programs for a specific compiler target (e.g., different hardware architectures, software switches, etc.). These externs can include things such as registers, counters, meters, hash generators, and checksum calculators. The existence of externs and target limitations means that P4 programs are not necessarily compatible between targets. However, there are standardized data plane processing architectures to promote cross-compatibility between targets by providing a common abstraction model, like Protocol Independent Switch Architecture (PISA). The PISA architecture divides the data plane programming process into three main pieces: a parser, match-action pipeline, and deparser [32]. The parser is a finite state machine that takes an incoming packet and parses it into well-defined data types based upon the network headers provided. A P4 program must specify the headers that it expects to encounter and support in any incoming packet. Headers are groups of fields, where fields have a name and a data type. See Figure 11 for an example declaration of an Ethernet header. All packets begin in the \"start\" parser state and either end in the \"accept\" state to be sent to the match-action pipeline, or to the \"reject\" state to be dropped. As packets flow through the state machine, fields of the packet are extracted into the P4 header variables from top to bottom. As these headers are extracted and read, the state machine can make conditional state transitions based on information extracted from packet headers [32]. For example, after Ethernet headers are extracted, the Ethertype field can be examined to determine whether to transition to the IPv4 or IPv6 parsing state. Or a P4 program can examine bits that have not been extracted, such as peeking into the beginning of a bundle to determine whether to transition to the IPv6 or IPv7 parsing state.