At Oxide, we are taking a very ambitious approach with respect to networking: not only have we developed our own compute sled and cabled backplane, we have also developed our own switch, and then the entire stack of software from the lowest levels of firmware to end-user experience — and everything in between! To understand why we’ve taken this steeper path (and the advantages that it affords), listen to the team in its own voice in our Oxide and Friends discussion on rack-scale networking. We are seeking a networking-focused software engineer who is energized by this approach, and excited about joining our team to develop new kinds of functionality only made possible by true hardware/software co-design.
As a software engineer focused on networking, you will:
-
Collaborate with other engaged, friendly systems engineers to understand customer use cases and implement the core of the Oxide platform.
-
Operate across multiple layers of the stack to build a true rack-scale system, including our integrated switch, a custom compute sled, and all software connecting and orchestrating them.
-
Develop tools to simulate and analyze complex networks, including those deployed in production at customer sites. Logging, tracing, and metrics are critical pieces of distributed systems, and you’ll get the chance to dig into them all.
-
Write code in Rust, C, and some P4. The vast majority of code you write will be open source (e.g., the Oxide Packet Transformation Engine, an in-kernel Rust module for packet processing), and across many different codebases.
-
Code without fear, working with the team to create and maintain continuous builds, tests, memory-safe code, debugging tools, a constructive code-review process, and a supportive culture of identifying and fixing bugs. Contribute to other, non-networking areas of the product that interest you.
These responsibilities are just a starting place! We’re a small company, we don’t have rigid roles, and we have a lot to do – we can help you grow wherever your interests take you.
You will thrive in this role if you:
-
Have previously worked with Rust or another low-level systems language such as C.
-
Have implemented networking protocols in environments that were constrained by performance and correctness.
-
Have experience designing, implementing, deploying and operating data center networks using dynamic routing protocols and overlay networks.
-
Have experience with BGP implementation or deployment.
-
Enjoy the idea of owning the inter-rack networking end-to-end (host OS + NIC + switch + switch OS) – and also of integrating that networking with a customer’s larger network.
-
Are energized by the thought of jumping between implementing a new protocol (or a new implementation of an old one!), analyzing customer networking pathologies, and bringing kernel drivers to life.
-
Produce good documentation and/or written descriptions of your ideas.
-
Get excited about a wide range of technical topics and dig really deep into them.
-
Are very comfortable at a Unix terminal.
-
Believe that the closed nature of low-level networking is a barrier to progress and want to work with a team breaking down that barrier.
-
Don’t mind coworkers getting really excited about decades-old computers.
If you don’t meet 100% of these qualifications you should still seriously consider applying – at least one of us was missing each of these at the outset!