A specialized web server with userspace TCP/IP stack. Also my undergraduate thesis work.
This is a work in progress, an experiment at the moment.
No way it is even remotely production ready.
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.
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 |
##Installation
clone the repo
$ git clone --recursive [email protected]: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
Actually a lot