|
|
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)
|