Zbr's days.
November
Sun Mon Tue Wed Thu Fri Sat
     
5
   
2006
Months
Nov

About TODO Blog RSS Old blog Projects Gallery Notes

Sun, 05 Nov 2006

Netchannels wildcard design picture.


Netchannels wildcard design picture (modified with some description).

Each dimension of the ruleset is splitted into non-crossing intervals, which form the tree (AVL tree on the picture). Each interval has a list of rules, which include part of that interval, second dimension of that rules forms new set of intervals, which forms tree, bound to the interval in previous dimension.
The worst search time complexity is O(d*log2(N)), where d is number of dimensions, and N is number of rules.

Theoretical research is over, let's implement this for Linux netchanels.

Actually it is some kind of the Grand Unified Flow Cache, described by Rusty Russel, netchannels already can host different protocols in the same cache, but only on top of IPv4 currently, since I have not implemented comparison helpers for different protocols.
Each netchannel has initialization and cleanup callbacks and processing function, which is called when packet has arrived. This set of callbacks allow to create netfilter, IPsec and any other transformation/encapsulation protocols as long as usual ones. Each netchannels also has data reading and writing callbacks, which can be used to copy data to/from userspace or for other usage.
Using netchannels it is possible to implement direct hardware-user bridges without any influence from OS.

/devel/networking :: Link / Comments (0)