Skip to content

oxidecomputer/opte

Repository files navigation

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 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.

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 bench/README.

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.

About

packets go in, packets go out, you can't explain that

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages