John DeNisco | c96d618 | 2019-11-06 10:58:28 -0800 | [diff] [blame] | 1 | .. _hoststack: |
| 2 | |
| 3 | ============== |
| 4 | TCP Host Stack |
| 5 | ============== |
| 6 | |
| 7 | VPP’s host stack leverages VPP’s graph based forwarding model and vectorized packet |
| 8 | processing to ensure high throughput and scale transport protocol termination. It |
| 9 | exposes apis that apart from allowing for efficient user-space app consumption and |
| 10 | generation of data, also enables highly efficient local inter-app communication. |
| 11 | |
| 12 | At a high level VPP’s host stack consists of 3 major components: |
| 13 | |
| 14 | * A session layer that facilitates interaction between transport protocols and applications |
| 15 | * Pluggable transport protocols, including TCP, QUIC, TLS, UDP |
| 16 | * VCL (VPPComs library) a set of libraries meant to ease the consumability of the stack from application perspective |
| 17 | |
| 18 | All of these components were custom built to fit within VPP’s architecture and to |
| 19 | leverage its speed. As a result, a significant amount of effort was invested into: |
| 20 | |
| 21 | * building a transport pluggable session layer that abstracts the interaction between applications and transports using a custom-built shared memory infrastructure. Notably, this also allows for transport protocols that are typically implemented in applications, like QUIC and TLS, to be implemented within VPP. |
| 22 | * a clean slate TCP implementation that supports vectorized packet processing and follows VPP’s highly scalable threading model. The implementation is RFC compliant, supports a high number of high-speed TCP protocol features and it was validated using Defensic’s Codenomicon 1M+ tests suite. |
| 23 | * VCL, a library that emulates traditional asynchronous communication functions in user-space, all while allowing for new patterns to be developed, if needed. |
| 24 | * implementing a high performance “cut-through” communication mode that enables applications attached to vpp to transparently exchange data over shared memory without incurring the extra cost of a traditional transport protocol. Testing has shown this to be much more efficient than traditional inter-container networking. |
| 25 | |
| 26 | For developer features press next. |