Job Description
Title: Senior Software Engineer – Networking
Location: Remote US
JobDescription:
About Us
At Cloudflare, we have our eyes set on an ambitious goal: to help build a better Internet. Today the company runs one of the worlds largest networks that powers approximately 25 million Internet properties, for customers ranging from individual bloggers to SMBs to Fortune 500 companies. Cloudflare protects and accelerates any Internet application online without adding hardware, installing software, or changing a line of code. Internet properties powered by Cloudflare all have web traffic routed through its intelligent global network, which gets smarter with every request. As a result, they see significant improvement in performance and a decrease in spam and other attacks. Cloudflare was named to Entrepreneur Magazines Top Company Cultures list and ranked among the Worlds Most Innovative Companies by Fast Company.
We realize people do not fit into neat boxes. We are looking for curious and empathetic individuals who are committed to developing themselves and learning new skills, and we are ready to help you do that. We cannot complete our mission without building a diverse and inclusive team. We hire the best people based on an evaluation of their potential and support them throughout their time at Cloudflare. Come join us!
Location: Remote, US
About the department
Cloudflare operates a large global network spanning hundreds of cities (data centers). You will join a team of talented network engineers who are building software solutions to improve network resilience and reduce operational toil.
What you’ll do
As a member of the Network Operating System (NetOS) team you will be a key technical contributor to a cutting-edge network software infrastructure which is used to drive layer2 and layer3 devices on Cloudflare’s network. The NetOS team is responsible for enabling, supporting, and growing SONiC within our Production Network.
You will participate in all stages of the software development lifecycle, from designing and documenting systems, to writing code and automated tests, to planning, managing, and monitoring production software deployments. Take ownership of code pieces and features, deep involvement in the system architecture in which the features are implemented.
Also, you will help build, integrate, maintain, and upstream, new SONiC features and bug fixes. Create and improve documentation, specifications, and SONiC high level design documents (HLD). In addition, work with hardware vendors and internal teams to integrate new platforms into SONiC.
In this role you will work with a wide range of technologies and programming languages, including C/C++, Go, Linux networking, Redis, Kubernetes, and more. Also provide technical support to Network Engineers, directly in debugging and resolving network operating system issues.
Because youll be solving problems of massive scale and significance, you are a growth-oriented individual who enjoys being outside your comfort zone. You are comfortable in a fast-paced but sensible work environment. You value curiosity and empathy and lead with these values.
Examples of desirable skills, knowledge and experience
- BS/MS/PhD in Computer Science or equivalent experience
- 3 years of relevant Software Engineering experience
- Experience with Sonic, Cumulus, or Linux based open Network Operating Systems
- Strong software development skills in C, C++, and Rust||Go||Python
- Experienced C/C++ debugging and performance profiling
- Open Source Routing Daemons (FRR or Bird)
- Linux networking iproute2, Traffic Control, Netlink, Devlink, etc.
- Background in yang data modeling, RESTful APIs and gRPC/gNMI
- Solid Linux systems administration experience
Bonus Points
- Experience with extending SONiC, in particular SWSS components
- Experience in back-porting patches in SONiC and/or FRR
- Experience with network programming in C, C++, or rust
- Deep understanding of SAI API and Ethernet vendors SDK
- Deep knowledge of BGP and other routing protocols
- Kernel Bypass Networking (DPDK, IPDK, VPP, XDP)
- Experience with Linux boot process (Secure Boot) and provisioning
- Experience with the Linux kernel and Linux software packaging
- Understanding of Server Architecture (interaction between a processor, memory, PCI Express bus, Operating System, and software applications)