Software Development Engineer, Software Defined Networking

Toronto, Remote (Canada-Wide)

Our Client's Networking Team is responsible for the design, implementation, and operation of software-defined networking technology that is at the core of their product. Our SDN technology provides customers Layer 2 through Layer 7 networking features for traditional applications they’ve migrated from on-premises to Cloud. This includes features such as network isolation, MAC and IP address management and translation, policy-based routing, and hybrid-cloud connectivity. Customers can create identical clones of their virtual data centers without any L2 or L3 modifications, and can connect them to one another and to on-prem resources. The Networking team makes this magic possible at scale in data centers across the world.

 

 

Your Role

In your role as a SDN Software Engineer, you’ll use your skills to help implement and instrument SDN services and systems so they can be easily built, observed, monitored, tested, and deployed end-to-end at scale. You will help ensure SDN services perform well for enterprise customers. You’ll also work closely with your manager to identify and solve important technical challenges and process problems and participate in the development of the team’s technical roadmap.

 

In order to be effective in this role as a SDN Software Engineer, you’ll need to have proficiency with software engineering and core networking domain technologies.

 

Experience in high-performance networking architecture and operational troubleshooting of network issues is a bonus.

 

You are someone with:

  • Strong software engineering skills, ideally with distributed systems. This includes  understanding how to write code that is resilient to failures, can satisfy high uptime requirements, has automatic monitoring/alerting. Software engineering experience in large codebases is valuable. (The codebase is largely Python.)

  • Core networking domain expertise, including in Ethernet and the TCP/IP suite of protocols

  • Other required skills include strong communication skills and a collaborative attitude and working style.

  • Willingness to teach and mentor others on the team.

Other skills as a plus:

  • Experience in designing network architectures to satisfy throughput, latency, and availability requirements

  • Experience writing automated tests and manual test plans, design docs, performance tests

  • SDN, OpenFlow, policy-based routing, iptables, BPF, or similar network virtualization experience

  • Understanding of the CAP theorem and its tradeoffs

  • Experience designing systems that can be upgraded without downtime

  • Experience with monitoring and alerting (such as Elasticsearch, InfluxDB, Grafana, and Zabbix)

  • MySQL

  • Kubernetes

  • Experience with network tuning and troubleshooting customer network issues with tools like tcpdump and Wireshark

  • IPsec VPN, BGP, and routing protocol experience

  • Knowledge of Linux kernel internals and cutting-edge networking technology such as Wireguard, SmartNIC

  • Shell scripting, command-line tools