mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-19 04:57:53 +00:00
Added throughput-test Docker files
This commit is contained in:
parent
df391c8413
commit
4b07987210
Binary file not shown.
37
docker-test/throughput-test/Dockerfile
Normal file
37
docker-test/throughput-test/Dockerfile
Normal file
@ -0,0 +1,37 @@
|
||||
# ZT Netcon Throughput test
|
||||
FROM fedora:22
|
||||
MAINTAINER https://www.zerotier.com/
|
||||
|
||||
# Install Apache
|
||||
RUN yum -y update && yum clean all
|
||||
RUN yum -y install httpd && yum clean all
|
||||
|
||||
EXPOSE 9993/udp 9992/udp 9991/udp 9990/udp
|
||||
|
||||
# Add ZT files
|
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d
|
||||
RUN touch /var/lib/zerotier-one/networks.d/e5cd7a9e1c5311ab.conf
|
||||
ADD zerotier-one /
|
||||
ADD zerotier-cli /
|
||||
|
||||
# Install sys-call intercept library
|
||||
ADD intercept /
|
||||
ADD libintercept.so.1.0 /
|
||||
RUN cp libintercept.so.1.0 lib/libintercept.so.1.0
|
||||
RUN cp libintercept.so.1.0 /lib/libintercept.so.1.0
|
||||
RUN ln -sf /lib/libintercept.so.1.0 /lib/libintercept
|
||||
RUN /usr/bin/install -c intercept /usr/bin
|
||||
|
||||
# Install test-setup scripts
|
||||
ADD generate_file.sh /generate_file.sh
|
||||
RUN chmod -v +x /generate_file.sh
|
||||
ADD entrypoint.sh /entrypoint.sh
|
||||
RUN chmod -v +x /entrypoint.sh
|
||||
|
||||
# Install LWIP library used by service
|
||||
ADD liblwip.so /
|
||||
RUN mkdir -p ext/bin/lwip
|
||||
RUN cp liblwip.so ext/bin/lwip/liblwip.so
|
||||
|
||||
# Start ZeroTier-One
|
||||
CMD ["./entrypoint.sh"]
|
15
docker-test/throughput-test/build.sh
Executable file
15
docker-test/throughput-test/build.sh
Executable file
@ -0,0 +1,15 @@
|
||||
cd ../../
|
||||
make
|
||||
cd netcon
|
||||
make -f make-intercept.mk lib
|
||||
rm *.o
|
||||
rm liblwip.so
|
||||
make -f make-liblwip.mk
|
||||
cd ../docker-test/throughput-test
|
||||
|
||||
cp ../../zerotier-one zerotier-one
|
||||
cp ../../zerotier-cli zerotier-cli
|
||||
|
||||
cp ../../netcon/liblwip.so liblwip.so
|
||||
cp ../../netcon/libintercept.so.1.0 libintercept.so.1.0
|
||||
|
14
docker-test/throughput-test/entrypoint.sh
Normal file
14
docker-test/throughput-test/entrypoint.sh
Normal file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/
|
||||
|
||||
echo '***'
|
||||
echo '*** ZeroTier Network Containers Test Image'
|
||||
echo '*** https://www.zerotier.com/'
|
||||
echo '***'
|
||||
|
||||
./zerotier-one &
|
||||
./zerotier-cli join e5cd7a9e1c5311ab
|
||||
./zerotier-cli listnetworks
|
||||
|
||||
|
1
docker-test/throughput-test/generate_file.sh
Normal file
1
docker-test/throughput-test/generate_file.sh
Normal file
@ -0,0 +1 @@
|
||||
dd if=/dev/urandom of=/var/www/html/bigfile bs=100M count=1
|
54
docker-test/throughput-test/intercept
Executable file
54
docker-test/throughput-test/intercept
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
# usage:
|
||||
# /usr/bin/intercept program <args>
|
||||
|
||||
if [ $# = 0 ] ; then
|
||||
echo "$0: insufficient arguments"
|
||||
exit
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
on)
|
||||
if [ -z "$LD_PRELOAD" ]
|
||||
then
|
||||
export LD_PRELOAD="/lib/libintercept.so.1.0"
|
||||
else
|
||||
echo $LD_PRELOAD | grep -q "/lib/libintercept\.so.1.0" || \
|
||||
export LD_PRELOAD="/lib/libintercept.so $LD_PRELOAD"
|
||||
fi
|
||||
;;
|
||||
off)
|
||||
export LD_PRELOAD=`echo -n $LD_PRELOAD | sed 's/\/lib\/libintercept.so.1.0 \?//'`
|
||||
if [ -z "$LD_PRELOAD" ]
|
||||
then
|
||||
unset LD_PRELOAD
|
||||
fi
|
||||
;;
|
||||
show|sh)
|
||||
echo "LD_PRELOAD=\"$LD_PRELOAD\""
|
||||
;;
|
||||
-h|-?)
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
if [ -z "$LD_PRELOAD" ]
|
||||
then
|
||||
export LD_PRELOAD="/lib/libintercept.so.1.0"
|
||||
else
|
||||
echo $LD_PRELOAD | grep -q "/lib/libintercept\.so.1.0" || \
|
||||
export LD_PRELOAD="/lib/libintercept.so.1.0 $LD_PRELOAD"
|
||||
fi
|
||||
|
||||
if [ $# = 0 ]
|
||||
then
|
||||
${SHELL:-/bin/sh}
|
||||
fi
|
||||
|
||||
if [ $# -gt 0 ]
|
||||
then
|
||||
exec "$@"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
#EOF
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -44,9 +44,21 @@
|
||||
*/
|
||||
#include "lwip/debug.h"
|
||||
|
||||
#define TCP_MSS 1400
|
||||
|
||||
//#define TCP_MSS 2048
|
||||
//#define TCP_WND 512
|
||||
/*
|
||||
The TCP window size can be adjusted by changing the define TCP_WND. However,
|
||||
do keep in mind that this should be at least twice the size of TCP_MSS (thus
|
||||
on ethernet, where TCP_MSS is 1460, it should be set to at least 2920). If
|
||||
memory allows it, set this as high as possible (16-bit, so 0xFFFF is the highest
|
||||
value), but keep in mind that for every active connection, the full window may
|
||||
have to be buffered until it is acknowledged by the remote side (although this
|
||||
buffer size can still be controlled by TCP_SND_BUF and TCP_SND_QUEUELEN). The
|
||||
reason for "twice" are both the nagle algorithm and delayed ACK from the
|
||||
remote peer.
|
||||
*/
|
||||
|
||||
#define TCP_WND TCP_MSS*10 // max = 0xffff
|
||||
|
||||
#define LWIP_NOASSERT 1
|
||||
#define TCP_LISTEN_BACKLOG 0
|
||||
@ -54,7 +66,14 @@
|
||||
/*------------------------------------------------------------------------------
|
||||
---------------------------------- Timers --------------------------------------
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
Be careful about setting this too small. lwIP just counts the number
|
||||
of times its timer is called and uses this to control time sensitive
|
||||
operations (such as TCP retransmissions), rather than actually
|
||||
measuring time using something more accurate. If you call the timer
|
||||
functions very frequently you may see things (such as retransmissions)
|
||||
happening sooner than they should.
|
||||
*/
|
||||
/* these are originally defined in tcp_impl.h */
|
||||
#ifndef TCP_TMR_INTERVAL
|
||||
/* The TCP timer interval in milliseconds. */
|
||||
@ -116,8 +135,9 @@
|
||||
*/
|
||||
#define MEM_SIZE 1024 * 1024 * 64
|
||||
#define TCP_SND_BUF 1024 * 63
|
||||
//#define TCP_OVERSIZE TCP_MSS
|
||||
|
||||
#define TCP_SND_QUEUELEN 1024
|
||||
#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF/TCP_MSS)
|
||||
/*------------------------------------------------------------------------------
|
||||
-------------------------- Internal Memory Pool Sizes --------------------------
|
||||
------------------------------------------------------------------------------*/
|
||||
@ -209,7 +229,7 @@
|
||||
/**
|
||||
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||
*/
|
||||
#define PBUF_POOL_SIZE 128 /* was 32 */
|
||||
#define PBUF_POOL_SIZE 2048 /* was 32 */
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
|
@ -50,8 +50,8 @@
|
||||
#include "NetconUtilities.hpp"
|
||||
|
||||
#define APPLICATION_POLL_FREQ 20
|
||||
#define ZT_LWIP_TCP_TIMER_INTERVAL 10
|
||||
#define STATUS_TMR_INTERVAL 1000 // How often we check connection statuses
|
||||
#define ZT_LWIP_TCP_TIMER_INTERVAL 50
|
||||
#define STATUS_TMR_INTERVAL 2000 // How often we check connection statuses
|
||||
#define DEBUG_LEVEL 3
|
||||
|
||||
namespace ZeroTier {
|
||||
@ -416,7 +416,7 @@ void NetconEthernetTap::threadMain()
|
||||
uint64_t prev_status_time = 0;
|
||||
uint64_t prev_etharp_time = 0;
|
||||
|
||||
/*
|
||||
|
||||
fprintf(stderr, "- MEM_SIZE = %dM\n", MEM_SIZE / (1024*1024));
|
||||
fprintf(stderr, "- TCP_SND_BUF = %dK\n", TCP_SND_BUF / 1024);
|
||||
fprintf(stderr, "- MEMP_NUM_PBUF = %d\n", MEMP_NUM_PBUF);
|
||||
@ -432,7 +432,7 @@ void NetconEthernetTap::threadMain()
|
||||
fprintf(stderr, "- ARP_TMR_INTERVAL = %d\n", ARP_TMR_INTERVAL);
|
||||
fprintf(stderr, "- TCP_TMR_INTERVAL = %d\n", TCP_TMR_INTERVAL);
|
||||
fprintf(stderr, "- IP_TMR_INTERVAL = %d\n", IP_TMR_INTERVAL);
|
||||
*/
|
||||
|
||||
|
||||
// Main timer loop
|
||||
while (_run) {
|
||||
@ -928,7 +928,7 @@ err_t NetconEthernetTap::nc_sent(void* arg, struct tcp_pcb *tpcb, u16_t len)
|
||||
Larg *l = (Larg*)arg;
|
||||
if(len) {
|
||||
l->conn->acked+=len;
|
||||
dwr("W = %d, A = %d\n", l->conn->written, l->conn->acked);
|
||||
//dwr("W = %d, A = %d\n", l->conn->written, l->conn->acked);
|
||||
l->tap->_phy.setNotifyReadable(l->conn->dataSock, true);
|
||||
l->tap->_phy.whack();
|
||||
}
|
||||
@ -1397,7 +1397,7 @@ void NetconEthernetTap::handle_write(TcpConnection *conn)
|
||||
memmove(&conn->buf, (conn->buf+r), sz);
|
||||
}
|
||||
conn->idx -= r;
|
||||
conn->written+=err;
|
||||
conn->written+=r;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user