diff --git a/README b/README index 8dbb6da..4ce41d3 100644 --- a/README +++ b/README @@ -148,6 +148,15 @@ and RTE_TARGET environment variables. 6. Run the applications! +7. You can revert back all your changes by running the following script. + + # bash setup_linux_env.sh + + Press [29] to unbind the Ethernet ports + Press [30] to remove igb_uio.ko driver + Press [33] to remove hugepage mappings + Press [34] to quit the tool + - ONVM VERSION - ---------------- @@ -196,7 +205,15 @@ Also, no core overlap between applications and onvm_mgr is allowed. 6. Run the applications! +7. You can revert back all your changes by running the following script. + # bash setup_linux_env.sh + + Press [29] to unbind the Ethernet ports + Press [30] to remove igb_uio.ko driver + Press [33] to remove hugepage mappings + Press [34] to quit the tool + - Notes - Once you have started onvm_mgr, sometimes an mTCP application may fail to get launched due to a error(s) resembling the one mentioned below: diff --git a/README.md b/README.md index 885ad61..a7a638b 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,19 @@ mTCP can be prepared in three ways. 5. Run the applications! +6. You can revert back all your changes by running the following script. + + ```bash + # bash setup_linux_env.sh + ``` + + Press [29] to unbind the Ethernet ports + + Press [30] to remove igb_uio.ko driver + + Press [33] to remove hugepage mappings + + Press [34] to quit the tool ***ONVM VERSION*** @@ -220,6 +233,20 @@ ONVM basics are explained in https://github.com/sdnfv/openNetVM. 6. Run the applications! +7. You can revert back all your changes by running the following script. + + ```bash + # bash setup_linux_env.sh + ``` + + Press [29] to unbind the Ethernet ports + + Press [30] to remove igb_uio.ko driver + + Press [33] to remove hugepage mappings + + Press [34] to quit the tool + **Notes** Once you have started onvm_mgr, sometimes an mTCP application may fail to get launched due diff --git a/README.netmap b/README.netmap index fcfd235..f8fd7b6 100644 --- a/README.netmap +++ b/README.netmap @@ -1,11 +1,13 @@ - NETMAP VERSION - ------------------ --*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*- +-*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*-*-*-*- -A- Tested with linux-3.13.0-121-generic & netmap commit: 8f3f79e4ca168c6d3220e7a5198a5778b030445e, and, --B- Tested with linux-3.13.0-121-generic & netmap commit: 21227d47ae995812412d1de22855c7fa8260f53a --*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*- +-B- Tested with linux-3.13.0-121-generic & netmap commit: 21227d47ae995812412d1de22855c7fa8260f53a, +and, +-C- Tested with 4.11.12-200.fc25.x86_64+debug & netmap commit: 21227d47ae995812412d1de22855c7fa8260f53a +-*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*--*-*-*-*-*-*- FOR -A- -------------------------------------------------------------------------------------------------- @@ -34,7 +36,7 @@ FOR -A- FOR -B- -------------------------------------------------------------------------------------------------- 1. Install the netmap driver and the corresponding ixgbe-5.3.7/ driver - - please got through netmap's documentaiton for installation + - please go through netmap's documentaiton for installation instructions. We used the following command(s) to compile the driver # cd LINUX; ./configure; make @@ -72,10 +74,60 @@ FOR -B- # make # sudo insmod ./netmap.ko # sudo insmod ./ixgbe/ixgbe.ko + +For -C- -------------------------------------------------------------------------------------------------- +1. Install the netmap driver and the corresponding i40e-2.4.6/ driver + - please go through netmap's documentation for installation + instructions. We used the following command(s) to compile the driver + # cd LINIX; ./configure; make + + - To run mTCP clients correctly, you need to modify the RSS seed in + i40e_main.c:i40e_config_rss_aq() & i40e_main.c:i40e_config_rss_reg() + functions. Our mTCP stack uses a specific RSS seed (mentioned below). + + static unsigned char sym_seed[] = { + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05 + }; + + static int i40e_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) + { + struct i40e_pf *pf = vsi->back; + struct i40e_hw *hw = &pf->hw; + int ret = 0; + + seed = sym_seed; + + ... + } -FOR BOTH -A- & -B- (CONTINUED) + static int i40e_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed, + u8 *lut, u16 lut_size) + { + struct i40e_pf *pf = vsi->back; + struct i40e_hw *hw = &pf->hw; + int ret = 0; + + seed = sym_seed; + + ... + } + + - Make sure that the underlying kernel module is correctly + working. You can use sample applications to validate your + setup. + # make + # sudo insmod ./netmap.ko + # sudo insmod ./i40e/i40e.ko + +FOR BOTH -A- & -B- & -C- (CONTINUED) -------------------------------------------------------------------------------------------------- 2. For optimum performance you are suggested to bind NICS IRQs to arbitrary CPUs. Please use affinity-netmap.py script for this purpose. The current @@ -86,6 +138,7 @@ FOR BOTH -A- & -B- (CONTINUED) - Disable flow control in Ethernet layer # sudo ethtool -A ${IFACE} rx off # sudo ethtool -A ${IFACE} tx off + # sudo ethtool -K ${IFACE} gro off - Disable lro (large receive offload) in Ethernet device. mTCP does not support large packet sizes (> 1514B) yet) diff --git a/setup_linux_env.sh b/setup_linux_env.sh new file mode 100644 index 0000000..c1dd634 --- /dev/null +++ b/setup_linux_env.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +GREEN='\033[0;32m' +NC='\033[0m' + +# Get to script directory +cd $(dirname ${BASH_SOURCE[0]})/ + +# Remove dpdk_iface.ko module +export RTE_SDK=$PWD/dpdk +printf "${GREEN}Removing dpdk_iface module...\n $NC" +if lsmod | grep dpdk_iface &> /dev/null ; then + sudo rmmod dpdk_iface.ko +else + : +fi + +# Compile dpdk and configure system +bash $RTE_SDK/usertools/dpdk-setup.sh + +printf "${GREEN}Goodbye!$NC\n" +