= Oxide Packet Transformation Engine
== Installation
On helios systems, OPTE can be built and installed using the cargo xtask install
command.
For ease of development, the above command will bypass pkg
. OPTE can instead be installed from a new IPS package using cargo xtask install --from-package
, which may require the --force-package-unfreeze
flag if OPTE has been installed as a prerequisite for omicron.
== Contributing
Please see the xref:CONTRIBUTING.adoc[CONTRIBUTING] doc if you are interested in contributing to the project.
== Tests and performance
While the XDE kernel module runs only on Helios, our test suite and microbenchmarks work on Unix-like development systems.
[%header,cols="1,1"] |=== | Helios | Linux/Mac/...
| cargo nextest run
| cargo nextest run -p opte -p opte-api -p oxide-vpc
| cargo build -p xde-tests --tests
, pfexec target/debug/deps/loopback-<hash>
| N/A
| cargo ubench
| cargo ubench
| cargo kbench
| N/A
|===
More detail on our benchmarks can be found in xref:bench/README.adoc[bench/README].
== Relevant RFDs and Inspiration
== Directory Index
dtrace:: A collection of DTrace scripts for common tracing and diagnostic processes useful for understanding the runtime behavior of OPTE.
illumos-sys-hdrs:: A raw interface to the types and function
prototypes in the illumos uts/common/sys
headers.
opte:: The implementation of the generic bits of OPTE. This acts as both a library and framework which is used as the basis for implementing some type of network. For example, the oxide-vpc crate uses the opte crate to implement the Oxide VPC network.
opte-ioctl:: The userland library used for interacting with OPTE.
opteadm:: The command line utility used to configure and inspect OPTE. This is meant to be used by an operator, not by a client program.
oxide-vpc:: An implementation of the Oxide VPC network.
pkg:: A script for generating an IPS package for the xde
driver.
xde:: A kernel module for running OPTE in the kernel. This module allows OPTE to interface with the system and for clients to interface with OPTE. It currently focuses purely on the Oxide VPC use case.