Difference between revisions of "VPP/Using mTCP user mode TCP stack with VPP"
| Line 77: | Line 77: | ||
=== Modify Config Files === | === Modify Config Files === | ||
| + | In mTCP/apps/example/, you can change the epserver.conf file and epwget.conf. | ||
| + | example epserver.conf file: | ||
<pre> | <pre> | ||
| + | # module | ||
| + | io = netmap | ||
| − | </pre> | + | # Port |
| + | port vale00:vpp1}0 | ||
| + | |||
| + | # Hw addr of port | ||
| + | hw_addr = 02:fe:3f:34:15:9b | ||
| + | |||
| + | # Ip addr of port | ||
| + | ip_addr = 10.0.42.3 | ||
| + | |||
| + | # Netmask of port | ||
| + | netmask = 255.255.255.0 | ||
| + | |||
| + | # Maximum concurrency per core | ||
| + | max_concurrency = 10000 | ||
| + | |||
| + | # Maximum number of socket buffers per core | ||
| + | max_num_buffers = 10000 | ||
| + | |||
| + | # Receive buffer size of sockets | ||
| + | rcvbuf = 16384 | ||
| + | |||
| + | # Send buffer size of sockets | ||
| + | sndbuf = 16384 | ||
| + | |||
| + | # TCP timeout seconds | ||
| + | tcp_timeout = 30 | ||
| + | |||
| + | # TCP timewait seconds | ||
| + | tcp_timewait = 0 | ||
| + | |||
| + | # Interface to print stats | ||
| + | stat_print = vale00:vpp1}0 | ||
| + | </pre> | ||
| + | |||
| + | example epwget.conf file | ||
| + | <pre> | ||
| + | # module | ||
| + | io = netmap | ||
| + | |||
| + | # Port | ||
| + | port vale00:vpp2}0 | ||
| + | |||
| + | # Hw addr of port | ||
| + | hw_addr = 02:fe:75:c5:43:66 | ||
| + | |||
| + | # Ip addr of port | ||
| + | ip_addr = 10.0.42.2 | ||
| + | |||
| + | # Netmask of port | ||
| + | netmask = 255.255.255.0 | ||
| + | |||
| + | # Maximum concurrency per core | ||
| + | max_concurrency = 10000 | ||
| + | |||
| + | # Maximum number of socket buffers per core | ||
| + | max_num_buffers = 10000 | ||
| + | |||
| + | # Receive buffer size of sockets | ||
| + | rcvbuf = 16384 | ||
| + | |||
| + | # Send buffer size of sockets | ||
| + | sndbuf = 8192 | ||
| + | |||
| + | # TCP timeout seconds | ||
| + | tcp_timeout = 30 | ||
| + | |||
| + | # TCP timewait seconds | ||
| + | tcp_timewait = 0 | ||
| + | |||
| + | # Interface to print stats | ||
| + | stat_print = vale00:vpp2}0 | ||
| + | </pre> | ||
=== Test === | === Test === | ||
Revision as of 11:08, 8 June 2016
NOTE: This page is under construction.
This example shows how to configure and run sample client/server applications using user mode mTCP in 2 linux namespaces (or containers) which communicate through VPP via netmap virtual interfaces.
In this setup we use 2 different namespaces called vpp1 and vpp2 and two sample applications epserver and epwget available with mTCP.
Setup
NETMAP
Download the sources from the upstream repository using following command:
git clone git@github.com:vpp-dev/netmap.git
OR
https://github.com/vpp-dev/netmap/archive/master.zip
Enter LINUX directory and configure netmap. To compile only NETMAP/VALE (using unmodified drivers):
./configure --no-drivers make make apps sudo insmod netmap.ko lsmod | grep netmap
VPP
mTCP
Download the sources using following command:
git clone git@github.com:vpp-dev/mtcp.git
OR
https://github.com/vpp-dev/mtcp/archive/master.zip
Enter mtcp directory and configure mtcp. To compile for netmap module:
./configure --enable-netmap
goto mtcp/src/
make
goto apps/example
make
Configure Interfaces
VPP
Run VPP/VPP-lite and create netmap interfaces using following commands:
create netmap name vale00:vpp1 hw-addr 02:FE:3F:34:15:9B pipe master
create netmap name vale00:vpp2 hw-addr 02:FE:75:C5:43:66 pipe master
set int state netmap-vale00:vpp2 up
set int state netmap-vale00:vpp1 up
set int l2 xcon netmap-vale00:vpp1 netmap-vale00:vpp2
set int l2 xcon netmap-vale00:vpp2 netmap-vale00:vpp1
Modify Config Files
In mTCP/apps/example/, you can change the epserver.conf file and epwget.conf.
example epserver.conf file:
# module io = netmap # Port port vale00:vpp1}0 # Hw addr of port hw_addr = 02:fe:3f:34:15:9b # Ip addr of port ip_addr = 10.0.42.3 # Netmask of port netmask = 255.255.255.0 # Maximum concurrency per core max_concurrency = 10000 # Maximum number of socket buffers per core max_num_buffers = 10000 # Receive buffer size of sockets rcvbuf = 16384 # Send buffer size of sockets sndbuf = 16384 # TCP timeout seconds tcp_timeout = 30 # TCP timewait seconds tcp_timewait = 0 # Interface to print stats stat_print = vale00:vpp1}0
example epwget.conf file
# module io = netmap # Port port vale00:vpp2}0 # Hw addr of port hw_addr = 02:fe:75:c5:43:66 # Ip addr of port ip_addr = 10.0.42.2 # Netmask of port netmask = 255.255.255.0 # Maximum concurrency per core max_concurrency = 10000 # Maximum number of socket buffers per core max_num_buffers = 10000 # Receive buffer size of sockets rcvbuf = 16384 # Send buffer size of sockets sndbuf = 8192 # TCP timeout seconds tcp_timeout = 30 # TCP timewait seconds tcp_timewait = 0 # Interface to print stats stat_print = vale00:vpp2}0
Test
Using the VPP debug Command-line Interface (CLI) we can verify interface statistics.
Use the VPP CLI command :
Use the command show interface:
Use the command :