zuijinbuzai / eth

extreme throughput http daemon

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Eth: extreme throughput http daemon

A specialized web server with userspace TCP/IP stack. Also my undergraduate thesis work.

Big Caveat

This is a work in progress, an experiment at the moment.

No way it is even remotely production ready.

What?

Eth is a specialized web server whose aim is to be extremely fast on static file serving. It archives this using Netmap and a custom lightweight TCP/IP stack written from scratch specifically for the HTTP protocol.

Give me numbers

Currently I can only test it with a virtual machine.

Some numbers: average speed to download a 1GB file with a single connection.

  • tests are run on a QEMU virtual machine with an emulated Intel e1000 NIC (attached to the network with a TAP interface)
  • the real machine is a laptop:
    • Intel i5-4288U CPU (2.88 Ghz)
    • 8GB of memory
    • 512 GB of SSD
  • the OS is ArchLinux (both the host and the guest)
  • Nginx uses the default configuration
Nginx Eth
160 Mb/s 460 Mb/s

bench

##Installation

Steps:

clone the repo

$ git clone --recursive git@github.com:jibi/eth.git

build dependencies (Netmap).

Note: you need the kernel sources of your running kernel to be in the /usr/src/linux directory.

$ make deps

build Eth

$ make

load Netmap module

# insmod deps/netmap/LINUX/netmap.ko

set interface up

# ifconfig $if up

and start Eth server with

# ./eth --dev $ifname --mac $ifmac --ip $ifip --port $port

TODO

Actually a lot

About

extreme throughput http daemon

License:GNU General Public License v2.0


Languages

Language:C 93.8%Language:Ragel 4.9%Language:Makefile 1.3%