Pattern-matching API in the 2.6.x Kernel
There are various places in the kernel where we need to do some kind of pattern
matching on the packet contents. Applications range from connection tracking
helpers (looking for FTP PORT command, ...) over the 'string' match to
intrusion detection systems.
Two years ago, Phillipe Biondi once came up with something called libqsearch. It implements a generic pattern matching API, supporting plugin based algorithm implementations.
I now took the liberty of porting this into a 2.6.x kernel, resulting in lots
of changes that make my qsearch port now incompatible with what Philipe wrote.
Anyway, I'm now in the process of combining this with Rusty's recent work on
skb_walk() and skb_iter(), so we can pattern-match against a
fragmented/nonlinear skb without any copy.
Day one of the Kernel Summit
So this was day one of the famous kernel summit. Apart from meeting lots of
friends, this basically meant lots of in-depth technical discussions on various
subjects.
Most noticeable were long discussions about the deficiencies of the power
management API, problems with 3-level-page tables on AMD64, and last but not
least: The first-hand technical information from AMD, Intel and IBM on their
upcoming CPU generations.
My personal favourite (AMD) will be shipping dual core (not hyper-threading, but
two real cores) CPU's by mid 2005. They share the same Hyper-transport and
Memory interface, and therefore have to divide I/O Bandwidth between them.
Also had some interesting discussions with Jamal about netfilter performance
and the future l3 generalized connection tracking (called nf_conntrack). Maybe
I can talk him into attending the netfilter workshop for further discussion of
his ideas.