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

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 14/06/2018

Fast checksum computation

An Internet packet generally includes two checksums: a TCP/UDP checksum and an IP checksum. In both cases, the checksum value is calculated using the same algorithm. For instance, IP header checksum is computed as follows: Set the packet’s IP header...

Jessica Tallon 16/05/2018

IPFIX Performance

Continue readingIPFIX Performance

Asumu Takikawa 23/03/2018

How to develop VPP plugins

Recently, my teammate Jessica wrote an excellent intro blog post about VPP. VPP is an open source user-space networking framework that we’re looking into at Igalia. I highly recommend reading Jessica’s post before this post to get aquainted...

Jessica Tallon 12/03/2018

An excursion in VPP

Continue readingAn excursion in VPP

Diego Pino 15/02/2018

The B4 network function

Some time ago I started a series of blog posts about IPv6 and network namespaces. The purpose of those posts was preparing the ground for covering a network function called B4 (Basic Bridging BroadBand). The B4 network function is one of the main...

Commits

Fix function require_splitter

Fix function require_splitter The function returns whether a V4V6 splitter app is required. Before it checked whether an parameter `on-a-stick` was a command line argument, but this should not be the case as an on-a-stick setup is also possible when a...

Diego Pino22/06/2018

Merge pull request #1107 from dpino/fix-gc

Merge pull request #1107 from dpino/fix-gc Fix undefined variable

Diego Pino20/06/2018

Add guard when retrieving speed and macaddr values

Add guard when retrieving speed and macaddr values

Diego Pino20/06/2018

Fix undefined variable

Fix undefined variable

Diego Pino20/06/2018

Merge pull request #1108 from dpino/fix-nil-values

Merge pull request #1108 from dpino/fix-nil-values Add guard when retrieving speed and macaddr values

Diego Pino20/06/2018