Skip to content

munikarmanish/falcon

Repository files navigation

FALCON

This repo contains the implementation of Falcon (Fast and Balanced Container Networking) as presented in the paper "Parallelizing Packet Processing in Container Overlay Networks" accepted in EuroSys 2021.

This implementation is based on the original Linux kernel v5.4.64. Most of the files are unchanged. We've modified some parts of the networking subsystem to implement the ideas of Falcon.

The main modifications are as follows:

  • drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
    Packet type identification and GROsplit decision. For now, we only implement Falcon for the network driver we used (mlx5).

  • fs/proc/stat.c
    Adds some new proc files to configure Falcon dynamically from userspace.

  • include/linux/kernel_stat.h
    Adding some extra per-CPU variables, usef for load balancing.

  • include/linux/skbuff.h
    Adds few fields to the struct sk_buff structure to store packet type.

  • kernel/time/timekeeping.c
    Implements the function to measure and update CPU load statistics periodically.

  • net/core/dev.c
    Implements the Falcon softirq splitting and balancing algorithm.

  • net/core/gro_cells.c
    Enables Falcon for the generic gro_cell driver that is used by software bridges.

Experimental Results

We are working on preparaing the instructions and scripts to perform the experiments presented in the paper. Once completed, we will add them here.

Authors

About

Fast and bALanced Container Overlay Network

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published