{ inercia }

Oct 19

What’s New in the Linux Network Stack? -

In this paper, interesting features of the Linux kernel’s network stack are analyzed, which were introduced during the development cycles from Linux v3.7 to Linux v3.16. Special attention is given to the low-latency device polling (introduced in Linux v3.11), the netfilter’s SYNPROXY target (introduced in Linux v3.12) and the new Nftables framework (introduced in Linux v3.13). At the end a trend is presented, which shows the direction in which the Linux network stack is evolving.

Oct 18

Getting Down and Dirty with LMDB: Q&A -

Some questions and answers about probably the fastest key-value database in the market nowadays.

Oct 17

Nail: A practical interface generator for data formats -

One of the most common tasks when you work on networking is to build a binary parser for network packets. Nail is an automatic parser generator, something like Yacc/Bison but for binary languages.

dnspacket = {
  id uint16
  qr uint1
  opcode uint4
  aa uint1 
  tc uint1
  rd uint1
  ra uint1
  uint3 = 0
  rcode uint4
  @questioncount uint16
  @answercount uint16
  @authoritycount uint16   // Ignored
  @additionalcount uint16  //Ignored       
  questions n_of @questioncount question         
  responses n_of @answercount answer
  authority n_of @authoritycount answer
  additional n_of @additionalcount answer

Oct 13

How To Build a User-Level CPU Profiler -

A description of how profilers work on modern operating systems.

Oct 08

Why TCP Over TCP Is A Bad Idea -

A frequently occurring idea for IP tunneling applications is to run a protocol like PPP, which encapsulates IP packets in a format suited for a stream transport (like a modem line), over a TCP-based connection. This would be an easy solution for encrypting tunnels […] and also an easy way to compress arbitrary IP traffic, while datagram based compression has hard to overcome efficiency limits.

Unfortunately, it doesn’t work well. Long delays and frequent connection aborts are to be expected. Here is why.

Oct 07

Uplink Latency of WiFi and 4G Networks

Sep 26

Resizable, Scalable, Concurrent Hash Tables via Relativistic Programming -

On Linux 3.17, the Linux kernel has gotten an implementation of “relativistic hash tables” that can be resized while lookups proceed concurrently

"Relativistic" refers to the fact that the relative timing of two events (hash table insertions, say) that are not causally related may appear different to independent observers. In other words, one CPU may see two items inserted into the table in one order, while those insertions appear to have happened in the opposite order on another CPU. Despite some interesting performance results, this technique did not find its way into the kernel until the 3.17 merge window opened

There is a nice introduction in Linux Weekly.

Sep 25

Rosetta Code Analysis -

Our statistical analysis reveals, most notably, that: functional and scripting languages are more concise than procedural and object-oriented languages; C is hard to beat when it comes to raw speed on large inputs, but performance differences over inputs of moderate size are less pronounced and allow even interpreted languages to be competitive; compiled strongly-typed languages, where more defects can be caught at compile time, are less prone to runtime failures than interpreted or weakly-typed languages.

The full PDF article can be found here.

Run-time performance

Aug 14

Knot DNS -

Knot DNS is a high-performance authoritative-only DNS server which supports all key features of the domain name system including zone transfers and DNSSEC.

This review in LWN about the Knot DNS server shows the impressive list of features found on this server, highlighting the performance advantage when compared to other popular servers like BIND or PowerDNS.

Panamax: Docker Management for Humans -