Network Acceleration Module vs Service

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everyone,

I have been working on a network accelerator, and I have reached a
point that I think it would be wise to get some guidance in what
direction it should go with its development.  Probably should have
done this a while ago.  I started working on this because the company
I work for can not afford to implement any of the commercially
available network accelerators.  I also wanted something that would
function similar to those products, and would be part of the open
source community.

What I have so far is a kernel module that uses the netfilter hooks to
intercept all IP packets that are being forwarded/routed.  It uses
some custom TCP Options to automatically detect other hosts running
the module, and begin compressing TCP sessions that traverse through
two hosts running the module.  It has logic to prevent compressed
traffic from being received by the destination client should one of
the host accelerators crash, or the service be stopped in an
out-of-line configuration.  It also has the ability to remove dead
sessions from its session tracking list.

Currently it can only compress/decompress the data field of the TCP
segments.  I want to add the ability for it to generate signatures for
common data patterns, and then substitute the signature in place of
that data pattern.  The other accelerator host would the reverse that
and replace the signature with the actual data pattern.  This will
need to support full and partial meshed networks like MPLS, DMVPN,
Metro LAN, Frame Relay so it would need to track what signatures are
available between the host accelerators.

At this point I could not figure out any method to achieve this in the
kernel because the signatures would need to be saved until the
signature is deleted, and there would need to be some type of lookup
to match data patterns to hosts that have signatures for those
patterns.  The only way I know how to do something like that is with a
database, and database access is pretty must restricted to user space
only from what I have read.

I am a little worried about the performance of the system overall
assuming the only option is to move the majority of this to a user
space service I would need to rewrite the module portion to QUEUE the
packets to user space.  This might severely effect performance of the
system in the number of packets per second that can be processed.
Given that it could be doing database queries, and substituting TCP
data for a signature or compressing the data the time it takes to move
a packet from kernel to user space and back might be negligible.

I just want some confirmation that I am on the right track before I
start converting this to a user space service.  I can email the source
for the module if anyone is interested in seeing it.  Its pretty ugly
compared to what I have seen here, but I am learning a lot by jumping
in, and just doing it.

Thanks,
Justin Yaple
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux