DMAring project is a novel generic network interface card driver architecture.
Version: 0.9DMAring project is a novel generic network interface card driver architecture which works in hybrid interrupt-polling mode to deliver superior real-time performance on Linux, Redhat Linux or Linux-RTAI-LXRT (a real-time co-kernel for Linux with user level
License: Perl Artistic License
Operating System: Linux
Existing Linux drivers are inefficient, they saturate the CPU at a much lower packet rates than the maximum wire line packet rate that is possible. But with this driver, vanilla network cards can be used for high speed packet capturing. This driver improves the packet capturing speed by 7 to 10 times, and the real-time packet delivery response by 500 to 5000 times over existing drivers and alternate approaches (HIP, NAPI, pfring, check the references in the papers for performance comparisons [1, 2, 3]), depending on whether Redhat Linux or RTAI is used. Thus this obviates the need for expensive high capacity hardware, specialized network data acquisition cards and systems (for example from Endace).
This project contain basic source codes, which other developers can use/adapt for their applications, and three published conference papers [1, 2, 3] describes the architecture and establishes its benefits. One of the papers (at SANE 2006) also documents the detailed architecture and provides guidelines to modify any Linux network interface driver (Donald Becker style drivers).
Earlier I had received lot of mail request from networking, network security/monitoring domain people, to get these codes or modified specific network drivers. I am looking forward that some developer will take up this project, churn out driver modifications for the most common net work cards and share with others. I will continue to add other drivers, and libpcap library modifications when I get more time.
Anybody willing to know the issues involved in real-time Linux or looking for real-time networking solutions can take a look at my Masters thesis. I found RTAI with LXRT to be a very tractable, good performance, cheap (free!) real-time Linux option. My thesis contains some useful performance related discussions on this.