05

Networking

Software Defined Networking represents a big opportunity for ISPs and telecommunication companies as it allows them to customize and to extend hardware in new ways never imagined before. It also represents a big opportunity for network-appliances vendors to offer more flexibility to their customers. Igalia's networking team applies rock-solid compilers knowledge to solve novel networking problems. Snabb, a high-performance networking toolkit, is our preferred choice for building next-generation networking software.

We develop and deploy real NFV solutions built with Snabb today.

Snabb works similarly to other high-performance networking toolkits such as DPDK. It relies on kernel-bypass to squeeze the maximum performance of off-the-shell high-speed network cards, mostly Intel. Snabb is built on top of LuaJIT, an ultra-fast JIT compiler and interpreter. That allow us to develop new network-functions quickly without losing performance power.

We are longtime contributors to Snabb. Some of our work include the implementation of an IPv6-transition mechanism and the contribution of a pure-Lua packet filtering library:

  • lwAFTR. It's our largest piece of NFV software contributed to Snabb. lwAFTR is the routing technology of the lw4o6 standard (RFC 7596). lw4o6 is a brand-new IPv4-to-IPv6 transition technology that aims to substitute other technologies such as Dual-Stack or Carrier-Grade NAT. Our data-plane solution is RFC compliant and highly excels in performance.
  • Pflua. It's a high-performance packet-filtering tool similar to tcpdump. At its core, pflua is a compiler. It translates packet-filtering expressions to native Lua code, which is later run by LuaJIT. We have applied our extensive compilers knowledge to build an outstanding packet-filtering tool, which is now integrated in Snabb.

Snabb is aimed to run on commodity hardware (Xeon) powered by 10G, 25G or 100G cards. You can build a high-performance network appliance at a fraction of the cost of conventional solutions. All these features make Snabb an ideal tool for Network Function Virtualization.

If you need to implement a new RFC, would like to deploy lw4o6 or you are considering extending your expensive networking equipment by adopting Snabb, Igalia has the best team to talk to.

  • IPv6
  • VPP
  • Snabb
  • lw4o6
  • LuaJIT
  • Pflua

Featured Media

D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
Snabb, a toolkit for user-space networking (FOSDEM 2018)
How to write your own NIC device driver (and why) (FOSDEM 2018)
Carrier Grade Lightweight 4-over-6 with Juniper vMX and Snabb
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2017)
Snabb, a toolkit for building user-space network functions (ES.NOG 20)
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSDEM 2016)
High-performance packet filtering with Pflua (FOSDEM 2015)
Property-based testing an open-source compiler (FOSDEM 2015)

Updates

Diego Pino 10/01/2019

The eXpress Data Path

In the previous article I briefly introduced XDP (eXpress Data Path) and eBPF, the multipurpose in-kernel virtual machine. On the XDP side, I focused only on the motivations behind this new technology, the reasons why rearchitecting the Linux kernel...

Diego Pino 07/01/2019

A brief introduction to XDP and eBPF

In a previous post I explained how to build a kernel with XDP (eXpress Data Path) support. Having that feature enabled in your kernel is mandatory in order to use it. XDP is a new Linux kernel component that highly improves packet processing performance...

Diego Pino 02/01/2019

How to build a kernel with XDP support

This post is the first one of a series about XDP (eXpress Data Path), the brand-new kernel component for doing fast packet processing. Lately I’ve been in the quest of adding XDP support in Snabb. This work was actually started by one of our Coding...

Asumu Takikawa 14/11/2018

Data Path Objects in VPP

A while back, I wrote a blog post explaining some of the basics of writing plugins for the VPP networking toolkit. In that previous post, I explained a few mechanisms for hooking a plugin into VPP’s graph architecture so that your code can process...

Diego Pino 13/09/2018

YANG alarms

Alarm management is a fundamental part of network monitoring. The motivation for defining a standard alarm interface for network devices isn’t new. In the early 90s, ITU-T standardized X.733 (OSI model). This continued in mobile networks with the...

Commits

Fix errors due to bad strncpy behavour.

Fix errors due to bad strncpy behavour. As of GCC 8.1 a compiler error (stringop-truncation) will be raised as strncpy has potentially unsafe behavour, which is the case here. If strncpy's source (path in our case) is longer than the...

Jessica Tallon14/12/2018

Merge pull request #1199 from dpino/assert-limit-width

Merge pull request #1199 from dpino/assert-limit-width Add assert limit for width value

Diego Pino12/12/2018

Add assert limit for width value

Add assert limit for width value Width must be a value between 1 and 262144. Otherwise a segfault is launched.

Diego Pino12/12/2018

Merge pull request #1198 from takikawa/fix-get-mempolicy

Merge pull request #1198 from takikawa/fix-get-mempolicy ljsyscall: ensure size matches mask for get_mempolicy

Diego Pino12/12/2018

Merge pull request #1191 from takikawa/snabbnfv-ci

Merge pull request #1191 from takikawa/snabbnfv-ci Try to make snabbnfv CI test more reliable

Diego Pino12/12/2018