Highly customizable high-speed virtual switch written in Lua sounds great, but is it really that easy to use? Simon Leinen was kind enough to get me in touch with Alex Gall, his colleague at Switch, who's working on an interesting project: implementing L2VPN over IPv6 with Snabb Switch.
Alex is a quiet speaker, so I had to do plenty of massaging to make him heard in the recording, resulting in not-so-spectacular voice quality.
We warmed up discussing pretty standard questions…
- Why would you not want MPLS in your network?
- Why does it make sense to run L2VPN over IPv6?
- Why is no hardware manufacturer doing it?
- Is SDN a solution - and what is SDN anyway?
- Can it be done on an x86-based device? At what speed?
... and then focused on implementation details of Alex’s solution riding on top of Snabb Switch:
- How long does it take to pick up Snabb Switch and get a working prototype?
- Doing packet forwarding in interpreted (scripting) language is an interesting problem;
- If you run out of memory and the system starts doing garbage collection, you’re dead;
- Using object-oriented code with plenty of inheritance might not be the best choice in high-speed real-time code;
- Just-in-time compiler tries to optimize the code based on traces collected during the execution - you have to be somewhat lucky to get just the proper trace so your code is well-optimized;
- Libraries help: Alex figured out how to do things fast, and wrote a library that did all the complex stuff;
- Working on a low-level platform means you have to reinvent all the wheels… including interface counters, and ways of accessing them.
For even more information, read very well written documentation, or download Alex’s presentation from Terena 2014 conference (video). The source code is available in the L2VPN tree of the Snabb Switch GitHub repository.