Added rte_ring wrapper functions to support dpdk-17.05 and older version
[tldk.git] / README
1 1. OVERVIEW
2
3    TLDK project scope is as follows:
4
5    1) To implement a set of libraries for L4 protocol processing (UDP, TCP etc.)
6    for both IPv4 and IPv6.
7
8    The goal is to provide lightweight, high performance and highly adaptable
9    implementation for L4(UDP, TCP etc.) protocol processing. The provided API
10    are not planned to be compatible with BSD socket API. These libraries are
11    supposed to be built on top of DPDK.
12
13    Note: these libraries are not supposed to be a 'complete' network stack.
14
15    Implementation of ARP, IP, ETHER, etc. layers and related routing tables,
16    code for setup, manage and perform actual IO over underlying devices are
17    all out of scope of these libraries.
18
19    The only information these libraries need to know about the 
20    underlying devices:
21    - supported HW offloads
22    - MTU and L3/L2 addresses
23    That allows the libraries to fill L2/L3 headers and mbuf metadata
24    for the outgoing packets.
25
26    These libraries should be developed in such manner, that they could be used
27    independently from implementations of 2) and 3).
28
29    2) To create VPP graph nodes, plugins etc using those libraries to implement
30    a host stack.
31
32    3) To create such mechanisms (netlink agents, packaging, etc) necessary
33    to make the resulting host stack easily usable by existing non-vpp aware
34    software.
35
36    The library uses siphash logic from the below source
37    https://github.com/veorq/SipHash
38
39
40 2. INSTALLATION GUIDE
41
42    1) Obtain latest DPDK and build it.
43    (refer to http://dpdk.org for information how to download and build it).
44    2) Make sure that RTE_SDK and RTE_TARGET DPDK related environment variables
45    are setup correctly.
46    3) Go to the TLDK root directory and type: 'make all'.
47    4) Run sample applications.
48
49    For enabling unit tests application using GoogleTest please see:
50    ./test/gtest/README
51
52    As an example:
53    export RTE_SDK=/opt/DPDK
54    export RTE_TARGET=x86_64-native-linuxapp-gcc
55
56    cd tldk
57    make all
58    ./x86_64-native-linuxapp-gcc/app/l4fwd ...
59
60 3. CONTENTS
61
62    $(TLDK_ROOT)
63    |
64    +----lib
65    |      |
66    |      +--libtle_dring - dring library
67    |      |
68    |      +--libtle_l4p - implementation of the TCP/UDP packet processing
69    |      |
70    |      +--libtle_timer - implementation of the timer library
71    |
72    +----examples
73    |      |
74    |      +--l4fwd - sample app to demonstrate and test libtle_l4p TCP/UDP
75    |            usage (refer to examples/l4fwd/README for more information)
76    |
77    +----test - unit-tests
78    |      |
79    |      +--dring - UT for libtle_dring (standalone app)
80    |      |
81    |      +--gtest - UT for libtle_dring, libtle_l4p and libtle_timer
82    |      |     (googletest)
83    |      |
84    |      +--timer - UT for libtle_timer (standalone app)