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.

  • Snabb
  • LuaJIT
  • lwAFTR
  • IPv6
  • Pflua

Featured Media

Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2017)
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/03/2017

Fosdem 2017

Fosdem is one of my favorite conferences. I guess this is true for many free software enthusiasts. It doesn’t matter how many editions it has been through, it still keeps the same spirit. Tons of people sharing, talking about their homebrew experiments,...

Asumu Takikawa 27/01/2017

Snabbwall's Firewall App: L7Fw

Recently, I’ve been helping out with the development of the Snabbwall project at Igalia. Snabbwall is a project to develop a layer 7 firewall using the Snabb framework. The project is graciously sponsored by the NLNet Foundation. A layer...

Asumu Takikawa 13/01/2017

Making a Snabb app with pfmatch

My first task when I joined Igalia was experimenting with building networking apps with pfmatch and the Snabb framework. I mentioned Snabb in my last blog post, but in case you’re just tuning in, Snabb is a framework built on LuaJIT that lets you...

Asumu Takikawa 01/12/2016

Pflua to assembly via dynasm

Today’s post is about the compiler implementation work I’ve been doing at Igalia for the past month and a half or so. The networking team at Igalia maintains the pflua library for fast packet filtering in Lua. The library implements the pflang...

Asumu Takikawa 17/10/2016

Lua Workshop 2016

Now that I work at Igalia on the networking team, I’ve started to write code in Lua (specfically with LuaJIT) in order to work with Snabb. Since I’m still a Lua newbie, I decided to attend this year’s Lua Workshop in San Francisco to...

Commits

Fix #789 - Make "keys" optional for list statements with config false

Fix #789 - Make "keys" optional for list statements with config false This will remove an error which wrongly assumes all list statements have a "key" field. This is only required when there is config false.

Jessica Tallon10/04/2017

Add test to check list with config false doesn't need "key"

Add test to check list with config false doesn't need "key" This is for issue #789 This adds a selftest to verify that a schema with a list that has config false set doesn't error when loaded with data. according to RFC 6020 Section 7.8.2 the...

Jessica Tallon10/04/2017

Merge pull request #793 from Igalia/789-list-wo-keys

Merge pull request #793 from Igalia/789-list-wo-keys Allow list statements without "key"s when "config false" is set

Jessica Tallon10/04/2017

Merge pull request #784 from Igalia/727-validate-softwire-psid

Merge pull request #784 from Igalia/727-validate-softwire-psid Validate softwire for missing PSID mapping

Jessica Tallon03/04/2017

Fix small nit with validate_config call

Fix small nit with validate_config call

Jessica Tallon03/04/2017