Staging WTF

[...] len = dwrq->length; ext = \_malloc(len); - if (!\_malloc(len)) + if (!ext) return -ENOMEM; if (copy\_from\_user(ext, dwrq->pointer, len)) { kfree(ext); [...]

March 6, 2011 · 1 min · Hagen Paul Pfeifer

Initial Congestion Window and NS2 Testbed

The increase of the Initial Congestion Window (IW) throughout the land: netdev ML ((Linux Network Development mailing list), TCPM (TCP Modification WG) ML, ICCRP (Congestion Control Research Group WG) ML, TMRG (Traffic Modeling Research Group) ML are a few, undoubtedly the most significant bodies related to TCP all have one thing in common: they all discuss about the (initial) Google proposal to increase IW to 10 or even 16. I think my position is to this topic is more or less known, this time I want to sum up arguments of other folks....

January 28, 2011 · 2 min · Hagen Paul Pfeifer

IETF 80 Prague Registered

“IETF 80”:http://www.ietf.org/meeting/80/ will be held in Prague - and as a early bird I registered today. The advantage of Prague is that I am familiar with the city which makes it easy for me to find a cheaper hotel compared to the standard conference hotels (Hilton: 148 Euro/day, Inter Continental: 140 Euro/day). The hotel in Beijing (“IETF 79”:http://www.ietf.org/meeting/79/) for example costed ~1500.- Euro for 9 days. I hope to find a hotel for about 350....

January 25, 2011 · 1 min · Hagen Paul Pfeifer

Linux TCP Quick ACK 2th Attempt

Back in August I submitted a “patch”:http://kerneltrap.org/mailarchive/linux-netdev/2010/8/23/6283640 to enable/disable the TCP Quick ACK behavior. Linux default Quick ACK behavior is in many cases counterproductive and increase the packet count. Especially short-lived interactive protocols like HTTP will suffer of TCP Quick ACK. For example a interactive HTTP flow of 16 data packets will send one additional but unnecessary Quick ACK packet - 1/16. Accumulated this is not to underestimated! Not sure why big HTTPD users like facebook or $BIGCOMPANY do not tune their stack - do they not question their @tcpdump@ traces?...

January 24, 2011 · 1 min · Hagen Paul Pfeifer

Epoll and Select Overhead

I benchmarked epoll() and select() one more time, this time restricted to _one_ FD which becomes readable. This benchmark reflect therefore the most crucial possible performance measurement. And which came as no surprise, select() perform worse. A possible poll() graph should be equal to the select() graph. But as I said before: I am not interested in poll().

January 23, 2011 · 1 min · Hagen Paul Pfeifer

Mass Parallel Network Processing Architecture

Yesterday and today I wrote an ANSI C program to demonstrate how a non-blocking, threaded network server for current SMP/CMP systems may be structured. The design of the server is constructed in a way that all CPU may stressed and load is fair balanced. All thread local clients are multiplexed via a event loop management wrapper (epoll() or select()). The program demonstrate the most effective architecture for current CMP/SMP server systems....

January 23, 2011 · 2 min · Hagen Paul Pfeifer

Link Equilibrium and Oversized Router Buffer

Jim Gettys wrote an blog entry where he describe problems with a oversized router buffer - he called the problem bufferbloat. Buffer in network equipment exist to catch temporary load peaks and allow proper internal packet exchange from one linecard to another linecard in coexist with the max. bandwidth. In the case where buffers are overestimated the effect get worse during periods of network congestion. Overestimated buffer will shift the problem in time, or in other words: TCP will overestimate the available capacity and normal congestion avoidance mechanisms do not timely take effect....

January 20, 2011 · 1 min · Hagen Paul Pfeifer

Epoll versus Select

I finished the select() backend for libeve Thus libeve can be compiled under nearly every operating system in this solar system (I didn’t even tried it, but the functional components are ready). Primary focus was and is Linux, I am not necessarily interested in other systems. Under Linux epoll/timer_fd is the best what you can do if you want to do. Under {Free, Net, Open, …}BSD kqueue should be the most performant implementation, but doe to lack of time and interest it isn’t implemented and select() should be fine too....

January 19, 2011 · 1 min · Hagen Paul Pfeifer

IPv6 Address Assignment to End Sites

IAB/IESG Recommendations on IPv6 Address Allocations to Sites (“RFC 3177”:http://tools.ietf.org/html/rfc3177) provides recommendations that for end sites a @/48@ block should be provided in normal case. A @/64@ block when it is absolutely sure that only one subnet is needed and @/128@ for the case that only one device is connected. The requirements for IPv6 in 1993 included the plan that the next IP version should address approximately 2^40^ networks and 2^50^ hosts....

January 5, 2011 · 2 min · Hagen Paul Pfeifer

Chi Square Test and Cryptographic Hash Functions

The Chi-Square probe is a statistical hypothesis test. The here presented values show the distribution of several hash algorithms compared to the cryptographic SHA1. Currently I am too lazy to explain the algorithm in great detail. Wikipedia is a great source for an introduction. The analysis is part of libhashish and available in the analysis directory.

December 8, 2010 · 1 min · Hagen Paul Pfeifer