saaras-io / yastack

YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
https://yastack.io
Apache License 2.0
100 stars 20 forks source link
dpdk dpdk-driver envoy envoy-proxy envoyproxy freebsd freebsd-stack hardware hardware-support high-performance kernel-bypass libevent network-stack networking networking-stack proxy proxy-server rss tcpip

Build Status

yastack

YAStack brings the speed of F-stack to envoy proxy.

Envoy's modular C++ codebase, clear separation of control plane and its filter architecture provides a way to quickly add new functionality. F-stack's freebsd stack provides the ability to perform packet processing from L2-L6. This integration provides for a high-speed L2-L7 stack for use in performance critial applications. Since the network stack resides in the user-space, it allows for quick iterations without modifying kernel code.

Envoy uses libevent to collect OS events. Libevent integration with f-stack thus provides a way for other applications that use libevent to integrate with this work. Details of libevent integration can be found under fs/app/libevent

DPDK integration generally uses Receive Side Scaling (RSS) to scale flow across cores. This needs hardware support. Yastack implementation can work without RSS hardware support. The flow distribution logic is encoded in software for better control. Setting of a newly introduced flag allows for the flow distribution logic in software to take over. This also eases the development process since it removes the dependency on hardware during development.

Software versions used in this project:

  Envoy Proxy - 1.8.0
  DPDK        - 18.0
  F-Stack     - fs/last_commit.txt

Blogs and additional documentation at - yastack.io

Quick Start