
However, the addition of higher level abstractions implicitly adds an overhead to the processing of our network function. As programmers, we don’t deal with the NIC directly, instead we work with sockets and have access to APIs to deal with the TCP/IP stack. Networking is another layer abstracted by the OS. For instance, when dealing with a hard-drive we don’t need to think of heads, cylinders and sectors but use a higher level abstraction: the filesystem. The goal of any OS is to create abstractions over hardware that programs can use. Traditionally when writing down network functions we use the abstractions provided by the OS. This new trend consists of writing down the entire network function in user-space and do not leave any processing to the kernel. In the last few years, there has been a new trend for writing down network functions. VPN): read incoming packets, create a new packet, embed packet into new one and send it. NAT): read incoming packets, modify headers and forward packet. firewalling): read incoming packets, compare to table of rules and execute an action ( forward or drop). Any network function is a combination of these basic operations. What kind of things can be done on traffic? For instance: to read packets, modify their headers, create new packets, discard packets or forward them. This definition refers to two keywords that are worth clarifying: network functions and user-space.Ī network function is any program that does something on network traffic. Snabb is a toolkit for developing network functions in user-space. Something that could allow anyone to understand what’s Snabb easily. Taking advantage of this presentation I decided to write down an introductory article about Snabb. Slides of the talk are also available online (English). Last month I attended the 20th edition of GORE (the Spain’s Network Operator Group meeting) where I delivered an introductory talk about Snabb (Spanish).
