diff options
author | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2017-10-31 12:40:17 +0000 |
---|---|---|
committer | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2017-10-31 14:19:39 +0000 |
commit | e18a033b921d0d79fa8278f853548e6125b93e0c (patch) | |
tree | a6a55edf6ddceef824561818c9836914c326340d /app/nginx/README.TLDK | |
parent | 7e18fa1bf263822c46d7431a911b41d6377d5f69 (diff) |
Integrate TLDK with NGINX
Created a clone of nginx (from https://github.com/nginx/nginx)
to demonstrate and benchmark TLDK library integrated with real
world application.
A new nginx module is created and and BSD socket-like API is implemented
on top of native TLDK API.
Note, that right now only minimalistic subset of socket-like API is provided:
- accept
- close
- readv
- recv
- writev
so only limited nginx functionality is available for a moment.
Change-Id: Ie1efe9349a0538da4348a48fb8306cbf636b5a92
Signed-off-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Diffstat (limited to 'app/nginx/README.TLDK')
-rw-r--r-- | app/nginx/README.TLDK | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/app/nginx/README.TLDK b/app/nginx/README.TLDK new file mode 100644 index 0000000..a2c4a6c --- /dev/null +++ b/app/nginx/README.TLDK @@ -0,0 +1,148 @@ +1. INTRODUCTION + +This is a clone of nginx (from https://github.com/nginx/nginx) +to demonstrate and benchmark TLDK library integration with real +world application. +A new nginx module is created and and BSD socket-like API is implemented +on top of native TLDK API. +Note, that right now only minimalistic subset of socket-like API is provided: +- accept +- close +- readv +- recv +- writev +so only limited nginx functionality is available for a moment. + +2. HOW TO BUILD/RUN + + cd to your TLDK root directory + Build TLDK as usual (and explained in README), then: + export TLDK_ROOT=${PWD} + cd app/nginx/ + auto/configure --prefix=${TLDK_ROOT}/${RTE_TARGET} --with-tldk \ + --with-cc-opt="-march=native -D_GNU_SOURCE" + make install + + create a copy of app/nginx/conf/nginx-tldk.conf and modify it accrodingly + to your system setup. + ${TLDK_ROOT}/${RTE_TARGET}/sbin/nginx -c <path_to_your_config_file> + + On your peer system: + make sure your net interface connected to the TLDK system is up and running + add TLDK assigned ip address into ip neighbor table + run your favorite web client + as an example: + ifconfig eth1 192.168.1.90/24 up + ip neigh add 192.168.1.60 lladdr 3c:fd:fe:9f:ce:e9 nud permanent dev eth1 + wget --no-proxy 192.168.1.60:6000 + +3. NGINX.CONF TLDK RELATED PARAMETERS + + Syntax: tldk_main { ... } + Default: - + Context: main + Provides the configuration file context in which the directives that affect + global DPDK/TLDK startup parameters are specified. + + Syntax: eal_main <DPDK cmdline startup parameters>; + Default: "" + Context: tldk_main + Example: eal_cmd --lcores=8-10 -n 4 -w 03:00.1; + Provides command-line arguments list for rte_eal_init(). + + Syntax: port <uint> mtu <uint> rx_offload <uint> tx_offload <uint> ipv4 <ipv4> ipv6 <ipv6>; + Default: - + Context: tldk_main + Example: port 0 rx_offload 0xf tx_offload 0xf ipv4 192.168.1.60; + Provides configuration information for particular DPDK ethdev port. + port - DPDK port id to be used to receive/send packets. + It is an mandatory option. + mtu - MTU to be used on that port (= application data size + L2/L3/L4 + headers sizes, default=1514). It is an optional option. + rx_offload - RX HW offload capabilities to enable/use on this port. + (bitmask of DPDK DEV_RX_OFFLOAD_* values). + It is an optional option. + tx_offload - TX HW offload capabilities to enable/use on this port. + (bitmask of DPDK DEV_TX_OFFLOAD_* values). + It is an optional option. + ipv4 - IPv4 network address that will be assigned to that port. + At least one of ipv4/ipv6 has to be specified. + ipv6 - IPv6 network address that will be assigned to that port. + At least one of ipv4/ipv6 has to be specified. + + For more details regarding TLDK related parameters in nginx config file, + please refer to app/nginx/conf/nginx-tldk.conf. + + Syntax: tldk_ctx { ... } + Default: - + Context: main + Provides the configuration for particular TLDK context. + In current implementation there is one to one mapping between NGINX workers + and TLDK contents: + - each NGINX worker has to be assigned to work with only one TLDK context. + - each TLDK context services only one NGINX worker. + + Syntax: worker <uint>; + Default: - + Context: tldk_ctx + Example: worker 0; + Associates given TLDK context with NGINX worker # 0. + + Syntax: lcore <uint>; + Default: - + Context: tldk_ctx + Example: lcore 9; + Specifies on which lcore given TLDK context will run on. + + Syntax: be_in_worker; + Default: off + Context: tldk_ctx + Example: be_in_worker; + Specifies should TLDK context processing (Back-End) run inside NGINX worker + process, or as a separate thread (DPDK lcore) inside NGINX master process. + + Syntax: tcp_timewait <uint>; + Default: 120s + Context: tldk_ctx + Example: tcp_timewait 0; + Specifies TCP TIME_WAIT state timeout duration in milliseconds for given + TLDK context. + + Syntax: mbufs <uint>; + Default: 0x20000 + Context: tldk_ctx + Example: mbufs 0x20000; + Specifies maximum number of DPDK mbufs to be created for given TLDK context. + + Syntax: sbufs <uint>; + Default: 1 + Context: tldk_ctx + Example: sbufs 0x100; + Specifies maximum number of send mbufs per stream (connection) + for given TLDK context. + + Syntax: rbufs <uint>; + Default: 1 + Context: tldk_ctx + Example: rbufs 0x100; + Specifies maximum number of recv mbufs per stream (connection) + for given TLDK context. + + Syntax: dev <uint> port <uint> queue <uint>; + Default: - + Context: tldk_ctx + Example: dev 0 port 0 queue 0; + Assigns DPDK ethdev devices to the given TLDK context. + dev - dev id inside given TLDK context. + port - DPDK port id to be used to receive/send packets. + queue - DPDK queue id to be used to receive/send packets. + + Syntax: dest dev <uint> addr <ipv4/ipv6> masklen <uint> mac <ether> + Default: - + Context: tldk_ctx + Example: dest dev 0 addr 192.168.1.0 masklen 24 mac 3C:FD:FE:9F:D1:E1; + Specifies routing information for given TLDK context. + dev - dev id inside given TLDK context. + addr - ipv4/ipv6 destination address. + masklen - destination network prefix length. + mac - destination ethernet address. |