Features

Here is a list of some things that I have implemented and others that I am slowly working on.

Implemented:

  • Automatically discovers numerically highest IP address to use as the accelerator ID. Excluding the loopback IP address 127.0.0.1. Duplicate accelerator ID’s would prevent the accelerator auto detection logic from functioning.
  • Determines the number of cores in the system and creates N-1 worker threads for processing IP packets. If there is only one core a single worker thread is created.
  • All packets for a particular session are assigned to the same worker thread. The packets for that session get processed in the order they are received to maintain packet delivery sequence.
  • Only packets of TCP sessions with modified MSS will be processed. The modified MSS provides space for injection of custom TCP options used by the accelerators.
  • Discovers other network accelerators by detecting custom TCP options the accelerators add to IP packets.
  • Detects when remote network accelerator fails or is shutdown and stops accelerating packets.
  • Optimizes TCP segment payload using LZ compression.
  • Pads SEQ numbers of optimized TCP payloads so they will not be processed by the destination. They must be de-optimized by the destination network accelerator to fix SEQ number.
  • Checks for dead sessions by sending keep-alive messages to inactive clients/servers and removes dead sessions the session table.
  • Heartbeat between user space daemon and kernel module so kernel module can switch to bypass mode.

Todo:

  • Block based data reduction. Create signatures for blocks in TCP payloads and send those in place of the actual payload. A tunneless persistent dictionary compression system between multiple devices.
  • WCCPv2 Client for load balancing and out-of-line deployment.
  • CLI for configuration and statistics.
  • Return packets to previous-hop router. Determine if packets originated from a router other than the default gateway and return packet to the original router to fix some asymmetric routing issues.
  • Web Interface for configuration and statistics.
  • Add in-line support to kernel driver for network cards in bridge mode. Also test with fail-to-wire network cards.
  • Implement VRRP peering for out-of-line deployment. Include GARP poisoning of router arp table or other method to receive returning traffic.