Skip to content

mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems

License

Notifications You must be signed in to change notification settings

nxp-mcuxpresso/mtcp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

420 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

========================================================================
 README for mTCP
========================================================================

mTCP is a highly scalable user-level TCP stack for multicore systems. 
mTCP source code is distributed under the BSD-3-License. For
more detail, please refer to the LICENSE. The license term of following
ported applications may differ from the mTCP’s.

========================================================================
 PREREQUISITE
========================================================================

We require the following libraries to run mTCP.
 - libdpdk
 - libnuma
 - libpthread
 - librt
 - libgmp (for DPDK driver)
 Compling DPDK driver requires kernel headers.
  - For Debian/Ubuntu, try apt-get install linux-headers-$(uname -r)

========================================================================
 INCLUDED DIRECTORIES
========================================================================

mtcp - mtcp source code directory
mtcp/src - source code
mtcp/src/include - mTCP’s internal header files

apps - mTCP applications
apps/example - example applications (see README)

util - useful source code for applications

config - sample mTCP configuration files (may not be necessary)

========================================================================
 NOTES
========================================================================

1. mTCP currently runs with fixed memory pools. That means, the size of
   TCP receive and send buffers are fixed at the startup and does not 
   increase dynamically. This could be performance limit to the large 
   long-lived connections. Be sure to configure the buffer size 
   appropriately to your size of workload.

2. The client side of mTCP supports mtcp_init_rss() to create an 
   address pool that can be used to fetch available address space in 
   O(1). To easily congest the server side, this function should be 
   called at the application startup.

3. The supported socket options are limited for right now. Please refer 
   to the mtcp/src/api.c for more detail.

4. The counterpart of mTCP should enable TCP timestamp.

========================================================================
 FREQUENTLY ASKED QUESTIONS
========================================================================

1. How can I quit the application?
  - Use ^C to gracefully shutdown the application. Two consecutive 
    ^C (separated by 1 sec) will force quit.

2. My application doesn't use the address specified from ifconfig.
  - For some Linux distros(e.g. Ubuntu), NetworkManager may re-assign
    a different IP address, or delete the assigned IP address.

    Disable NetworkManager temporarily if that's the case.
    NetworkManager will be re-enabled upon reboot.

        # sudo service network-manager stop

3. Can I statically set the routing or arp table?
  - Yes, mTCP allows static route and arp configuration. Go to the 
    config directory and see sample_route.conf or sample_arp.conf. 
    Copy and adapt it to your condition and link (ln -s) the config 
    directory to the application directory. mTCP will find 
    config/route.conf and config/arp.conf for static configuration.

========================================================================
Please refer README_nxp for compilation and running steps.
========================================================================

                   Contact: mtcp-user at list.ndsl.kaist.edu
                             April 2, 2015. 
                 EunYoung Jeong <notav at ndsl.kaist.edu>
		 M. Asim Jamshed <ajamshed at ndsl.kaist.edu>

About

mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 91.4%
  • Makefile 4.9%
  • Shell 2.6%
  • Other 1.1%