This change updates mTCP from their master branch and cleans up the OpenNetVM module. The ONVM module is reorganized to match the DPDK module. This includes:
- Removed the command line arguments for running epserver
+ This removes the extra arg passing between methods
+ Moved the ONVM arguments to `epserver.conf`
- Added configure options to build mtcp with the ONVM library
- Added preprocessor macros to build ONVM specific code on-demand
Commit log:
* - IP defrag module for dpdk integrated (partly derived from ip_reassembly/ example code).
-> Currently disabled... because I need some testing suite that can fragment IP datagrams
- Cleaned up the Makefile.in scripts.
* - Fixed an ICMP-related bug that was accidentally introduced when hw-chksumming was implemented.
- Cleaned up the Makefile.in script
- Cleaned up dpdk_module.c file.
* - Applied fixes for suspect snippets identified by Coverity.
- Added IP_DEFRAG warning.
* - More fixes.
* Adding coverity badge.
- Needs more code fixing :S
* - Minor fixes.
* - Minor error checks.
* - More & more fixes.
* - Forgot to check in these files.
* - More error checking.
* - Added more DPDK-capable Ethernet controllers which makes mOS/mTCP compatible
with certain 1/10 Gbps NICs (e.g. X540T1, I211 and many, many others). Ack
to Juhyung.
- Small coverity related fix.
* tcp: handle ack with payload correctly in SYN_RECV state
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* uses -m64 for x86_64 only to avoid compile error on other ARCHs
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* add a generic ip_fast_csum for non-x86 platform
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* - Stats bug that does not appear in kernel version <= 4.1.. but appears in linux-4.4.
--> Always, always do copy_from_user() for user-space buffers before accessing
them in kernel module. This one was hard to catch!
--> Ack to Jaehyong for initially reporting the problem.
* - Adding partial support for i40e.
--> Still working on mtcp_init_rss() function for i40e.
--> Server-side applications should work fine with mTCP.
* - Removed redundant printk lines (in igbuio.c).
- mtcp_init_rss() for i40e fixed.
--> According to xl710 controller data sheet, the secret key should be 52 bytes long
--> Intel 10 Gbps nic controllers previously relied on 40 bytes RSK
--> See http://www.intel.co.kr/content/dam/www/public/us/en/documents/datasheets/xl710-10-40-controller-datasheet.pdf
section 7.1.10.1 for details.
- Made the code backward compatible with linux-3.x
--> Previous code changes were made in linux-4.4.x
- Added logic to unmap the pci address when driver (igb_uio) is deregistered.
--> Now igb_uio-registered devices can be re-attached to i40e devices back and forth.
* - Resovles issue# 67.
* fix the bug in cofiguring mTCP when running ab (issue 124)
ref:#124
* reset errno to 0 before calling strtol (resolves issue 128)
ref:#128
* - Make sure that even non-TCP packets are uniformly distributed across cores.
* Fix unused return value for copy_from_user(). (issue# 132)
* add support for configuring discrete ports (resolves issue 125)
ref:#125
* make backlog a command option (resolves the issue 136)
ref:#136
* - Small update.
* - Patch suggested by gchen-viosoft.
* - Small patch to make it work for linux-4.2
* - Removed the MAX_CPUS restriction.
- Make sure that hyperthreading is disabled before setting up mTCP
- igb_uio driver will maintain netdev stats for up to 128 queues.
* - Removed a statistics-related bug in epwget.c
- Removed a race condition in cleaning up context resources during termination of application.
* - Revised MAX_CPUs macro setup.
* - Forgot to update README.md file.
* - Small optimization related to CPU RSS calculation (rss-side)
-> Thanks Ilwoo
* - Small fixes (thanks to YoungGyoun Moon)
* - Made it compatible with linux kernel versions >= 4.11.0
* - Updating travis configuration file slightly.
* - Updating travis configuration file slightly.
- Updating Id.
* - Small typo in travis file.
* - Small update to the tcp sent window logic
* - Slight updates to the README/README.md files.
* - Resolved issue #51
* Update from eunyoung14/mtcp (#3)
* - IP defrag module for dpdk integrated (partly derived from ip_reassembly/ example code).
-> Currently disabled... because I need some testing suite that can fragment IP datagrams
- Cleaned up the Makefile.in scripts.
* - Fixed an ICMP-related bug that was accidentally introduced when hw-chksumming was implemented.
- Cleaned up the Makefile.in script
- Cleaned up dpdk_module.c file.
* - Applied fixes for suspect snippets identified by Coverity.
- Added IP_DEFRAG warning.
* - More fixes.
* Adding coverity badge.
- Needs more code fixing :S
* - Minor fixes.
* - Minor error checks.
* - More & more fixes.
* - Forgot to check in these files.
* - More error checking.
* - Added more DPDK-capable Ethernet controllers which makes mOS/mTCP compatible
with certain 1/10 Gbps NICs (e.g. X540T1, I211 and many, many others). Ack
to Juhyung.
- Small coverity related fix.
* tcp: handle ack with payload correctly in SYN_RECV state
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* uses -m64 for x86_64 only to avoid compile error on other ARCHs
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* add a generic ip_fast_csum for non-x86 platform
Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
* - Stats bug that does not appear in kernel version <= 4.1.. but appears in linux-4.4.
--> Always, always do copy_from_user() for user-space buffers before accessing
them in kernel module. This one was hard to catch!
--> Ack to Jaehyong for initially reporting the problem.
* - Adding partial support for i40e.
--> Still working on mtcp_init_rss() function for i40e.
--> Server-side applications should work fine with mTCP.
* - Removed redundant printk lines (in igbuio.c).
- mtcp_init_rss() for i40e fixed.
--> According to xl710 controller data sheet, the secret key should be 52 bytes long
--> Intel 10 Gbps nic controllers previously relied on 40 bytes RSK
--> See http://www.intel.co.kr/content/dam/www/public/us/en/documents/datasheets/xl710-10-40-controller-datasheet.pdf
section 7.1.10.1 for details.
- Made the code backward compatible with linux-3.x
--> Previous code changes were made in linux-4.4.x
- Added logic to unmap the pci address when driver (igb_uio) is deregistered.
--> Now igb_uio-registered devices can be re-attached to i40e devices back and forth.
* - Resovles issue# 67.
* fix the bug in cofiguring mTCP when running ab (issue 124)
ref:#124
* reset errno to 0 before calling strtol (resolves issue 128)
ref:#128
* - Make sure that even non-TCP packets are uniformly distributed across cores.
* Fix unused return value for copy_from_user(). (issue# 132)
* add support for configuring discrete ports (resolves issue 125)
ref:#125
* make backlog a command option (resolves the issue 136)
ref:#136
* - Small update.
* - Patch suggested by gchen-viosoft.
* - Small patch to make it work for linux-4.2
* - Removed the MAX_CPUS restriction.
- Make sure that hyperthreading is disabled before setting up mTCP
- igb_uio driver will maintain netdev stats for up to 128 queues.
* - Removed a statistics-related bug in epwget.c
- Removed a race condition in cleaning up context resources during termination of application.
* - Revised MAX_CPUs macro setup.
* - Forgot to update README.md file.
* - Small optimization related to CPU RSS calculation (rss-side)
-> Thanks Ilwoo
* - Small fixes (thanks to YoungGyoun Moon)
* - Made it compatible with linux kernel versions >= 4.11.0
* - Updating travis configuration file slightly.
* - Updating travis configuration file slightly.
- Updating Id.
* - Small typo in travis file.
* - Small update to the tcp sent window logic
* - Slight updates to the README/README.md files.
* - Resolved issue #51
* onvm-mtcp cleaning
* Added a build with onvm config option
* Ifdefs for ONVM setup, ENABLE_ONVM flag
* Update README.md for ONVM module
* Aborting the old changes for a clean merge
* README.md updates
* README.md updates
* Update epserver.conf onvm args explanation
* Update epserver.conf
* Added routing table rule for onvm-module
* Update README
* Update README.md
--> Added root check (geteuid()) for dpdk/netmap/psio drivers
--> Removed redundant (deprecated) eth fdir code from dpdk_module.c
--> Added mtcp_recv() for MSG_PEEK option (some apps may use them.. nginx??)
--> Added hw-based checksum offloading for dpdk drivers (enabled by default.. see README for more details)
--> This option can be disabled via autoconf script
---> Added documentation for multi-process support via epserver example.
- See apps/example/README for details..
---> Fixed (partial) issue #24 (gettimeofday() --> clock_gettime())
---> Made the compilation process more automated
- See README file for new instructions
---> Report any problems to ajamshed@ndsl.kaist.edu or the mTCP mailing list
- Performance optimization is pending (it currently uses nm_inject() which induces as extra memcpy operation per packet).
---> When applications such as epserver, epwget and lighttpd are run with a
a value '-N' that is less than the number of cores currently online in the system,
then mTCP application will dynamically adjust the number of NIC queues to '-N'
and spawn respective mTCP threads.
---> The 'num_cores' can also be adjusted via mtcp.conf file (see sample_mtcp.conf)
for details. Please note that in case num_cores is `activated', the value of '-N'
passed through command-line arguments is given lower precedence.
---> '-N' logic for apache-benchmark has not been adjusted yet. This will be
updated soon.