Font Size: a A A

VPPNGX: FD.io VPP Based High-performance Nginx Implementation

Posted on:2021-03-17Degree:MasterType:Thesis
Country:ChinaCandidate:Z Y ZhangFull Text:PDF
GTID:2518306503973989Subject:Software engineering
Abstract/Summary:PDF Full Text Request
The ever-increasing number of network requests exert pressure on enterprise-level websites and the bulk of websites use NGINX to handle requests,processing or offloading requests to upstream servers and sending back responses to clients.Native NGINX relies on kernel networking stack.However,the inefficiency of kernel networking stack limits packet processing performance.Hence prior studies use user-space networking stack to replace kernel networking stack with the aim of overcoming the inefficiency of kernel stack.This work presents VPPNGX,a high-performance NGINX implementation for public network request processing.VPPNGX is based on FD.io VPP,which is a DPDK-based high-performance,fully-featured user-space packet processing framework supporting L2-L7 user-space networking stack to run on commodity CPUs.In order to employ the networking stack of FD.io VPP to NGINX and solve performance problems that result from directly employing FD.io VPP to NGINX,we first propose VPP session index passthrough approach to removing VPP session lock layer that is designed to replace socket lock in kernel and that has negative impacts on scalability and latency of NGINX.Next,after removing session lock layer,for VPP event queue we propose a token-based lock-free order-preserving approach to preserving the order of metadata of control event messages sent from NGINX to VPP when they are enqueued into VPP event queue.Finally,we design a user-space unified blocking epoll scheme to replace the original busy-wait polling epoll when receiving user-space and kernel epoll events together,in order to empower our VPPNGX to reduce CPU usage via blocking mechanism and reduce context switch for kernel epoll event checking.Consequently,the scalability test on throughput demonstrates that VPPNGX can achieve 3.33 x higher throughput in RPS(requests per second)than kernel-based NGINX.It is capable of scaling up requests per second well and better than original VPP-based NGINX.The latency test shows that the latency of VPPNGX is 46.7%,34.1%,and 25.3% lower than that of F-Stack NGINX,original VPP-based NGINX,and kernel-based NGINX.Tests on CPU usage and overhead of kernel epoll event checking demonstrate that VPPNGX is also able to reduce CPU usage when load is low as well as context switch for kernel epoll event checking.
Keywords/Search Tags:FD.io VPP, User-Space TCP/IP Stack, NGINX, Network Request Processing
PDF Full Text Request
Related items