Download presentation
Presentation is loading. Please wait.
Published byDustin Potter Modified over 8 years ago
1
Scope/Goals of TLDK What is the scope of TLDK? High performance TCP/UDP Testing via CSIT needs to have a set of unit tests for validation Centralized or distributed stack ? What are the target uses cases TCP proxy? Does not need to focus on data center, could be CPE, … What does TLDK solve compared to the Linux stack/kernel Not to compare to features of the Linux stack, but what does TLDK do better? Multi-path TCP, … or other features
2
TLDK (Transport Layer Development Kit) High Level View I/O Layer (DPDK) Fastpath Layer (VPP) optional Application Layer TLDK Physical Layer Transport Layer: A set of libraries to handle packets needing support for UDP/TCP/… TLDK is a library or set of libraries to help manage UDP/TCP connections Physical Layer: Ports and other devices like crypto, compression, … I/O Layer: DPDK is contained here as it provides the I/O abstraction to the physical layer Fastpath Layer: The fastpath layer is today VPP and its is directed graph nodes moving packets to application or back to the I/O layer after some type of processing Application Layer: The application needs a VPP graph node to send/receive packets to/from the application layer The application and/or fastpath layer uses TLDK library APIs
3
TLDK Uses case #1 with DPDK only DPDK Physical Layer Application Layer TLDK: Handles packet I/O and protocol processing of packets Application sets up the UDP/TCP protocol contexts and then calls I/O routines in TLDK to start processing packets Physical Layer: Ports and other devices like crypto, compression, … DPDK: provides the I/O abstraction to the physical layer network devices Application Layer: Any type of application, which a BSD Socket layer could be present TLDK Control or non-TLDK pkts TLDK pkts L2/L3 Packet Processing Layer
4
VPP TLDK Uses case #2 with VPP DPDK Physical Layer Application Layer TLDK: Handles packet I/O and protocol processing of packets Application sets up the UDP/TCP protocol contexts and then calls I/O routines in TLDK to start processing packets VPP Fastpath Using VPP as the first layer for packet processing before packets are sent to the application layer Physical Layer: Ports and other devices like crypto, compression, … DPDK: DPDK provides the I/O abstraction to the physical layer for the network devices. The DPDK could be optional here only if some other I/O layer is used. TLDK Control or non-TLDK pkts TLDK pkts Control Plane
5
VPP optional TLDK Application Layer break down DPDK Physical Layer Socket Application Application Layer: The application layer utilizes the TLDK library to process packets for UDP and TCP Purpose Built Application: A purpose built application is one that uses TLDK APIs directly and is built to use these APIs Highest performance is expected with this design BSD Socket Layer: A standard BSD socket layer for applications using sockets in its design A lower performance is expected, but allows for current socket type applications to be ported to the system LD_PRELOAD Socket Layer: LD_PRELOAD is used to allow a ‘native binary Linux’ application to use the accelerated path of VPP/DPDK The performance should be a bit better, but does allow these native binary applications to work without any change TLDK Control or non-TLDK pkts TLDK pkts BSD Socket layer LD_PRELOAD Socket layer Native Linux Application Purpose built TLDK Application
6
Possible Performance Goals TCP need to scale from 50K - 5M concurrent connections 2M – 5M connections with multiple cores 50K per core would be a good target No number of connections per second, but should be reasonable high is my guess (1-20 scale) 1M connections maybe around 100K CPS for now Very short lived connections, may not need concurrent connections of a 1-2M connection per core Benchmarks like test of around 100K per core, is this possible (10 packets per connections x 100K) Needs to scale per core Need to understand the congestion issues with slow(er) external hosts Need to toss SYN packets during congestion to reduce the load as a back pressure TCP timers appear to be a possible bottleneck in performance (just speculation at this point) Memory management will be difficult to determine and mapping memory maps Need to understand how to manage window sizes Need to support what RFC’s? The Linux is the gold standard, but what is the level of compliance to the RFCs is that stack Interoperability for TCP/IP needs to be used
7
Possible Future Goals for TLDK A BSD socket layer for in process application Needs to support linked socket applications A LD_PRELOAD solution for native binary Linux applications Need a sub-project working on preload and socket layer Need to add test harness for TLDK with CSIT Need to define the goals for testing of TLDK What is the TCP application for testing? Is it a simple proxy like application? Need to define the uses cases for TLDK Should we use Google Test framework? Uses C++ code for the unit test cases Need to understand the framework and decide.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.