From f2449844b3af03c42bc33fb4bbc244123f05e054 Mon Sep 17 00:00:00 2001 From: Yichen Wang Date: Sat, 19 Aug 2017 00:57:37 -0700 Subject: [PATCH] Update nuttcp and iperf to latest Change-Id: I9e06e759f7ccd82b682b69aa0b631fdb607f324d --- .../nuttcp/{nuttcp-7.3.2.c => nuttcp-8.1.4.c} | 1094 ++++++++++++++--- vmtp/iperf_tool.py | 4 +- vmtp/nuttcp_tool.py | 7 +- vmtp/tools/iperf | Bin 68488 -> 0 bytes vmtp/tools/iperf-2.0.9 | Bin 0 -> 103920 bytes vmtp/tools/nuttcp-7.3.2 | Bin 154592 -> 0 bytes vmtp/tools/nuttcp-8.1.4 | Bin 0 -> 144624 bytes vmtp/vmtp.py | 11 +- 8 files changed, 959 insertions(+), 157 deletions(-) rename legal/nuttcp/{nuttcp-7.3.2.c => nuttcp-8.1.4.c} (91%) delete mode 100755 vmtp/tools/iperf create mode 100755 vmtp/tools/iperf-2.0.9 delete mode 100755 vmtp/tools/nuttcp-7.3.2 create mode 100755 vmtp/tools/nuttcp-8.1.4 diff --git a/legal/nuttcp/nuttcp-7.3.2.c b/legal/nuttcp/nuttcp-8.1.4.c similarity index 91% rename from legal/nuttcp/nuttcp-7.3.2.c rename to legal/nuttcp/nuttcp-8.1.4.c index 298d88b..e947ef3 100644 --- a/legal/nuttcp/nuttcp-7.3.2.c +++ b/legal/nuttcp/nuttcp-8.1.4.c @@ -1,8 +1,8 @@ /* - * N U T T C P . C v7.3.2 + * N U T T C P . C v8.1.4 * - * Copyright(c) 2000 - 2014 Bill Fink. All rights reserved. - * Copyright(c) 2003 - 2014 Rob Scott. All rights reserved. + * Copyright(c) 2000 - 2016 Bill Fink. All rights reserved. + * Copyright(c) 2003 - 2016 Rob Scott. All rights reserved. * * nuttcp is free, opensource software. You can redistribute it and/or * modify it under the terms of Version 2 of the GNU General Public @@ -18,7 +18,7 @@ * Developed by Bill Fink, billfink@mindspring.com * and Rob Scott, rob@hpcmo.hpc.mil * Latest version available at: - * http://lcp.nrl.navy.mil/nuttcp/ + * http://nuttcp.net/nuttcp/beta/ * * Test TCP connection. Makes a connection on port 5000(ctl)/5101(data) * and transfers fabricated buffers or data copied from stdin. @@ -29,6 +29,27 @@ * T.C. Slattery, USNA * Minor improvements, Mike Muuss and Terry Slattery, 16-Oct-85. * + * 8.1.4, Rob Scott, 1-Nov-16 + * Fix to allow compile with -Werror=format-security as noted by Dhiru Kholia in fedora bug 1037224 + * Fix missing brackets caught by -Wmisleading-indentation + * Add code to print out address family of connect/accept + * Add code to translate v4mapped addresses + * 8.1.3, Bill Fink, 9-Sep-16 + * Fix to allow direct I/O on block devices + * Fix parsing of "-R i[s]##[/##]" (blank between 'R' and 'i') + * Updated Copyright notice for new year + * 8.1.2, Bill Fink, 5-Sep-16 + * Fix to not exercise 8.0.1 and 8.1.1 features for non-Linux systems + * Changed nuttcp site to http://nuttcp.net/nuttcp/beta/ + * Added define test for NOT_LINUX to undefine LINUX for build testing + * 8.1.1, Bill Fink, 31-Aug-16 + * Add "-Ris##" option to emulate smoothed slow start behavior (Linux only) + * 8.0.1, Bill Fink, 22-Aug-16 + * Add reporting of TCP congestion window + * 7.3.4, Rob Scott & Bill Fink, 18-Jul-16 + * Use clock_gettime() on Windows/CYGWIN and Linux (if available) + * 7.3.3, Rob Scott, 1-May-15 + * Fix tos to work for ipv6 by setting traffic class * 7.3.2, Bill Fink, 3-Aug-14 * Allow longer server info timeout for third party via --idle-data-timeout * 7.3.1, Bill Fink, 27-Jul-14 @@ -501,6 +522,10 @@ static char RCSid[] = "@(#)$Revision: 1.2 $ (BRL)"; #endif */ +#ifdef NOT_LINUX +#undef linux +#endif + #ifndef WANT_WUR #undef _FORTIFY_SOURCE #else @@ -553,6 +578,18 @@ static char RCSid[] = "@(#)$Revision: 1.2 $ (BRL)"; #include #endif +#ifndef USE_GETTIMEOFDAY +#ifndef HAVE_CLOCK_GETTIME +#if (defined(linux) && defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 17)) || defined(__CYGWIN__) +#define HAVE_CLOCK_GETTIME +#endif +#endif +#endif + +#ifdef HAVE_CLOCK_GETTIME +#include /* clock_gettime */ +#endif + #ifndef ULLONG_MAX #define ULLONG_MAX 18446744073709551615ULL #endif @@ -615,6 +652,17 @@ typedef int socklen_t; #include "addrinfo.h" /* from missing */ #endif +/* + * The following macro is from openssh defines.h by Tatu Ylonen and marked "can be used freely for any purpose" + */ +#if !defined(IN6_IS_ADDR_V4MAPPED) +#define IN6_IS_ADDR_V4MAPPED(a) \ + ((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ + (*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ + (*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == \ + ntohl(0x0000ffff))) +#endif /* !defined(IN6_IS_ADDR_V4MAPPED) */ + #define BETA_STR "-beta8" #define BETA_FEATURES "jitter/owd" @@ -690,6 +738,12 @@ static struct sigaction savesigact; #define RETRANS_FMT_BRIEF_STR2 " retrans" #define RETRANS_FMT_INTERVAL " %5d %sretrans" #define RETRANS_FMT_IN "retrans = %d" +#define CWND_FMT " cwnd = %d KB" +#define CWND_FMT_BRIEF " %d KB-cwnd" +#define CWND_FMT_BRIEF_STR1 " %d = %d" +#define CWND_FMT_BRIEF_STR2 " KB-cwnd" +#define CWND_FMT_INTERVAL " %6d KB-cwnd" +#define CWND_FMT_IN "cwnd = %d" #define RTT_FMT " RTT=%.3f ms" #define RTT_FMT_BRIEF " %.2f msRTT" #define RTT_FMT_IN "RTT=%lf" @@ -756,6 +810,11 @@ static struct sigaction savesigact; #define P_RETRANS_FMT_BRIEF " %sretrans=%d" #define P_RETRANS_FMT_INTERVAL " %sretrans=%d" #define P_RETRANS_FMT_IN "retrans=%d" +#define P_CWND_FMT " cwnd=%d" +#define P_CWND_FMT_STREAMS " cwnd_by_stream=%d" +#define P_CWND_FMT_BRIEF " cwnd=%d" +#define P_CWND_FMT_INTERVAL " cwnd=%d" +#define P_CWND_FMT_IN "cwnd=%d" #define P_RTT_FMT " rtt_ms=%.3f" #define P_RTT_FMT_BRIEF " rtt_ms=%.2f" #define P_RTT_FMT_IN "rtt_ms=%lf" @@ -804,7 +863,10 @@ static struct sigaction savesigact; #define TCP_ADV_WIN_SCALE "/proc/sys/net/ipv4/tcp_adv_win_scale" #endif +#define DEBUGOUTPUT "/tmp/nuttcp-debugout.foo" + #define BRIEF_RETRANS_STREAMS 0x2 /* brief per stream retrans info */ +#define BRIEF_CWND_STREAMS 0x4 /* brief per stream cwnd info */ #define XMITSTATS 0x1 /* also give transmitter stats (MB) */ #define DEBUGINTERVAL 0x2 /* add info to assist with @@ -822,6 +884,8 @@ static struct sigaction savesigact; #define NOBETAMSG 0x400 /* suppress beta version message */ #define WANTRTT 0x800 /* output RTT info (default) */ #define DEBUGJITTER 0x1000 /* debugging info for jitter option */ +#define NOCWND 0x2000 /* no cwnd stats for "-i" */ +#define DEBUGIRATE 0x4000 /* debugging info for irate option */ #ifdef NO_IPV6 /* Build without IPv6 support */ #undef AF_INET6 @@ -836,6 +900,7 @@ static void err( char *s ); static void mes( char *s ); static void errmes( char *s ); void pattern( char *cp, int cnt ); +void get_timeofday( struct timeval *tv, struct timezone *tz ); void prep_timer(); double read_timer( char *str, int len ); static void prusage( struct rusage *r0, struct rusage *r1, struct timeval *e, struct timeval *b, char *outp ); @@ -849,15 +914,13 @@ int mread( int fd, char *bufp, unsigned n ); int mwrite( int fd, char *bufp, unsigned n, int last_write ); char *getoptvalp( char **argv, int index, int reqval, int *skiparg ); -int get_retrans( int sockfd ); - #if defined(linux) && defined(TCPI_OPT_TIMESTAMPS) void print_tcpinfo(); #endif -int vers_major = 7; -int vers_minor = 3; -int vers_delta = 2; +int vers_major = 8; +int vers_minor = 1; +int vers_delta = 4; int ivers; int rvers_major = 0; int rvers_minor = 0; @@ -907,6 +970,7 @@ int sendwinavail=0, rcvwinavail=0, winadjust=0; #if defined(linux) && defined(TCPI_OPT_TIMESTAMPS) #ifdef OLD_TCP_INFO +#define STRUCT_TCPINFO tcpinfo struct tcpinfo { /* for collecting TCP retransmission info */ struct tcp_info _tcpinf; /* add missing structure elements */ @@ -927,6 +991,7 @@ struct tcpinfo { /* for collecting TCP retransmission info */ #define tcpinfo_snd_ssthresh _tcpinf.tcpi_snd_ssthresh #define tcpinfo_snd_cwnd _tcpinf.tcpi_snd_cwnd #else +#define STRUCT_TCPINFO tcp_info struct tcp_info tcpinf; #define tcpinfo_state tcpi_state #define tcpinfo_ca_state tcpi_ca_state @@ -941,8 +1006,15 @@ struct tcp_info tcpinf; #define tcpinfo_snd_ssthresh tcpi_snd_ssthresh #define tcpinfo_snd_cwnd tcpi_snd_cwnd #endif +#else +#define STRUCT_TCPINFO dummy_tcp_info +struct dummy_tcp_info { + int dummy1; +} tcpinf; #endif +int get_retrans( int sockfd, struct STRUCT_TCPINFO *tcpinfo ); + int udp = 0; /* 0 = tcp, !0 = udp */ int udplossinfo = 0; /* set to 1 to give UDP loss info for * interval reporting */ @@ -959,6 +1031,14 @@ int got_0retrans = 0; /* set to 1 by client transmitter after * processing initial server output * having "0 retrans" */ +int init_pkt_cwnd = 0; /* initial congestion window in packets */ +int sss_pkt_cwnd = 0; /* smoothed slow start congestion window */ +int cwndinfo = 0; /* set to 1 to give TCP congestion window info + * for interval reporting */ +int send_cwnd = 1; /* set to 0 if no need to send cwnd info */ +int do_cwnd = 0; /* set to 1 for client transmitter */ +int read_cwnd = 1; /* set to 0 if no need to read cwnd info */ + int need_swap; /* client and server are different endian */ int options = 0; /* socket options */ int one = 1; /* for 4.3 BSD style setsockopt() */ @@ -1013,6 +1093,7 @@ unsigned long rate = MAXRATE; /* transmit rate limit in Kbps */ int maxburst = 1; /* number of packets allowed to exceed rate */ int nburst = 1; /* number of packets currently exceeding rate */ int irate = -1; /* instantaneous rate limit if set */ +int iratesss = 0; /* set if emulating smoothed slow start */ double pkt_time; /* packet transmission time in seconds */ double pkt_time_ms; /* packet transmission time in milliseconds */ uint64_t irate_pk_usec; /* packet transmission time in microseconds */ @@ -1100,6 +1181,7 @@ pid_t pid; /* process id when forking server process */ pid_t wait_pid; /* return of wait system call */ int pidstat; /* status of forked process */ FILE *ctlconn; /* uses fd[0] for control channel */ +FILE *debugout; /* used for voluminous nuttcp debug output */ int savestdin; /* used to save real standard in */ int savestdout; /* used to save real standard out */ int firsttime = 1; /* flag for first pass through server */ @@ -1147,8 +1229,11 @@ Usage (transmitter): nuttcp [-t] [-options] [ctl_addr/]host [3rd-party] [ (default: 15/30/60)\n" @@ -1223,8 +1311,11 @@ Format options:\n\ -fxmitstats also give transmitter stats (MB) with -i (UDP only)\n\ -frunningtotal also give cumulative stats on interval reports\n\ -f-drops don't give packet drop info on brief output (UDP)\n\ - -f-retrans don't give retrans info on brief output (TCP)\n\ - -f-percentloss don't give %%loss info on brief output (UDP)\n\ + -f-retrans don't give retrans info on brief output (TCP)\n" +#if defined(linux) +" -f-cwnd don't give cwnd info on brief output (TCP)\n" +#endif +" -f-percentloss don't give %%loss info on brief output (UDP)\n\ -fparse generate key=value parsable output\n\ -f-beta suppress beta version message\n\ -f-rtt suppress RTT info \n\ @@ -1246,10 +1337,12 @@ uint64_t chk_nbytes = 0; /* byte counter used to test if no more data * client transmitter went away */ double rtt = 0.0; /* RTT between client and server in ms */ +int which_rt = 1; /* which round trip for "-Ris" */ uint32_t nretrans[MAXSTREAM+1]; /* number of TCP retransmissions */ uint32_t iretrans[MAXSTREAM+1]; /* initial number of TCP retransmissions */ uint32_t pretrans = 0; /* previous number of TCP retransmissions */ uint32_t sretrans = 0; /* number of system TCP retransmissions */ +uint32_t cwnd[MAXSTREAM+1]; /* TCP congestion window in KB */ int numCalls = 0; /* # of NRead/NWrite calls. */ int nstream = 1; /* number of streams */ @@ -1408,9 +1501,14 @@ sigalarm( int signum ) exit(1); } +#ifdef HAVE_CLOCK_GETTIME + timec.tv_sec = 0; /* silence bogus compiler warning */ + timec.tv_usec = 0; /* silence bogus compiler warning */ +#endif + if (interval && !trans) { /* Get real time */ - gettimeofday(&timec, (struct timezone *)0); + get_timeofday(&timec, (struct timezone *)0); tvsub( &timed, &timec, &timep ); realtd = timed.tv_sec + ((double)timed.tv_usec) / 1000000; if (realtd <= 0.0) realtd = 0.000001; @@ -1526,6 +1624,18 @@ sigalarm( int signum ) *cp1++ = *cp2--; } } + if (read_cwnd) { + cwnd[1] = *(uint32_t *)(buf + 28); + if (need_swap) { + cp1 = (char *)&cwnd[1]; + cp2 = buf + 31; + for ( i = 0; i < 4; i++ ) + *cp1++ = *cp2--; + } + if ((cwnd[1] == 0x5254524Eu) || /* "RTRN" */ + (cwnd[1] == 0x48525452u)) /* "HRTR" */ + cwnd[1] = init_pkt_cwnd; + } if (*ident) fprintf(stdout, "%s: ", ident + 1); if (format & PARSE) @@ -1607,6 +1717,14 @@ sigalarm( int signum ) ((retransinfo == 1) || !nrbytes) ? "" : "host-"); } + if (read_cwnd && sinkmode) { + if (format & PARSE) + fprintf(stdout, P_CWND_FMT_INTERVAL, + cwnd[1]); + else + fprintf(stdout, CWND_FMT_INTERVAL, + cwnd[1]); + } if ((do_owd & OWD_MIN) && nowdi) { if (format & PARSE) strcpy(fmt, P_OWD_MIN_FMT_INTERVAL); @@ -1691,6 +1809,16 @@ sigalarm( int signum ) !nrbytes) ? "" : "host-"); } + if (read_cwnd && sinkmode) { + if (format & PARSE) + fprintf(stdout, + P_CWND_FMT_INTERVAL, + cwnd[1]); + else + fprintf(stdout, + CWND_FMT_INTERVAL, + cwnd[1]); + } } if (udplossinfo && (format & XMITSTATS)) { if (format & PARSE) @@ -1751,11 +1879,11 @@ main( int argc, char **argv ) *host3res, *mcres = NULL; union sockaddr_union client_ipaddr; struct sockaddr_storage dummy; - struct timeval time_eod; /* time EOD packet was received */ - struct timeval time_eod0; /* time EOD0 packet was received */ + struct timeval time_eod = {0}; /* time EOD packet was received */ + struct timeval time_eod0 = {0}; /* time EOD0 packet was received */ struct timeval timed; /* time delta */ - struct timeval timeconn1; /* time before connect() for RTT */ - struct timeval timeconn2; /* time after connect() for RTT */ + struct timeval timeconn1 = {0}; /* time before connect() for RTT */ + struct timeval timeconn2 = {0}; /* time after connect() for RTT */ struct timeval timeconn; /* time to connect() == RTT */ union { unsigned char buf[sizeof(struct in_addr)]; @@ -1765,7 +1893,9 @@ main( int argc, char **argv ) int skiparg; int reqval; int got_srvr_retrans; - uint32_t total_retrans = 0; + int got_srvr_cwnd; + uint32_t total_retrans = 0; /* total retrans for all streams */ + uint32_t total_snd_cwnd = 0; /* total cwnd for all streams in KB */ double idle_data_min = IDLE_DATA_MIN; double idle_data_max = IDLE_DATA_MAX; double default_idle_data = DEFAULT_IDLE_DATA; @@ -2078,28 +2208,39 @@ main( int argc, char **argv ) b_flag = 1; send_retrans = 0; read_retrans = 0; + send_cwnd = 0; + read_cwnd = 0; } break; case 'R': reqval = 1; haverateopt = 1; - if (argv[0][2] == 'i') { - cp1 = getoptvalp(argv, 3, reqval, &skiparg); + cp1 = getoptvalp(argv, 2, reqval, &skiparg); + if (*cp1 == 'i') { + cp1++; + if (*cp1 == 's') { + cp1++; +#if defined(linux) + iratesss = 1; +#else + fprintf(stderr, "smoothed slow start not supported for non-Linux\n"); + fflush(stderr); +#endif + } sscanf(cp1, "%lf", &rate_opt); irate = 1; } - else if (argv[0][2] == 'a') { - cp1 = getoptvalp(argv, 3, reqval, &skiparg); + else if (*cp1 == 'a') { + cp1++; sscanf(cp1, "%lf", &rate_opt); irate = 0; } - else if (argv[0][2] == 'u') { + else if (*cp1 == 'u') { + cp1++; rate_opt = 0.0; irate = 0; - cp1 = &argv[0][3]; } else { - cp1 = getoptvalp(argv, 2, reqval, &skiparg); sscanf(cp1, "%lf", &rate_opt); } if ((cp2 = strchr(cp1, '/'))) { @@ -2202,6 +2343,14 @@ main( int argc, char **argv ) brief = atoi(cp1); if (strchr(cp1, 'r')) brief |= BRIEF_RETRANS_STREAMS; + if (strchr(cp1, 'c')) { +#if defined(linux) + brief |= BRIEF_CWND_STREAMS; +#else + fprintf(stderr, "\"-bc\" option not supported for non-Linux\n"); + fflush(stderr); +#endif + } } else brief = 1; @@ -2237,16 +2386,24 @@ main( int argc, char **argv ) format |= NOPERCENTLOSS; else if (strcmp(&argv[0][2], "-drops") == 0) format |= NODROPS; - else if (strcmp(&argv[0][2], "-retrans") == 0) + else if (strcmp(&argv[0][2], "-retrans") == 0) { format |= NORETRANS; + format |= NOCWND; + } else if (strcmp(&argv[0][2], "debugretrans") == 0) format |= DEBUGRETRANS; + else if (strcmp(&argv[0][2], "-cwnd") == 0) + format |= NOCWND; else if (strcmp(&argv[0][2], "debugpoll") == 0) format |= DEBUGPOLL; else if (strcmp(&argv[0][2], "debugmtu") == 0) format |= DEBUGMTU; else if (strcmp(&argv[0][2], "debugjitter") == 0) format |= DEBUGJITTER; +#if defined(linux) + else if (strcmp(&argv[0][2], "debugirate") == 0) + format |= DEBUGIRATE; +#endif else if (strcmp(&argv[0][2], "parse") == 0) format |= PARSE; else if (strcmp(&argv[0][2], "-beta") == 0) @@ -2973,6 +3130,34 @@ main( int argc, char **argv ) interval = 0; } + if (iratesss) { + if (udp) { + fprintf(stderr, "ignoring smoothed slow start option for udp transfer\n"); + fflush(stderr); + iratesss = 0; + } + if (maxburst > 1) { + fprintf(stderr, "ignoring maxburst option with smoothed slow start option\n"); + fflush(stderr); + maxburst = 1; + } + if (nstream > 1) { + fprintf(stderr, "ignoring smoothed slow start option for multiple streams\n"); + fflush(stderr); + iratesss = 0; + } + if (format & NORETRANS) { + fprintf(stderr, "can't do smoothed slow start if no retransmission info\n"); + fflush(stderr); + iratesss = 0; + } + if (!(format & NORETRANS) && (format & NOCWND)) { + fprintf(stderr, "can't do smoothed slow start if no congestion window info\n"); + fflush(stderr); + iratesss = 0; + } + } + if (clientserver) { if (trans) { fprintf(stderr, "server mode only allowed for receiver\n"); @@ -3288,6 +3473,9 @@ main( int argc, char **argv ) if (!udp && trans) { if (buflen >= 32) { retransinfo = 1; +#if defined(linux) + cwndinfo = 1; +#endif b_flag = 1; } else @@ -3310,7 +3498,8 @@ main( int argc, char **argv ) errno = error_num; err("posix_memalign"); } - } else + } + else #endif if ((buf = (char *)malloc(mallocsize)) == (char *)NULL) err("malloc"); @@ -3336,24 +3525,30 @@ main( int argc, char **argv ) doit: if (!udp && trans && (format & DEBUGRETRANS)) { - sretrans = get_retrans(-1); + sretrans = get_retrans(-1, &tcpinf); fprintf(stdout, "initial system retrans = %d\n", sretrans); } nretrans[0] = 0; + cwnd[0] = 0; for ( stream_idx = 1; stream_idx <= nstream; stream_idx++ ) { fd[stream_idx] = -1; nretrans[stream_idx] = 0; + cwnd[stream_idx] = 0; } for ( stream_idx = start_idx; stream_idx <= nstream; stream_idx++ ) { if (clientserver && (stream_idx == 1)) { retransinfo = 0; + cwndinfo = 0; if (nstream == 1) { send_retrans = 1; read_retrans = 1; + send_cwnd = 1; + read_cwnd = 1; } do_retrans = 0; + do_cwnd = 0; got_0retrans = 0; if (client) { if (udp && !host3 && !traceroute) { @@ -3857,6 +4052,20 @@ doit: abortconn = 1; } } + if (irvers >= 80101) { + fprintf(ctlconn, ", iratesss = %d", iratesss); + } + else { + if (iratesss && !trans) { + fprintf(stdout, "nuttcp%s%s: smoothed slow start option not supported by server version %d.%d.%d, need >= 8.1.1\n", + trans?"-t":"-r", + ident, rvers_major, + rvers_minor, + rvers_delta); + fflush(stdout); + iratesss = 0; + } + } fprintf(ctlconn, "\n"); fflush(ctlconn); if (abortconn) { @@ -3883,6 +4092,12 @@ doit: else read_retrans = 0; } + if (udp || (buflen < 32) || (irvers < 80001)) { + if (trans) + send_cwnd = 0; + else + read_cwnd = 0; + } if (strncmp(buf, "OK", 2) != 0) { mes("error from server"); fprintf(stderr, "server "); @@ -4177,6 +4392,16 @@ doit: else { srcport = 0; } + if (irvers >= 80101) { + sscanf(strstr(buf, ", iratesss =") + 13, + "%d", &iratesss); + } + else { + iratesss = 0; + } +#if !defined(linux) + iratesss = 0; +#endif trans = !trans; if (inetd && !sinkmode) { fputs("KO\n", stdout); @@ -4206,7 +4431,8 @@ doit: errno = error_num; err("posix_memalign"); } - } else + } + else #endif if ((buf = (char *)malloc(mallocsize)) == (char *)NULL) err("malloc"); @@ -4239,6 +4465,8 @@ doit: b_flag = 1; send_retrans = 0; read_retrans = 0; + send_cwnd = 0; + read_cwnd = 0; } if (rate == 0) rate = MAXRATE; @@ -4274,6 +4502,28 @@ doit: fputs("KO\n", stdout); goto cleanup; } + if (iratesss) { + if (udp) { + fputs("KO\n", stdout); + mes("iratesss not allowed for udp"); + fputs("KO\n", stdout); + goto cleanup; + } + if (maxburst > 1) { + fputs("KO\n", stdout); + mes("maxburst > 1 not allowed with iratesss"); + fprintf(stdout, "maxburst = %d\n", maxburst); + fputs("KO\n", stdout); + goto cleanup; + } + if (nstream > 1) { + fputs("KO\n", stdout); + mes("nstream > 1 not allowed with iratesss"); + fprintf(stdout, "nstream = %d\n", nstream); + fputs("KO\n", stdout); + goto cleanup; + } + } if (host3 && ctlport3 && (ctlport3 < 1024)) { fputs("KO\n", stdout); mes("invalid ctlport3"); @@ -4461,6 +4711,12 @@ doit: else read_retrans = 0; } + if (udp || (buflen < 32) || (irvers < 80001)) { + if (trans) + send_cwnd = 0; + else + read_cwnd = 0; + } } } @@ -4640,7 +4896,8 @@ doit: else { err("unsupported AF"); } - } else { + } + else { sinhim[stream_idx].sin_family = af; if (ipad_stride.ip32 && (stream_idx > 1)) { sinhim[stream_idx].sin_addr.s_addr = @@ -4673,7 +4930,8 @@ doit: sinhim6[stream_idx].sin6_port = htons(ctlport); sinme6[stream_idx].sin6_port = htons(srcctlport); /* default is free choice */ #endif - } else { + } + else { sinhim[stream_idx].sin_port = htons(port + stream_idx - 1); sinme[stream_idx].sin_port = htons(srcport); /* default is free choice */ #ifdef AF_INET6 @@ -4681,7 +4939,8 @@ doit: sinme6[stream_idx].sin6_port = htons(srcport); /* default is free choice */ #endif } - } else { + } + else { /* rcvr listens for connections (unless reversed) */ if (stream_idx == 0) { sinme[stream_idx].sin_port = htons(ctlport); @@ -4690,7 +4949,8 @@ doit: sinme6[stream_idx].sin6_port = htons(ctlport); sinhim6[stream_idx].sin6_port = htons(srcctlport); /* default is free choice */ #endif - } else { + } + else { sinme[stream_idx].sin_port = htons(port + stream_idx - 1); sinhim[stream_idx].sin_port = htons(srcport); /* default is free choice */ #ifdef AF_INET6 @@ -4825,8 +5085,8 @@ doit: if (clientserver && (stream_idx == 1)) { if (!udp && trans) { - nretrans[0] = get_retrans(fd[0]); - if (retransinfo > 0) + nretrans[0] = get_retrans(fd[0], &tcpinf); + if ((retransinfo > 0) || cwndinfo) b_flag = 1; } } @@ -4914,6 +5174,8 @@ doit: fprintf(stdout, " rate_limit=%.3f rate_unit=Mbps rate_mode=%s", (double)rate/1000, irate ? "instantaneous" : "aggregate"); + if (iratesss) + fprintf(stdout, " smoothed_slow_start=on"); if (maxburst > 1) fprintf(stdout, " packet_burst=%d", maxburst); @@ -4955,6 +5217,8 @@ doit: fprintf(stdout, " rate limit = %.3f Mbps (%s)", (double)rate/1000, irate ? "instantaneous" : "aggregate"); + if (iratesss) + fprintf(stdout, " with smoothed slow start"); if (maxburst > 1) fprintf(stdout, ", packet burst = %d", maxburst); @@ -4972,7 +5236,8 @@ doit: if ((rate != MAXRATE) || tos) fprintf(stdout, "\n"); } - } else { + } + else { if ((brief <= 0) && (format & PARSE)) { fprintf(stdout, "nuttcp-r%s: buflen=%d ", ident, buflen); @@ -5023,9 +5288,21 @@ doit: errmes("unable to setsockopt SO_RCVBUF"); } if (tos) { - if (setsockopt(fd[stream_idx], IPPROTO_IP, IP_TOS, - (void *)&tos, sizeof(tos)) < 0) - err("setsockopt"); + if (af == AF_INET) { + if (setsockopt(fd[stream_idx], IPPROTO_IP, IP_TOS, + (void *)&tos, sizeof(tos)) < 0) + err("setsockopt"); + } + #ifdef AF_INET6 + else if (af == AF_INET6) { + if (setsockopt(fd[stream_idx], IPPROTO_IPV6, IPV6_TCLASS, + (void *)&tos, sizeof(tos)) < 0) + err("setsockopt"); + } + #endif + else { + err("unsupported AF"); + } } if (nodelay && !udp) { struct protoent *p; @@ -5036,7 +5313,8 @@ doit: if ((stream_idx == nstream) && (brief <= 0)) mes("nodelay"); } - } else { + } + else { /* Set the receiver options */ if (rcvwin) { if (setsockopt(fd[stream_idx], SOL_SOCKET, SO_RCVBUF, @@ -5047,9 +5325,21 @@ doit: errmes("unable to setsockopt SO_SNDBUF"); } if (tos) { - if (setsockopt(fd[stream_idx], IPPROTO_IP, IP_TOS, - (void *)&tos, sizeof(tos)) < 0) - err("setsockopt"); + if (af == AF_INET) { + if (setsockopt(fd[stream_idx], IPPROTO_IP, IP_TOS, + (void *)&tos, sizeof(tos)) < 0) + err("setsockopt"); + } + #ifdef AF_INET6 + else if (af == AF_INET6) { + if (setsockopt(fd[stream_idx], IPPROTO_IPV6, IPV6_TCLASS, + (void *)&tos, sizeof(tos)) < 0) + err("setsockopt"); + } + #endif + else { + err("unsupported AF"); + } } } } @@ -5093,7 +5383,7 @@ doit: } num_connect_tries++; if (stream_idx == 1) - gettimeofday(&timeconn1, (struct timezone *)0); + get_timeofday(&timeconn1, (struct timezone *)0); if (af == AF_INET) { error_num = connect(fd[stream_idx], (struct sockaddr *)&sinhim[stream_idx], sizeof(sinhim[stream_idx])); } @@ -5189,7 +5479,7 @@ doit: } } if (stream_idx == 1) { - gettimeofday(&timeconn2, (struct timezone *)0); + get_timeofday(&timeconn2, (struct timezone *)0); tvsub( &timeconn, &timeconn2, &timeconn1 ); rtt = timeconn.tv_sec*1000 + ((double)timeconn.tv_usec)/1000; @@ -5214,13 +5504,22 @@ doit: if ((stream_idx == nstream) && (brief <= 0)) { char tmphost[ADDRSTRLEN] = "\0"; if (af == AF_INET) { - inet_ntop(af, &sinhim[stream_idx].sin_addr.s_addr, - tmphost, sizeof(tmphost)); + inet_ntop(af, &sinhim[stream_idx].sin_addr.s_addr, tmphost, sizeof(tmphost)); } #ifdef AF_INET6 else if (af == AF_INET6) { - inet_ntop(af, sinhim6[stream_idx].sin6_addr.s6_addr, - tmphost, sizeof(tmphost)); + if (!IN6_IS_ADDR_V4MAPPED(&sinhim6[stream_idx].sin6_addr)) { + inet_ntop(af, sinhim6[stream_idx].sin6_addr.s6_addr, tmphost, sizeof(tmphost)); + } + else { + af = AF_INET; + bcopy(((char *)&sinhim6[stream_idx].sin6_addr) + 12, + (char *)&sinhim[stream_idx].sin_addr, + sizeof(struct in_addr)); + sinhim[stream_idx].sin_family = AF_INET; + // port gets put in both structs, no translate or copy needed + inet_ntop(af, &sinhim[stream_idx].sin_addr.s_addr, tmphost, sizeof(tmphost)); + } } #endif else { @@ -5241,11 +5540,9 @@ doit: } else { fprintf(stdout, - "nuttcp%s%s: connect to %s", + "nuttcp%s%s: connect to %s with", trans?"-t":"-r", ident, tmphost); - if (rtt || (trans && datamss)) - fprintf(stdout, " with"); if (trans && datamss) { fprintf(stdout, " mss=%d", datamss); @@ -5255,9 +5552,21 @@ doit: if (rtt) fprintf(stdout, RTT_FMT, rtt); } + if (af == AF_INET) { + fprintf(stdout, " af=inet"); + } +#ifdef AF_INET6 + else if (af == AF_INET6) { + fprintf(stdout, " af=inet6"); + } +#endif + else { + fprintf(stdout, " af=%d", af); + } fprintf(stdout, "\n"); } - } else { + } + else { /* The receiver listens for the connection * (unless reversed by the flip option) */ @@ -5407,8 +5716,7 @@ acceptnewconn: } if ((stream_idx == nstream) && (brief <= 0)) { char tmphost[ADDRSTRLEN] = "\0"; - inet_ntop(af, &peer.sin_addr.s_addr, - tmphost, sizeof(tmphost)); + inet_ntop(af, &peer.sin_addr.s_addr, tmphost, sizeof(tmphost)); if (format & PARSE) { fprintf(stdout, @@ -5422,14 +5730,25 @@ acceptnewconn: } else { fprintf(stdout, - "nuttcp%s%s: accept from %s", + "nuttcp%s%s: accept from %s with", trans?"-t":"-r", ident, tmphost); if (trans && datamss) { - fprintf(stdout, " with mss=%d", + fprintf(stdout, " mss=%d,", datamss); } } + if (af == AF_INET) { + fprintf(stdout, " af=inet"); + } +#ifdef AF_INET6 + else if (af == AF_INET6) { + fprintf(stdout, " af=inet6"); + } +#endif + else { + fprintf(stdout, " af=%d", af); + } fprintf(stdout, "\n"); } if (stream_idx == 0) { @@ -5440,17 +5759,28 @@ acceptnewconn: } #ifdef AF_INET6 else if (af == AF_INET6) { - struct sockaddr_in6 peer; - socklen_t peerlen = sizeof(peer); + struct sockaddr_in6 peer6; + struct sockaddr_in peer4; + socklen_t peerlen = sizeof(peer6); if (getpeername(fd[stream_idx], - (struct sockaddr *)&peer, + (struct sockaddr *)&peer6, &peerlen) < 0) { err("getpeername"); } if ((stream_idx == nstream) && (brief <= 0)) { char tmphost[ADDRSTRLEN] = "\0"; - inet_ntop(af, peer.sin6_addr.s6_addr, - tmphost, sizeof(tmphost)); + if (!IN6_IS_ADDR_V4MAPPED(&peer6.sin6_addr)) { + inet_ntop(af, peer6.sin6_addr.s6_addr, tmphost, sizeof(tmphost)); + } + else { + af = AF_INET; + bcopy(((char *)&peer6.sin6_addr.s6_addr) + 12, + (char *)&peer4.sin_addr.s_addr, + sizeof(struct in_addr)); + peer4.sin_family = AF_INET; + peer4.sin_port = peer6.sin6_port; + inet_ntop(af, &peer4.sin_addr.s_addr, tmphost, sizeof(tmphost)); + } if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: accept=%s", @@ -5462,21 +5792,39 @@ acceptnewconn: } else { fprintf(stdout, - "nuttcp%s%s: accept from %s", + "nuttcp%s%s: accept from %s with", trans?"-t":"-r", ident, tmphost); if (trans && datamss) { - fprintf(stdout, " with mss=%d", + fprintf(stdout, " mss=%d,", datamss); } } + if (af == AF_INET) { + fprintf(stdout, " af=inet"); + } +#ifdef AF_INET6 + else if (af == AF_INET6) { + fprintf(stdout, " af=inet6"); + } +#endif + else { + fprintf(stdout, " af=%d", af); + } fprintf(stdout, "\n"); } if (stream_idx == 0) { - clientaddr6 = peer.sin6_addr; - clientscope6 = peer.sin6_scope_id; - client_ipaddr.ss.ss_family = AF_INET6; - client_ipaddr.sin6.sin6_addr = clientaddr6; + if (af == AF_INET6) { // we didnt fix a mapped v4 ip + clientaddr6 = peer6.sin6_addr; + clientscope6 = peer6.sin6_scope_id; + client_ipaddr.ss.ss_family = AF_INET6; + client_ipaddr.sin6.sin6_addr = clientaddr6; + } + else { // mapped so af is AF_INET + clientaddr = peer4.sin_addr; + client_ipaddr.ss.ss_family = AF_INET; + client_ipaddr.sin.sin_addr = clientaddr; + } } } #endif @@ -5488,8 +5836,20 @@ acceptnewconn: if (!udp && trans && (stream_idx >= 1) && (retransinfo > 0)) { if ((stream_idx == 1) || (retransinfo == 1)) { nretrans[stream_idx] = - get_retrans(fd[stream_idx]); + get_retrans(fd[stream_idx], &tcpinf); iretrans[stream_idx] = nretrans[stream_idx]; +#if defined(linux) + if (retransinfo == 1) { + cwnd[stream_idx] = + tcpinf.tcpinfo_snd_cwnd + *datamss/1024; + if (stream_idx == 1) { + init_pkt_cwnd = + tcpinf.tcpinfo_snd_cwnd; + sss_pkt_cwnd = init_pkt_cwnd; + } + } +#endif } } optlen = sizeof(sendwinval); @@ -5569,6 +5929,12 @@ acceptnewconn: fprintf(stdout, "nuttcp%s%s: send_window_avail=%d receive_window_avail=%d\n", trans?"-t":"-r", ident, sendwinavail, rcvwinavail); else fprintf(stdout, "nuttcp%s%s: available send window = %d, available receive window = %d\n", trans?"-t":"-r", ident, sendwinavail, rcvwinavail); + if (!udp && trans && init_pkt_cwnd) { + if (format & PARSE) + fprintf(stdout, "nuttcp%s%s: initial_congestion_window_kb=%d initial_congestion_window_pkt=%d\n", trans?"-t":"-r", ident, init_pkt_cwnd*datamss/1024, init_pkt_cwnd); + else + fprintf(stdout, "nuttcp%s%s: initial congestion window = %d KB (%d packets)\n", trans?"-t":"-r", ident, init_pkt_cwnd*datamss/1024, init_pkt_cwnd); + } #endif } } @@ -5760,14 +6126,21 @@ acceptnewconn: } else { if (rate_pps) - sprintf(tmpargs[j], "-R%s%lup", - irate ? "i" : "", rate); + sprintf(tmpargs[j], + "-R%s%s%lup", + irate ? "i" : "", + iratesss ? "s" : "", + rate); else - sprintf(tmpargs[j], "-R%s%lu", - irate ? "i" : "", rate); + sprintf(tmpargs[j], + "-R%s%s%lu", + irate ? "i" : "", + iratesss ? "s" : "", + rate); } cmdargs[i++] = tmpargs[j++]; - } else { + } + else { if (udp && !multicast) cmdargs[i++] = "-R0"; } @@ -5831,6 +6204,8 @@ acceptnewconn: cmdargs[i++] = "-f-drops"; if (format & NORETRANS) cmdargs[i++] = "-f-retrans"; + if (!(format & NORETRANS) && (format & NOCWND)) + cmdargs[i++] = "-f-cwnd"; if (format & PARSE) cmdargs[i++] = "-fparse"; } @@ -6233,12 +6608,13 @@ acceptnewconn: inet_ntop(mc_af, &mc_group.imr_multiaddr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=0\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: receive from multicast source %s\n", trans?"-t":"-r", ident, @@ -6247,6 +6623,7 @@ acceptnewconn: "nuttcp%s%s: using asm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #ifdef AF_INET6 @@ -6286,12 +6663,13 @@ acceptnewconn: inet_ntop(mc_af, &mc6_group.ipv6mr_multiaddr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=0\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: receive from multicast source %s\n", trans?"-t":"-r", ident, @@ -6300,6 +6678,7 @@ acceptnewconn: "nuttcp%s%s: using asm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #endif /* AF_INET6 */ @@ -6348,12 +6727,13 @@ acceptnewconn: multsrc, sizeof(multsrc)); inet_ntop(mc_af, &group->sin_addr.s_addr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=1\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: receive from multicast source %s\n", trans?"-t":"-r", ident, @@ -6362,6 +6742,7 @@ acceptnewconn: "nuttcp%s%s: using ssm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #ifdef AF_INET6 @@ -6408,12 +6789,13 @@ acceptnewconn: multsrc, sizeof(multsrc)); inet_ntop(mc_af, &group->sin6_addr.s6_addr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=1\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: receive from multicast source %s\n", trans?"-t":"-r", ident, @@ -6422,6 +6804,7 @@ acceptnewconn: "nuttcp%s%s: using ssm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #endif /* AF_INET6 */ @@ -6585,12 +6968,13 @@ acceptnewconn: multsrc, sizeof(multsrc)); inet_ntop(mc_af, &sinhim[1].sin_addr.s_addr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=1\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: sending from multicast source %s\n", trans?"-t":"-r", ident, @@ -6599,6 +6983,7 @@ acceptnewconn: "nuttcp%s%s: using ssm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #ifdef AF_INET6 @@ -6637,12 +7022,13 @@ acceptnewconn: multsrc, sizeof(multsrc)); inet_ntop(mc_af, &sinhim6[1].sin6_addr.s6_addr, multaddr, sizeof(multaddr)); - if (format & PARSE) + if (format & PARSE) { fprintf(stdout, "nuttcp%s%s: multicast_source=%s multicast_group=%s ssm=1\n", trans?"-t":"-r", ident, multsrc, multaddr); - else + } + else { fprintf(stdout, "nuttcp%s%s: sending from multicast source %s\n", trans?"-t":"-r", ident, @@ -6651,6 +7037,7 @@ acceptnewconn: "nuttcp%s%s: using ssm on multicast group %s\n", trans?"-t":"-r", ident, multaddr); + } } } #endif /* AF_INET6 */ @@ -6734,6 +7121,13 @@ acceptnewconn: irate_pk_nsec = (pkt_time*1000000 - irate_pk_usec)*1000; pkt_time_ms = pkt_time*1000; } +#ifdef DEBUG + if (irate && (format & DEBUGIRATE)) { + debugout = fopen(DEBUGOUTPUT, "a+"); + if (debugout) + fprintf(debugout, "BEGIN nuttcp debug output\n"); + } +#endif prep_timer(); errno = 0; stream_idx = 0; @@ -6793,7 +7187,7 @@ acceptnewconn: } if (udplossinfo) bcopy(&nbytes, buf + 24, 8); - if (!udp && interval && !(format & NORETRANS) && + if (!udp && !(format & NORETRANS) && (nstream == 1) && ((retransinfo == 1) || ((retransinfo >= 2) && @@ -6801,9 +7195,10 @@ acceptnewconn: uint32_t tmp; if (client) { - if (send_retrans) + if (trans || send_retrans) do_retrans = 1; - send_retrans = 0; + if (trans) + send_retrans = 1; if (!udp) bzero(buf + 24, 8); } @@ -6823,6 +7218,22 @@ acceptnewconn: if (!udp) bzero(buf + 24, 8); } + if (!udp && !(format & NOCWND) && + (nstream == 1) && cwndinfo) { + if (client) { + if (trans || send_cwnd) + do_cwnd = 1; + if (trans) + send_cwnd = 1; + } + else { + do_cwnd = 0; + } + } + else { + send_cwnd = 0; + do_cwnd = 0; + } if (nbuf == INT_MAX) nbuf = ULLONG_MAX; if (!client) { @@ -6882,10 +7293,18 @@ acceptnewconn: bcopy(&nbytes, buf + 24, 8); if (send_retrans) { nretrans[1] = get_retrans( - fd[stream_idx + 1]); + fd[stream_idx + 1], + &tcpinf); nretrans[1] -= iretrans[1]; bcopy(&nretrans[1], buf + 24, 4); } +#if defined(linux) + if (send_cwnd) { + cwnd[1] = tcpinf.tcpinfo_snd_cwnd + *datamss/1024; + bcopy(&cwnd[1], buf + 28, 4); + } +#endif stream_idx++; stream_idx = stream_idx % nstream; if (do_poll && @@ -6989,6 +7408,20 @@ acceptnewconn: got_0retrans = 1; } } + else if (strstr(intervalbuf, + "KB-cwnd")) { + if (strstr(intervalbuf, + "host-retrans")) + *(cp1 - 34) = '\0'; + else if (strstr( + intervalbuf, + "retrans")) + *(cp1 - 29) = '\0'; + else { + *cp1 = '\0'; + got_0retrans = 1; + } + } else { if (strstr(intervalbuf, "host-retrans")) @@ -7026,7 +7459,8 @@ acceptnewconn: if (do_retrans && sinkmode) { nretrans[1] = get_retrans(fd[stream_idx - + 1]); + + 1], + &tcpinf); nretrans[1] -= iretrans[1]; if (format & PARSE) fprintf(stdout, @@ -7044,6 +7478,21 @@ acceptnewconn: "" : "host-"); pretrans = nretrans[1]; } +#if defined(linux) + if (do_cwnd && sinkmode) { + cwnd[1] = + tcpinf.tcpinfo_snd_cwnd + *datamss/1024; + if (format & PARSE) + fprintf(stdout, + P_CWND_FMT_INTERVAL, + cwnd[1]); + else + fprintf(stdout, + CWND_FMT_INTERVAL, + cwnd[1]); + } +#endif if (do_retrans && cp1 && ch) { *cp1 = ch; fputs(cp1, stdout); @@ -7070,7 +7519,8 @@ acceptnewconn: strcpy(buf, "EOD0"); (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr end */ } - } else { + } + else { first_read = 1; first_jitter = 1; first_jitteri = 1; @@ -7090,7 +7540,7 @@ acceptnewconn: while (((cnt=Nread(fd[stream_idx + 1], buf, buflen)) > 0) && !intr) { if (cnt <= 4) { if (strncmp(buf, "EOD0", 4) == 0) { - gettimeofday(&time_eod0, + get_timeofday(&time_eod0, (struct timezone *)0); got_eod0 = 1; done = 1; @@ -7098,7 +7548,7 @@ acceptnewconn: } if (strncmp(buf, "EOD", 3) == 0) { ocorrection = buf[3] - '0'; - gettimeofday(&time_eod, + get_timeofday(&time_eod, (struct timezone *)0); done = 1; break; /* "EOF" */ @@ -7126,8 +7576,8 @@ acceptnewconn: else if (got_eod0) { /* got data after EOD0, so * extend EOD0 time */ - gettimeofday(&time_eod0, - (struct timezone *)0); + get_timeofday(&time_eod0, + (struct timezone *)0); } if (!got_begin) continue; @@ -7162,7 +7612,7 @@ acceptnewconn: } if (do_jitter) { if (first_jitter) { - gettimeofday( + get_timeofday( &timepkr, (struct timezone *)0); timepkri = timepkr; @@ -7211,7 +7661,7 @@ acceptnewconn: */ if (!do_owd) { - gettimeofday(&timerx, + get_timeofday(&timerx, (struct timezone *)0); } if (do_jitter & JITTER_IGNORE_OOO) { @@ -7264,7 +7714,7 @@ acceptnewconn: continue; } if (first_jitteri) { - gettimeofday( + get_timeofday( &timepkri, (struct timezone *)0); first_jitteri = 0; @@ -7309,7 +7759,8 @@ acceptnewconn: ((double)timed.tv_usec) / 1000000; } - } else { + } + else { while (((cnt=Nread(fd[stream_idx + 1], buf, buflen)) > 0) && !intr) { nbytes += cnt; cnt = 0; @@ -7323,32 +7774,50 @@ acceptnewconn: if (tmp == 0x5254524Eu) { /* "RTRN" */ retransinfo = 1; +#if defined(linux) + cwndinfo = 1; +#endif b_flag = 1; } else if (tmp == 0x48525452u) { /* "HRTR" */ retransinfo = 2; + cwndinfo = 0; + read_cwnd = 0; b_flag = 1; } else if (tmp == 0x4E525452u) { /* "NRTR" */ need_swap = 1; retransinfo = 1; +#if defined(linux) + cwndinfo = 1; +#endif b_flag = 1; } else if (tmp == 0x52545248u) { /* "RTRH" */ need_swap = 1; retransinfo = 2; + cwndinfo = 0; + read_cwnd = 0; b_flag = 1; } else { retransinfo = -1; + cwndinfo = 0; read_retrans = 0; + read_cwnd = 0; + } + if (format & NOCWND) { + cwndinfo = 0; + read_cwnd = 0; } } - else + else { read_retrans = 0; + read_cwnd = 0; + } } if (read_retrans) { if (!need_swap) @@ -7361,6 +7830,17 @@ acceptnewconn: *cp1++ = *cp2--; } } + if (read_cwnd) { + if (!need_swap) + bcopy(buf + 28, + &cwnd[1], 4); + else { + cp1 = (char *)&cwnd[1]; + cp2 = buf + 31; + for ( i = 0; i < 4; i++ ) + *cp1++ = *cp2--; + } + } stream_idx++; stream_idx = stream_idx % nstream; } @@ -7368,14 +7848,16 @@ acceptnewconn: nbytes += cnt; } } - } else { + } + else { register int cnt; if (trans) { #if defined(linux) struct stat instat; if (fstat(savestdin, &instat) == 0) { - if (!S_ISREG(instat.st_mode)) { + if (!S_ISREG(instat.st_mode) && + !S_ISBLK(instat.st_mode)) { zerocopy = 0; directio = 0; } @@ -7425,12 +7907,14 @@ acceptnewconn: strcpy(buf, "EOD0"); (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr end */ } - } else { + } + else { #if defined(linux) struct stat outstat; if (fstat(savestdout, &outstat) == 0) { - if (!S_ISREG(outstat.st_mode)) + if (!S_ISREG(outstat.st_mode) && + !S_ISBLK(outstat.st_mode)) directio = 0; } else @@ -7497,7 +7981,7 @@ acceptnewconn: } if (!udp && trans && (format & DEBUGRETRANS)) { - sretrans = get_retrans(-1); + sretrans = get_retrans(-1, &tcpinf); fprintf(stdout, "before closing system retrans = %d\n", sretrans); } @@ -7529,12 +8013,13 @@ acceptnewconn: (void *)&tcpinf, &optlen) < 0) { mes("couldn't collect TCP info\n"); retransinfo = -1; + cwndinfo = 0; } if (ioctl(fd[stream_idx], SIOCOUTQ, &unsent) < 0) { mes("couldn't get SIOCOUTQ value\n"); unsent = -1; } - gettimeofday(&timeunsent, (struct timezone *)0); + get_timeofday(&timeunsent, (struct timezone *)0); realtd = 0.0; xmitrate = ((double)nbytes-(double)unsent)/realt; xmitunsent = (double)unsent/xmitrate; @@ -7566,8 +8051,8 @@ acceptnewconn: sizeof(intervalbuf), stdin)) { setitimer(ITIMER_REAL, &itimer, 0); - gettimeofday(&timeunsent, - (struct timezone *)0); + get_timeofday(&timeunsent, + (struct timezone *)0); if (strncmp(intervalbuf, "DONE", 4) == 0) { if (format & DEBUGPOLL) { @@ -7636,7 +8121,8 @@ acceptnewconn: (nstream == 1)) { nretrans[1] = get_retrans( - fd[stream_idx]); + fd[stream_idx], + &tcpinf); nretrans[1] -= iretrans[1]; if (format & PARSE) fprintf(stdout, @@ -7655,6 +8141,20 @@ acceptnewconn: pretrans = nretrans[1]; } + if (do_cwnd && sinkmode && + (nstream == 1)) { + cwnd[1] = + tcpinf.tcpinfo_snd_cwnd + *datamss/1024; + if (format & PARSE) + fprintf(stdout, + P_CWND_FMT_INTERVAL, + cwnd[1]); + else + fprintf(stdout, + CWND_FMT_INTERVAL, + cwnd[1]); + } if (do_retrans && cp1 && ch) { *cp1 = ch; fputs(cp1, stdout); @@ -7676,13 +8176,14 @@ acceptnewconn: (void *)&tcpinf, &optlen) < 0) { mes("couldn't collect TCP info\n"); retransinfo = -1; + cwndinfo = 0; } if (ioctl(fd[stream_idx], SIOCOUTQ, &unsent) < 0) { mes("couldn't get SIOCOUTQ value\n"); unsent = -1; } - gettimeofday(&timec, (struct timezone *)0); + get_timeofday(&timec, (struct timezone *)0); tvsub(&timed, &timec, &timeunsent); realtd = timed.tv_sec + ((double)timed.tv_usec) / 1000000; @@ -7704,6 +8205,7 @@ acceptnewconn: (void *)&tcpinf, &optlen) < 0) { mes("couldn't collect TCP info\n"); retransinfo = -1; + cwndinfo = 0; } if (unsent > 0) { /* assume receiver went away */ @@ -7721,15 +8223,22 @@ acceptnewconn: if (retransinfo > 0) { if ((stream_idx == 1) || (retransinfo == 1)) { nretrans[stream_idx] = - get_retrans(fd[stream_idx]); + get_retrans(fd[stream_idx], + &tcpinf); nretrans[stream_idx] -= iretrans[stream_idx]; +#if defined(linux) + if (retransinfo == 1) + cwnd[stream_idx] = + tcpinf.tcpinfo_snd_cwnd + *datamss/1024; +#endif } } } } if (!udp && trans && (format & DEBUGRETRANS)) { - sretrans = get_retrans(-1); + sretrans = get_retrans(-1, &tcpinf); fprintf(stdout, "after closing system retrans = %d\n", sretrans); } @@ -7815,7 +8324,7 @@ acceptnewconn: } fputs(intervalbuf, stdout); if (do_retrans && sinkmode) { - nretrans[1] = get_retrans(fd[1]); + nretrans[1] = get_retrans(fd[1], &tcpinf); nretrans[1] -= iretrans[1]; if (format & PARSE) fprintf(stdout, P_RETRANS_FMT_INTERVAL, @@ -7829,6 +8338,18 @@ acceptnewconn: "" : "host-"); pretrans = nretrans[1]; } +#if defined(linux) + if (do_cwnd && sinkmode) { + cwnd[1] = tcpinf.tcpinfo_snd_cwnd + *datamss/1024; + if (format & PARSE) + fprintf(stdout, P_CWND_FMT_INTERVAL, + cwnd[1]); + else + fprintf(stdout, CWND_FMT_INTERVAL, + cwnd[1]); + } +#endif if (do_retrans && cp1 && ch) { *cp1 = ch; fputs(cp1, stdout); @@ -7852,6 +8373,7 @@ acceptnewconn: setitimer(ITIMER_REAL, &itimer, 0); cp1 = srvrbuf; got_srvr_retrans = 0; + got_srvr_cwnd = 0; while (fgets(cp1, sizeof(srvrbuf) - (cp1 - srvrbuf), stdin)) { setitimer(ITIMER_REAL, &itimer, 0); if (*(cp1 + strlen(cp1) - 1) != '\n') { @@ -7967,6 +8489,42 @@ acceptnewconn: else sscanf(cp2, RTT_FMT_INB, &rtt); } + if ((cp2 = strstr(cp1, "cwnd"))) { + got_srvr_cwnd = 1; + cwndinfo = 1; + if (format & PARSE) + sscanf(cp2, P_CWND_FMT_IN, + &total_snd_cwnd); + else + sscanf(cp2, CWND_FMT_IN, + &total_snd_cwnd); + if (format & PARSE) { + if ((cp2 = strstr(cp2, + "cwnd_by_stream="))) + cp2 += 15; + else + cp2 = NULL; + } + else { + if ((cp2 = strstr(cp2, "( "))) + cp2 += 2; + else + cp2 = NULL; + } + if (cp2) { + sscanf(cp2, "%d", &cwnd[1]); + stream_idx = 2; + while ((stream_idx <= + nstream) && + (cp2 = strchr(cp2, + '+'))) { + cp2++; + sscanf(cp2, "%d", + &cwnd[stream_idx]); + stream_idx++; + } + } + } } else if ((cp2 = strstr(cp1, "RTT")) || (cp2 = strstr(cp1, "rtt"))) { @@ -8015,14 +8573,26 @@ acceptnewconn: itimer.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &itimer, 0); got_srvr_output = 1; - if (!udp && !trans && !got_srvr_retrans) - retransinfo = -1; + if (!udp && !trans) { + if (!got_srvr_retrans) + retransinfo = -1; + if (!got_srvr_cwnd) + cwndinfo = 0; + } } - if (!udp && trans && (retransinfo > 0)) { - total_retrans = 0; - for ( stream_idx = 1; stream_idx <= nstream; stream_idx++ ) { - total_retrans += nretrans[stream_idx]; + if (!udp && trans) { + if (retransinfo > 0) { + total_retrans = 0; + for ( stream_idx = 1; stream_idx <= nstream; stream_idx++ ) { + total_retrans += nretrans[stream_idx]; + } + } + if (cwndinfo) { + total_snd_cwnd = 0; + for ( stream_idx = 1; stream_idx <= nstream; stream_idx++ ) { + total_snd_cwnd += cwnd[stream_idx]; + } } } @@ -8111,6 +8681,30 @@ acceptnewconn: if (!(format & PARSE)) fprintf(stdout, " )"); } +#if defined(linux) + if (cwndinfo) { + if (format & PARSE) + strcpy(fmt, P_CWND_FMT); + else + strcpy(fmt, CWND_FMT); + fprintf(stdout, fmt, total_snd_cwnd); + if ((nstream > 1) && (retransinfo == 1) && + total_snd_cwnd) { + if (format & PARSE) + fprintf(stdout, P_CWND_FMT_STREAMS, + cwnd[1]); + else + fprintf(stdout, " ( %d", cwnd[1]); + for ( stream_idx = 2; stream_idx <= nstream; + stream_idx++ ) { + fprintf(stdout, "+%d", + cwnd[stream_idx]); + } + if (!(format & PARSE)) + fprintf(stdout, " )"); + } + } +#endif fprintf(stdout, "\n"); } @@ -8344,7 +8938,7 @@ acceptnewconn: if ((retransinfo > 0) && (!(format & NORETRANS))) { if (format & DEBUGRETRANS) { - sretrans = get_retrans(-1); + sretrans = get_retrans(-1, &tcpinf); fprintf(stdout, "report system retrans = %d\n", sretrans); @@ -8400,6 +8994,45 @@ acceptnewconn: retransinfo == 1 ? "" : "host-"); } +#if defined(linux) + if ((nstream > 1) && cwndinfo && + (retransinfo == 1) && + total_snd_cwnd && !(format & NOCWND) && + (brief & BRIEF_CWND_STREAMS)) { + if (format & PARSE) { + fprintf(stdout, P_CWND_FMT_BRIEF, + total_snd_cwnd); + fprintf(stdout, + P_CWND_FMT_STREAMS, + cwnd[1]); + } + else { + fprintf(stdout, + CWND_FMT_BRIEF_STR1, + total_snd_cwnd, + cwnd[1]); + } + for ( stream_idx = 2; + stream_idx <= nstream; + stream_idx++ ) { + fprintf(stdout, "+%d", + cwnd[stream_idx]); + } + if (!(format & PARSE)) + fprintf(stdout, + CWND_FMT_BRIEF_STR2); + } + else if (cwndinfo && (!(format & NOCWND))) { + if (format & PARSE) + fprintf(stdout, + P_CWND_FMT_BRIEF, + total_snd_cwnd); + else + fprintf(stdout, + CWND_FMT_BRIEF, + total_snd_cwnd); + } +#endif if (rtt && (format & WANTRTT)) { if (format & PARSE) strcpy(fmt, P_RTT_FMT_BRIEF); @@ -8485,6 +9118,44 @@ acceptnewconn: retransinfo == 1 ? "" : "host-"); } + if ((nstream > 1) && cwndinfo && + (retransinfo == 1) && + total_snd_cwnd && !(format & NOCWND) && + (brief & BRIEF_CWND_STREAMS) && + (irvers >= 80001)) { + if (format & PARSE) { + fprintf(stdout, P_CWND_FMT_BRIEF, + total_snd_cwnd); + fprintf(stdout, + P_CWND_FMT_STREAMS, + cwnd[1]); + } + else { + fprintf(stdout, + CWND_FMT_BRIEF_STR1, + total_snd_cwnd, + cwnd[1]); + } + for ( stream_idx = 2; + stream_idx <= nstream; + stream_idx++ ) { + fprintf(stdout, "+%d", + cwnd[stream_idx]); + } + if (!(format & PARSE)) + fprintf(stdout, + CWND_FMT_BRIEF_STR2); + } + else if (cwndinfo && (!(format & NOCWND))) { + if (format & PARSE) + fprintf(stdout, + P_CWND_FMT_BRIEF, + total_snd_cwnd); + else + fprintf(stdout, + CWND_FMT_BRIEF, + total_snd_cwnd); + } if (rtt && (format & WANTRTT)) { if (format & PARSE) strcpy(fmt, P_RTT_FMT_BRIEF); @@ -8570,11 +9241,18 @@ cleanup: } } fclose(ctlconn); +#ifdef DEBUG + if (irate && (format & DEBUGIRATE)) + if (debugout) { + fprintf(debugout, "END nuttcp debug output\n"); + fclose(debugout); + } +#endif if (!inetd) close(fd[0]); if (!udp && trans && (retransinfo > 0)) { if (format & DEBUGRETRANS) { - sretrans = get_retrans(-1); + sretrans = get_retrans(-1, &tcpinf); fprintf(stdout, "final system retrans = %d\n", sretrans); } @@ -8623,6 +9301,7 @@ cleanup: maxburst = 1; nburst = 1; irate = 0; + iratesss = 0; irate_cum_nsec = 0.0; timeout = 0.0; interval = 0.0; @@ -8647,8 +9326,12 @@ cleanup: do_jitter = 0; do_owd = 0; retransinfo = 0; + init_pkt_cwnd = 0; + sss_pkt_cwnd = 0; + cwndinfo = 0; force_retrans = 0; rtt = 0.0; + which_rt = 1; pretrans = 0; sretrans = 0; got_srvr_output = 0; @@ -8677,6 +9360,7 @@ cleanup: } nretrans[stream_idx] = 0; iretrans[stream_idx] = 0; + cwnd[stream_idx] = 0; } nstream = 1; multilink = 0; @@ -8763,13 +9447,42 @@ pattern( register char *cp, register int cnt ) } } +void +get_timeofday( struct timeval *tv, struct timezone *tz ) +{ +#ifdef HAVE_CLOCK_GETTIME + struct timespec tod; + clockid_t clk_id; + +#if defined(_POSIX_MONOTONIC_CLOCK) || defined(__CYGWIN__) + if (do_owd) { + clk_id = CLOCK_REALTIME; + } + else { + clk_id = CLOCK_MONOTONIC; + } +#else /* !(defined(_POSIX_MONOTONIC_CLOCK) || defined(__CYGWIN__)) */ + clk_id = CLOCK_REALTIME; +#endif /* defined(_POSIX_MONOTONIC_CLOCK) || defined(__CYGWIN__) */ + + clock_gettime( clk_id, &tod ); + tv->tv_sec = tod.tv_sec; + tv->tv_usec = tod.tv_nsec / 1000; + +#else /* !HAVE_CLOCK_GETTIME */ + gettimeofday( tv, tz ); +#endif /* HAVE_CLOCK_GETTIME */ + + return; +} + /* * P R E P _ T I M E R */ void prep_timer() { - gettimeofday(&time0, (struct timezone *)0); + get_timeofday(&time0, (struct timezone *)0); timep.tv_sec = time0.tv_sec; timep.tv_usec = time0.tv_usec; timepk.tv_sec = time0.tv_sec; @@ -8791,7 +9504,7 @@ read_timer( char *str, int len ) char line[132]; getrusage(RUSAGE_SELF, &ru1); - gettimeofday(&timedol, (struct timezone *)0); + get_timeofday(&timedol, (struct timezone *)0); prusage(&ru0, &ru1, &timedol, &time0, line); (void)strncpy( str, line, len ); @@ -8947,7 +9660,8 @@ psecs( long l, register char *cp ) i = l % 3600; sprintf(cp, "%d%d", (i/60) / 10, (i/60) % 10); END(cp); - } else { + } + else { i = l; sprintf(cp, "%d", i / 60); END(cp); @@ -8970,7 +9684,8 @@ Nread( int fd, char *buf, int count ) if (udp) { cnt = recvfrom( fd, buf, count, 0, (struct sockaddr *)&from, &len ); numCalls++; - } else { + } + else { if (b_flag) cnt = mread( fd, buf, count ); /* fill buf */ else { @@ -8986,7 +9701,7 @@ Nread( int fd, char *buf, int count ) bcopy(buf + 12, &usecs, 4); timetx.tv_sec = ntohl(secs); timetx.tv_usec = ntohl(usecs); - gettimeofday(&timerx, (struct timezone *)0); + get_timeofday(&timerx, (struct timezone *)0); tvsub( &timed, &timerx, &timetx ); owd = timed.tv_sec*1000 + ((double)timed.tv_usec)/1000; nowd++; @@ -9014,11 +9729,14 @@ Nwrite( int fd, char *buf, int count ) struct timeval timedol; struct timeval td; register int cnt = 0; - double deltat; + double deltat, delta0; + double pktdelay = 0; + int pktdelay_sec, pktdelay_usec, sssdelay; if (irate) { + sssdelay = 0; /* Get real time */ - gettimeofday(&timedol, (struct timezone *)0); + get_timeofday(&timedol, (struct timezone *)0); tvsub( &td, &timedol, &timepk ); deltat = td.tv_sec + ((double)td.tv_usec) / 1000000; @@ -9031,10 +9749,33 @@ Nwrite( int fd, char *buf, int count ) } if (nburst++ >= maxburst) { - while ((maxburst*(double)count/rate/125 > deltat) - && !intr) { + if (iratesss && cwndinfo) { + /* note iratesss only supported for 1 stream */ + tvsub( &td, &timedol, &time0 ); + delta0 = td.tv_sec + ((double)td.tv_usec) + / 1000000; + if (delta0 > which_rt*rtt/1000) { + which_rt++; + sss_pkt_cwnd = (cwnd[1] + 1)*1024/datamss; + sss_pkt_cwnd *= 2; + } + pktdelay = rtt/1000/sss_pkt_cwnd*count/datamss; + if (pktdelay < + maxburst*(double)count/rate/125) { + pktdelay = + maxburst*(double)count/rate/125; + iratesss = 0; + } + else { + sssdelay = 1; + } + } + else { + pktdelay = maxburst*(double)count/rate/125; + } + while ((pktdelay > deltat) && !intr) { /* Get real time */ - gettimeofday(&timedol, (struct timezone *)0); + get_timeofday(&timedol, (struct timezone *)0); tvsub( &td, &timedol, &timepk ); deltat = td.tv_sec + ((double)td.tv_usec) / 1000000; @@ -9042,15 +9783,28 @@ Nwrite( int fd, char *buf, int count ) } if (nburst > maxburst) { - irate_cum_nsec += maxburst*irate_pk_nsec; - while (irate_cum_nsec >= 1000.0) { - irate_cum_nsec -= 1000.0; - timepk.tv_usec++; + if (sssdelay) { + pktdelay_sec = pktdelay; + pktdelay_usec = (pktdelay - pktdelay_sec) + *1000000; + timepk.tv_usec += pktdelay_usec; + if (timepk.tv_usec >= 1000000) { + timepk.tv_usec -= 1000000; + timepk.tv_sec += 1; + } + timepk.tv_sec += pktdelay_sec; } - timepk.tv_usec += maxburst*irate_pk_usec; - while (timepk.tv_usec >= 1000000) { - timepk.tv_usec -= 1000000; - timepk.tv_sec++; + else { + irate_cum_nsec += maxburst*irate_pk_nsec; + while (irate_cum_nsec >= 1000.0) { + irate_cum_nsec -= 1000.0; + timepk.tv_usec++; + } + timepk.tv_usec += maxburst*irate_pk_usec; + while (timepk.tv_usec >= 1000000) { + timepk.tv_usec -= 1000000; + timepk.tv_sec++; + } } nburst = 1; } @@ -9059,7 +9813,7 @@ Nwrite( int fd, char *buf, int count ) else { while ((double)nbytes/realt/125 > rate) { /* Get real time */ - gettimeofday(&timedol, (struct timezone *)0); + get_timeofday(&timedol, (struct timezone *)0); tvsub( &td, &timedol, &time0 ); realt = td.tv_sec + ((double)td.tv_usec) / 1000000; if (realt <= 0.0) realt = 0.000001; @@ -9069,7 +9823,7 @@ Nwrite( int fd, char *buf, int count ) uint32_t secs, usecs; /* record transmitter timestamp in packet */ - gettimeofday(&timedol, (struct timezone *)0); + get_timeofday(&timedol, (struct timezone *)0); secs = htonl(timedol.tv_sec); usecs = htonl(timedol.tv_usec); bcopy(&secs, buf + 8, 4); @@ -9094,7 +9848,36 @@ again: errno = 0; goto again; } - } else { + } + else { +#if defined(linux) && defined(DEBUG) + if (irate && (format & DEBUGIRATE) && debugout) { + struct timeval timewr; + double pktwrtime; + static int cnt = 0; + + cnt++; + if (cnt == 1) { + fprintf(debugout, "count = %d, datamss = %d, " + "pktxmit = %.8f, " + "rtt = %.6f, maxburst = %d\n", + count, datamss, + (double)count/rate/125, + rtt/1000, maxburst); + } + get_timeofday(&timewr, (struct timezone *)0); + tvsub( &td, &timewr, &time0 ); + pktwrtime = td.tv_sec + (double)td.tv_usec/1000000; + fprintf(debugout, "pktwrtime = %.6f, pktdelay = %.6f, " + "sss_pkt_cwnd = %d, " + "cur_pkt_cwnd = %d, iratesss = %d, " + "which_rt = %d\n", + pktwrtime, pktdelay, + sss_pkt_cwnd, + (cwnd[1] + 1)*1024/datamss, iratesss, + which_rt); + } +#endif cnt = write( fd, buf, count ); numCalls++; } @@ -9298,7 +10081,7 @@ getoptvalp( char **argv, int index, int reqval, int *skiparg ) char proc_buf[PROC_BUF_LEN]; char proc_buf2[PROC_BUF_LEN2]; -int get_retrans( int sockfd ) +int get_retrans( int sockfd, struct STRUCT_TCPINFO *tcpinfo ) { FILE *proc_snmp; char *cp, *cp2; @@ -9313,27 +10096,35 @@ int get_retrans( int sockfd ) #if defined(linux) && defined(TCPI_OPT_TIMESTAMPS) if ((retransinfo <= 1) && (sockfd >= 0)) { - optlen = sizeof(tcpinf); - if (getsockopt(sockfd, SOL_TCP, TCP_INFO, (void *)&tcpinf, + optlen = sizeof(*tcpinfo); + if (getsockopt(sockfd, SOL_TCP, TCP_INFO, (void *)tcpinfo, &optlen) == 0) { if (optlen >= SIZEOF_TCP_INFO_RETRANS) { retransinfo = 1; + cwndinfo = 1; b_flag = 1; - return(tcpinf.tcpi_total_retrans); + return(tcpinfo->tcpi_total_retrans); } } if (retransinfo == 1) { retransinfo = -1; + cwndinfo = 0; return(0); } retransinfo = 2; + cwndinfo = 0; } +#else + retransinfo = 2; + cwndinfo = 0; #endif if ((retransinfo == 3) || (!(proc_snmp = fopen(PROC_SNMP, "r")))) { retransinfo = 3; + cwndinfo = 0; if (pipe(pipefd) != 0) { retransinfo = -1; + cwndinfo = 0; return(0); } if ((pid = fork()) == (pid_t)-1) { @@ -9341,6 +10132,7 @@ int get_retrans( int sockfd ) close(pipefd[0]); close(pipefd[1]); retransinfo = -1; + cwndinfo = 0; return(0); } if (pid == 0) { @@ -9363,6 +10155,7 @@ int get_retrans( int sockfd ) if (!(proc_snmp = fdopen(pipefd[0], "r"))) { close(pipefd[0]); retransinfo = -1; + cwndinfo = 0; return(0); } } @@ -9427,6 +10220,7 @@ close: if (num_retrans < 0) { retransinfo = -1; + cwndinfo = 0; return(0); } diff --git a/vmtp/iperf_tool.py b/vmtp/iperf_tool.py index a68a71e..dd168dd 100644 --- a/vmtp/iperf_tool.py +++ b/vmtp/iperf_tool.py @@ -35,7 +35,7 @@ def get_bdw_kbps(bdw, bdw_unit): class IperfTool(PerfTool): def __init__(self, instance): - PerfTool.__init__(self, 'iperf', instance) + PerfTool.__init__(self, 'iperf-2.0.9', instance) def get_server_launch_cmd(self): '''Return the command to launch the server side.''' @@ -66,6 +66,8 @@ class IperfTool(PerfTool): bidir = bidirectional loop_count = self.instance.config.tcp_tp_loop_count for pkt_size in pkt_size_list: + self.instance.display('Measuring %s Throughput (packet size=%d)...', + proto, pkt_size) for _ in xrange(loop_count): res = self.run_client_dir(target_ip, mss, bandwidth_kbps=bandwidth, diff --git a/vmtp/nuttcp_tool.py b/vmtp/nuttcp_tool.py index d71d748..9fb3489 100644 --- a/vmtp/nuttcp_tool.py +++ b/vmtp/nuttcp_tool.py @@ -21,7 +21,7 @@ import sshutils class NuttcpTool(PerfTool): def __init__(self, instance): - PerfTool.__init__(self, 'nuttcp-7.3.2', instance) + PerfTool.__init__(self, 'nuttcp-8.1.4', instance) def get_server_launch_cmd(self): '''Return the commands to launch the server side.''' @@ -201,8 +201,9 @@ class NuttcpTool(PerfTool): else: # TCP output: # megabytes=1083.4252 real_seconds=10.04 rate_Mbps=905.5953 tx_cpu=3 rx_cpu=19 - # retrans=0 rtt_ms=0.55 - re_tcp = r'rate_Mbps=([\d\.]*) tx_cpu=\d* rx_cpu=\d* retrans=(\d*) rtt_ms=([\d\.]*)' + # retrans=0 cwnd=3202 rtt_ms=0.55 + re_tcp = \ + r'rate_Mbps=([\d\.]*) tx_cpu=\d* rx_cpu=\d* retrans=(\d*) cwnd=\d* rtt_ms=([\d\.]*)' match = re.search(re_tcp, cmd_out) if match: rate_mbps = float(match.group(1)) diff --git a/vmtp/tools/iperf b/vmtp/tools/iperf deleted file mode 100755 index acf5ea95e5569e04c1322439ef66e5d19177fd61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68488 zcmdqKdwdi{);Hc05*RShgM!BUsKE^any6@^MrTMuI*@1-P!u%5TnsChNM<04!obX6 zir(m~w`F&I)~v3(c-dXNEQC>$2_O^DM*}{tcv(ffbrUam3oPp9_dTb2CLLtn_x*i7 z?_clmA=T&9?bNALr%s)!u3lMEJ~hqZP!hj1<#L6f;xjyql7AJYC4C@`N6A-)D<0(( zCi`wDcQ-|LORjpGFXc9tx7-DGVv7L;e!AQ%Lm<{5;m9 z4DUKD!9=JiZbnc(qBZstg9xknAsJeQW+e!;@)3EIZ;zF4kCiVGDi-~TFp-_wM*nA8 z@iWsrfC%M|A$5{t|RvW7U_6 zFCL5jL`Zz3-+2q>-+a-9=Pjt6v|#=sfAgf~{EH@Cbm6&8i_blu+wDRcN?Us6EK1Jo zA^NiLpJ*O~|0DwxKjZOde;U$q`LDkj_Kb6+@z8Jo`S-pDDeeaRPxPDOaJ$Yc zObR^l!F`l^Pfvlr8~CHu`%nrx|DGcKj1=wtZ3_HVDd?Y(qTcKj<$Rg~|GO0BuT7Dj z1mI|VC{B@HOOZY=Mfy)tq+gh#y*(+)`7uQ~g(>iVPEpR;DeAo-g`B*UqWoPc@CQ@i zcch@_sucCkPa$s~rNG~pqWn22=y9ds! z6!kuq03~}ON#QpPr>JVQlx((MfzX3A?Hd z=?Nb=0^ew*Z#e@04VOPsi9G4ya(=;o73BehG!Gs)&0}G#0QOgtueN5w1hTmU!ESk3ve{1JeE+rb8o2we@mNYG1 zG;hIt-|baPb1B6#PO$(fK=ds&HC0VSbDmN)Ytgd#i)uk=lYe0yMOvj(bZ)Y$n#D*n zf6;tj60^|nt7}G6ntV$Z->x*(EvijMHPtPsSC-V(EUjO%cwrJNGYl$&OIGv<Vc+5fN`2kpdO|JWY`*!F1XRtxrEX!P z@Af9N2l?mK)}j&hibmMl_khP)^>4Yl)^C=2Tr67fhvjb98FgJ4^OLBV1_SOWT* zI59Xil!hKX-ES z`2wubI1TW51L(Yg)B{geX-Ii-G7ptYE4m^0pKh(jhXNX^3XukYhOGDQ!Axk$9?^N|hxi%BK>BD#uu~5jGS5M_PF(r$ZS53LN-H zi^atHtn%#Jk5Q0sxV4~ma7r1Ui*#@N{Z@DgMku2ZPkDUf?}Mrzs+?j=|Ati_rT3pS ze>k-+$4bBCM1qGX7bepWQ!=3QsVw?E`0IzTJRYfdtn?2soT*H=;4$;(k5u4wxz>V@ zW7w%wTkr`C4^w_=!9K1pL-AR#q$iE(q5AgpS5tr%$o~xBPh!3zcL=Ss6TifKMfkZ1 zB*MhJM|fJB5B%hOI1C6(<;kB@8Nj3Y$)C%H#}t|TW!dm(O7iEn;i>M#FUN*Y%*7O! zYr~@>lD~W#p5!9&^VskZjO0(V;WLw1_-$->bX4*;+lC*N#41X)4X@hp4K{p2HYmE$ zh97N9-)zI%*UJGL{y1Cu78{;?Fo|Eph98?iB3x&~A8*6A+3+XW@at`O^7SNs8*KO! z6G(*ZHvCC8e9VSF*@o}7;S;_=ite%DPqn4rW5birCGp#9!@CnmgoX`&h7EtfhCkDW zKV-va+wh8GK+eb6@J<{4Y#ZKX!zXM%iq5j(b8P9|HvD)SKF5YX$A-_f;V0Pe`8NDS z8{T8XPqN`P8~$7yzS4$2&xW6E!;@Z2{HksEyaWnHhj#6FSOyi zZTQP=_#PYn3LAcp4eznx_uBAY8{V+tr`YfZZ1^G@{*Vn{Y{M&Q1M**D!#i#GsW!aJ zhA*|@vut?HhIiZWWj1_{4L{9>&$Z#ncbxd;+wjv9NQ536zTAe_Z1@TrzS4%j(uSXH z!;?=f@vFAsD-%eB4L1DMHhiNEe~k^_Y{Sp6;R81OOdGz%hL@gs85yzRueGILXTx7- z!?)S+vu*hGHvIKAycYc2Y4pR|(1P2XTL&WgC;##jx6(gu0sg9|d+hd&~gC=Mzk3irL8U zIRumGU{*7HCc$Jfn3W8lL@=2OribBU2__T4%w>24!DJekZidqcCX>K)F?{%Az+?)T z3d7$JOeTPN;6Ff&+fOh}{pMbV_Yq7}zS+a@I|S2IZ^jtjO)yRI<_3m$5=>LO*~ah| zf@w-OBMe6grm5TvF#IgRG=-au3_nRQP2FZS!;cb7Q?^;j@b3twsoL}~d>_FyMVq+{ zuO*nKX4B2^YJzD>HeC$gLGWn=D-16on5Jg)z)#fvUlQylcrU{@6MP22Jq+JKFipW` zjNxktK8xTD3{N9Co8UHvrw}}j;0VK)5KL3A8DRK)f@#V%8yP-_V47;pYKG4wn5I~> zlHrpGrm5BRFnlb*G^Luk438j~rc%?*a2mlhg_59$@H+(4)M&;S-c2w~iRK1|cM?ofq1ndp7J_LCG$Ra038tyf3^4pG z!8GNWjSN3YFimx4HN%e*OjDd$$?)$8rm4;JFnk}uG^Lrj46h}arZUsb@M?l-3Nu{{ z-$5`dojvLE6k|VHf#)`Qz8pP@=SF(oE%6?DK3n3I z3_M4z^h5CcH#{4g!zl4jccbhcP@{>A7I4f6{tAc~sx$=DgeJCXB5u5fsYw$b7{}LA z_>LyNEEb;`%{7Xm7c~SArKt~W2_8!KUlH2vzd~#EWjm2rix+2;I#-McCNNFEGus(2 zl zqT9IV-~Ii)+w;CC6T5EG#6B(f@qx;jW$~EnuO3B^T z8@Fey0Lt<0R+^8sVBz|Ak-&Fyl7!K-I(vSq2LC_l@43-jjx6R<{E;n~q3Odk@q^x6 z8SL-(jWOmP>hBL8>i7LZ(}%=8JcDZba;FyV_l-2}MfYp*BJQ0zs1Bnxx=?|n)q;PW zi}A-er3GEEwfww8(QNK&s}x8obt6#$h=y?SofQV?@lc3z(`24y3@ zLO=-1#iyFyoMTi&D~7-D%?%bl^Pw9oU8$Z9!Q$kf9OUFEE{0;bI91<3H6tVP8{Z*s zIb^+DCgk$m(5jH0e3Du3jozEQRa+ydQ`0vDkh83yZ`r)^@qLuKn8ZEmZNAZ`9eb-c^x= z{LO%HYx)&>Y3=$n|H*yZFqoU1zH}|PJ=18c1%3LEK2M#~H_Vb}iiXtW?TAuKjS3RE z*zNn~M181M%K1uAVqORhMD?>+a}~zb4OHBvsA?Q-D+LcZPW(b!6>p<*-mC}W4t{nh7$0H$9*smUFIrp~Tv^$#hIUYf+B3K?W5F#PYQdE*#WxYf<$w;O z9>r<;F=C5;d!^R;4C7YIk*kKDKz@{%sQQw@X_=g%sFX%|0h*82YORs=C{}CTz$NVg zZxKOaDkI%8lCqjleMgK}qK^V6`EeihOg4r)DmCs5K(L+|82_DX5F5QOk=Xb#$mz_J zAzZ}2=);Mq&Q>btJ;a-rljPO2exX?}uaA4Nb)}0}CG$an*18W_mi!E6%Om&`T}F>OQi%G$myF5fwUPaS$AvTX5Pf@xyHdv3*8ivA+%|9~(Y z^J7R330BvBMRUr@5Wc>WI=BB+Qv7pn+$!nP^n7E(FtoMXg2h)x1XdSvYIp&bM#o8@7%A2^ONfzTZ9qbd6l+@~#7MC=A|XbKwd*9rNU^p}LW~q^*E1Agq*%Ry zA#}DU7s}m*(UuR4G4bXBZUkfwaAS2lrMBd!9>0P4aTYYTcVGw>fA&qq*#~@B8~VyC{M9s#q95eycr2scI1Q7@{EdWnwR^EG?d%ja00t zospg)ihf6>INWvk^sfCUwPv0Wj5~rKUNL@G6jUkN8~gHhXv1g1n%Zr=bU-Qw4@SXk zZ}7(vYS_>70~%WBeA}&*h`mwwbCyx1Yn6F1qX2odRojSeIkUksP&$7{<9;hDU?pLs z2T&76*xWlQL}^XVM58t%Kjw|e!9y2dgbykR^A#n8G9!ImN#pB?_~s~8`onu&()a*(gP-SU`g!I0Vy9kGE4Fm)&kXK!U><_m@Da>tOb=@4N#cn*G%jV?-1qLW7L*~lt^`rJdWefDb60l_QfPh z3*No@mRpI&5{x5pPz>cO>aq!#RmXUys0v70?d^bQWGyrQwnTGkX0jE1m#g(Qhq^=f!4iL#S5zqC-|7y8>Ede+k$XCdM)BkSt_qn`0f2-jMU;#;hHQ^dXL?)^25~%Gj zVXbNU9XZCouy95JE1YFDKN{{8SU12HA)DZ7G&fjy;vP3lq*KvdF0Eh&ModZ8ovIr8 z4azPF_p9MESaz|3K=aQ3k}80~{UsY?Gq3~)NRt9un~&BWe4AUO=oK#6M7<(Q-4XcI zgXTgmo+Sp`2)^%Ywx^)?8@`Yw!}P-#&lxc9Olv2n zP)P5e$X>-1whm^yIfKiBW?AV1GsZE=6ErTuqcG|v9}0@H)L%7#R`Uk@ ziFA^lGX9K~K)SON(ruoP1*=Ric43HWyG(8PE}{k2`|KTN6N;n3_Gd^0#%Y)N5D=j9 z=cb@}F4~<~tRd8382efJLG9JV zPntNWiEoYP!Ir$;SfHMu)yzO+r@NU@Xb|H>$cES=dXC_Ll;iO$W^T2y)6P$n4VHGg z(Q+dUvS_4hNxCoUboA8ohB&7f|G zuvy-5?BBpnBrsD>hUVp}+ z?~MNy9sfiuv0@a_F-U%}UV#v>3u)C=wF){*`du)EI6;_Vyl@RB4|e=qjS-0to9(O!f9#u9F6#1wcWDkfjj61dNcu;5b-oI2 zbr>;t^)x7O=c?-3{tx>53vSfPFahObZNKs@$ghhur)6K4iO+lgLE}{)s)@TJC{7cX zZ>^6csK?N}f=0o~N&WZ;B{JUoj9CYU`9IgEm*!Luh#qEoQA|+u6^zoNVYE2o6lotBrKvbS1CP+fHJsi4UU?I|Wh-J4jLB z?;-NYB>usocLhmSPOWxSSBTp}|J3A8l=s<2-uX;J7h}Gv`AnjKkEA1NJ_- z!PpW-tt(x|udKEo=`|om7>|JFgx8?PHOOsH%L239W%C*ARVE>zwg56dgcJd}<|_2oKXi0KIP3Pw^tgb+!$Gd;fF@Rd6|cP~pds0@gHS z)bGsOQ6bC(~>c^@(!@HY*55?$z zh>FwiCtBbi1*gRFN@In^f~4LIhLE(y&7r8rnvX$6x!5mBFiw+0TNG9LKJ9&;{ZW5U5>iHl zlqU#z432Jd6ly+VKK;3W8~PLjjr5#?)rIcS0-rje@WznaTMZopr;!$nWs(le;#C?v zw%3BCWl#sSZ4zARRD7AnkeTF#UFq`t!%@~+npNIfgV^nq%V{jToZ?EenE7!}14vek zN6|(-!-+1ScF-Cr20XmrS^5fc?yDhEU&VUHCp)o>M|^k#%rdH?ue9Ff8-<;N`W@xkTtTI?yt*hFA(sV&V8CHavt~n86M%G*iAu}2hRzQDh zZiH@xa4uKmAk0OWix5+O1$F{74?+(@*Z~z9!b*gd2xlY2%22CDSdFj&VFSWOgpJVF z&1Isb8Kk40ms*&b$xn5=;T(uFQSmU%uku*=@oiw8ZmX&z$CEnrB6zBr3gorM(uF%OjF5Ci?`-r#u-O~?L$@fMu_ z)IV0&=p&bavEd!QGv#P$hvp&TjVkmbWY)eRpwG-61K*+3s}BpuR=f`X`&BL~igq)! znyY8S;alFyZnpB)K%1f{c{}0(8dL#18|Ut0or7*tL-ZyN)q-((Z#>Bx;|Dl*sW7at z_2X%Hsx9P=s0jC|Ar(B*r>0lbyey7WyG0Be7_=VJr(*pqVe+YBkLJ_&sgO0ydhtH5 zr!P1Qc{2ohf%oYX`d-u55S6guIMCOumkM&wv#5(PowU^T>&3QX7A|P`!6QYD@Gv?T%f8m@>Vi1!x{Rm}PT_BCE;9 zKKSNY&@2f~N-v9TvGf(^?J%Nfu%1!59fDH|M};*{O39rGp9dBYImToS1;YiB1DjtB zHG_f1`RwNhD!8)I;k$yyWtq6kV^$$@V1A5}lSED|tk3Vf6$K3*a@=1=Q3Le*>6DjY ztEDIvdJV0808G;KMmM|;o_ue-Br`xw#ag=SE4TW(SKQ?ycgZ33HLviGAxFjQ;y(;z zB|IjFF@aE;15`u~$DN`#y7G(KjHPzqgz`G$6s9$F8^$JfwbDj(vV zgGb{|h_rbN*0+gu8%=}echJ(3?<{NgbVI=7Q!|lIF<->kzFJCX!y1qCjxx0xy=L#rD5SFQi z-^0j;Pc<mN`#nu;gJhW`OX zqLbv*PJR8K3kUUev3}~hE;6Rxg&R#AH135cK)KjFz*~zkp=Xw0mJNLbIWE!FlJE}o z-na1F``^-!w5AQs`+t0XoXXsk^P~4g0I*R*_=|=QnkS7@r^zYuCyZn2Vd~c%Z}PK? z_UYB|E67B{&0I-p5B3r4sJn0GP76&3isnw+eEBPglz9R0NqtkAZyrAYmtkYcJQ=km z=N*{U20#&Is9gN9}>0Fo^IIVIP4hZNL!bTI2rQU`lz zrW!03Nque2>y+$6_>j3}k8@_pALEt(v9P}fwmt%V_wSkkefJl%WRSjNr*J7o0@mJY zi0mA)I6g!u^`&tu%Hz2EfRoN?>JMYcTbNTvB{DuJGt&8x$MM*?`fnb^a3L%Czh8p? z`;27n4HPvN8I1rs3R_(tzUWp&S9A~XTt2o4kLR3)al{xWfj>y~9G<}xr};}%JfPoE z{vQz&{YA3;7ApTANMv4#)feJdQ9PC|7WK<1{z1fpHK$1mtB|7eCg7u|B$63TGR2Q? z4B8He%*xwsE%CF0D;v`EW!3Ot;8>b5Z(M1m*N?^Y}D9xDJmn%`ewl zUueT4O%q06G2yTRwK)Tz#}S?I2Fy&bo%X%p$Iy$)QOGZ7(Mp~ga&)C5Iq%4Fk!K|` zyaRM!5!^7DU{_YckEu7!MP8!YJku>%yK)Z$hTwsOqqNXkVe8ZELU-<{x(`6-VjyI*6z zj8?;0=&$G<$;#Nb@#8$q()|PDFDjDpza(Pbqxg}?Xweh(CF42&ixl69{KkDmUcT`P zYJ)f}h(ernooFu;v1ks;N(kR?cO?!D_2bFDc|rbV_~-Z1evko2QMstiK0rIFhdN;Oki+!CVD8zPt zrLhacqds_PS|VMO(@M0T6B*A8idQ!krPX(JJJn4+>ZagYltP}$3h|*t##mB_RwtaH z-uC}I?*Uz#iR=!h9UYhp4r%%WOfwv#V=UjRp@!EWnWjISO|q=%PiMCwEZ6^(y`ICT zvo{ca)i!E<;=D`ibH4(VY!+r=t67Ip3pXn~p2lZuQ+l#ll*o8zP`tWn2AZ`K&Dw2d zBfar1and&aZTls>U!T`6zBm3!EosF*uJnH#q&~0tp1pTn(fdhmin*h99#g}+sNCQ-4TGN+0UGrS{Q{DdyqC>| zJYtHe`b%kB=M&ZyG~HV(WAd8ayKh5BrE%P)AaB zB+Y8^>+pSMK`)^LKztjBmxQN-3Y2i_NDNDG>pkP?*Py5`Vrl|J;?Xx{e@z4ULr{qQ z2l1`G)M@xI1#d4Zf~LU^{ReZ*Vx*A!6Vh336oEUM+Ce6(qIQgl!1XHo?~X+Ob+}Pq zr-#lgUwbVzv&hZqsgoxs5^>XH%4(!ccC&F7vQRJjDguS|8&Q-R@*tBwgL<$Cq5$FW zwo{(XR7HowMF|{3)|FCl8#mtXiB^B&J|8?=EI`-eYXq4dG%j}rB5xpbriKEBgmW+>j zz^9IGh#w0KROechygg&cKX7E({KG)HYBX_Bx|=!OyU$a)t;uvWoQ;domZQqT)I>Mi zWMSIOBV@smNW^`5G+8(SSy&bdnEjijq(A_o-1V_!Z!l*!zcSGEt>}8%aH65_LU(6z z4(jV4mO^`41r_CX>_zWTXItYBPdf&Ws26VJ4u&wGUSk&O&}YCixZ*)3siT_mQEUjpyuQQ`rSJVrcQDX%o$wiN!M34dejHE8;)79e*#gD;uYIi67phPtbQxn zk0OK1J?S|AjNa=jDs&cOf~;cfs`TaF~}TSV%QI>XVVNG@(;!SdM^Oz>JoKRtiz3g zX))D!B#u={OoI!cIcb0S;X`?tO)@gPh#)e&)^R8eF&JLdIBCCt=%dF9oOYiW*m zb1%xIO8ycJJO_!e%?LQoi1{BSd)qxwsNT&VQT0HY%`7DWl%#muaXk~_{s(dVqNlY! z0Lf<&{%yi*1L^f^CHXNs`6?<&=2QA9-@hoI3;C>d!I9^u@?v}dBe}nQWc-mZtta-7 zS$=>vo)PXPsWrSLy*@s427k5YQ1AJ62q}Vkr*9$4s`19l=tO7?yl}FxB(HBXS_|R- zs$3k%>!V}7t#?%#=Yf7a(8>1@9x1zCq!o*WPEnHSo2dyy(@)7J3)o3#a$Mzj$|}c} zRKg&JXdXblMt!m}|NYVDP*cZG;6tY~?oo_$F!@1y8_!l^S@?8$>*F+(Kn4aVg`eS! z4;(D}KvP+3C>z(VAazL=J(K@a+l*BB9q23;PdX79U!94+5CgPsZ7!t_Zqc-YE&ew# zeFdp(FP5mZu|g(x#&?a1az~nP0$H{(GB~=+L@1k__zCy-voO>+mLd*Ol`ve(F#Hf= zHx4$cUNoDIMda#5b1A$~FRG?6AInt=FT=ZM6ngZc1r!#m8-ouJ9W5bV0LdjjL8O_G z3CDtcF5bSL(a;ikQX&!OfMcKqE#n3Z2O8diHUwp@FY*eC2;3miG@uD=mmpyYj7gBN z1a?c1umtuqksx6S+$%xC5@<+}umm2EAYlnSBtgOw2-1mI!V>6|AYloVyIeuS z5||}p2}__`f`lb72caG$q!&;wLL=t_E}deC6*S9IN(xaaB_Yrw!9=VkLBdjOr348} z;A{yJmcVKW5|+RQ2@;mTMhOy@z-9>&mcW1n2}@v$1PM!EM1q7RaGeAROJJJ>2}|I5 z2@;mT4G48Uk3g(w2V|UjKHL?x>|P9k+3+2F0XGxY2oAm`y<>^zJv2zfh z0>u42MEj8Y<@gPD6C|*wgJ9KRKEW&QKL7{^dROh2CwgO8oH0%tg7=t`>E-zfCJoD~@yMI^g&aSjHZ+Xv1Pn8=Wz{~qa%t6J`fDBW zzDt9@L?v$M4{{@5%N>KfP9#`QEops;Xa_g0iBapr+@K+0Zl3-ix2sUL=Rt0r2y?SW z+s`R8N*nT^Y!#=I@5)|@#%Ov*)q1zWFU)FU(hNLnBAf-1jH*tUSNu}#CrAi&oYoGK zu&ysL$kxKiK4aj0p*vi`Dby+ak}Rkvzk{aV9b-<0nNa<14g^zgo=3A%XLT4AZA3+I zR$zWmL({0avCYNYjbHK95Ox!TM40p~v|ujgZXA7lfgs8hCdP?b%~2HC@57OITGF!W z6|?S)mt>(p*1gTx8-?y2KcIV&mw1v;y%)pC9 zZ(;>;@&n`fGN#C!fzmsPy~g=ej@1YKKktJQCv*Ky;xTv~)LdZ8{cR{+6A@}FAQo5= zAt3?8ND+xih>;@FEg?pVNRNaVDI$9$#7Gg@D4gcvCzE(tMGL`X1@l93|fmJlOFBnOZ@%_SnaGKNrSYrcdSDIy*TF;YY{2{BSc zDka275t%I^Mv6$agcvCz4H9Cch%`!wks{J8Ax4TwKthZZkroLtQbZyWVx)+ylMo|C zq)kGM6!L9I^d2G6dkD~Z_=~>7U-K%QQ;3ehlg(`U7CToYILk}15F0Z%?ky{>3UTJK z$UGo_N&U#%lkAtRDNV;IMg4@r7a?~3NhaAQP^NPJknin(ilN*=Z|!&T>-ulK1ktQ1 zO4pAI?spVy@x7z9rh9MzPtm&erbAn^UJx*0W?{Hu!uoD+A1E5hjZSFfc zK9q)q7N6>*)L4KR>45c;iSYIvagaXTPg9^jv-fyjXBavLV(`*_e;=x%LgazyjFR6?d@la>=Z;=)sLIl$8xK1xIK{w*CAws+XvmjoSMVt~v z<$B3%QIxNj%oRnK=_S?0qNZ3BdGwM7QKYGx!n7?{FNzw}jbZBemf!~b)x+!fne-%d zSsMi+*e;><5{gNPk|VBLLYzbddn6Q-aeE}hNknk3gg6N-010st5j-FvP9oS`MD3hJ z1Qp0QAWkCKSOj#4GKio{#&Hr6%#x6k0>P#tQgRXz%#m@NM6hkBhuy%5V7`pu1S05> zP%Z@`s7Z*Eh+w6JIEe_(mJlZq!D*l2) z4koHQ#cq1uqF{RUJjOuK5YIo~X z#{eG=a1xx@8qMR4%O!k>@uzHOv&2D|7GS6pc*EflA01u~7;Bpx@Euk0sFN!lKrtDY zFXOr;M8VtjAM47izUSD5OUP%QcsC6 zH$<0uO7O5lTV0evgg3~1SrTeTAXl{LJ3Jd23AUbb{lm$DIjI8A$jAfp`sXM*F+NzD zF(`A)UC0)Rm+&-UjwCyh{43EDAmDOr#->p1AIKd`E`YLKas|d^a(?6WAiQ;Ok{h0U z@>Gj1%WoG*;kRo%?2q7oT;k28*iRi<{yVo49S;$bM_%0M38VTS)NzFch%!RZ zuH-%&^tK`F8G-v)e(2Bsz7iRDomyIqS7;mh$GqHwoAY{OdJ;YW7|y%D=|z`~^EhF& z9P;@8NETrM79735vFPXY%Nn%SP8uU9W-qeY*2{FM2@;qD++cwTC^gyW5=aeWrD9bR9vn*TPlk*eHos-4dvoW za25acM%Z4r!S-r|?R6WB+(sC=w_);X1f93J5yHs5Ee9bQep@cWe1!Q3JqSH?K2+-f zYw$bJsfos1-sLYBr48mI7{o`&8(nNvCcc{`-n2%llg|3lI#n+{MZa!LL60cC^RBe< zTWI4%%xG4_XJY*8McMM$7$!zd?8j-!bzGsMY!5z#CkIO@=?2&yfT5~-NI6YlOM&L4 z7*Km8sv7}MhnSE?KH#N^i6^CC8*&=GSQhscU5@FPKCyzaphg|d)NA57B9)0N$22^Fol51> zSH$#{tvW=W7$Wlv&tNjud*49ba?1nd*d^JZS_+gxqY|a*B!0Pk>wJN;Z zkM~zzID}_-1Wv%vz*!*5SB{y25-_#ILK}I+z9iq~S_IL^farCrYj$DS>P@GJ0~3ne zqREXT6XM{6!<*-_3o(l4k z>$$w$I9Ez%?=L{Z%!x9pm?UJP`8LE2`#KHuy3%LHu}E-4_aPnGYX&cJpr_L=$c*)e(r={=^|VM zwFj=Gw*kL_=U3Fb|AxXKT=$doBL-QoA9;8-XT|eqo$&gM3-MS~-8#)t(Cu4R(6e$* zuqfLB(Xgn+ODaFNZl%xFqXd_0X}*)F4SZmV8bZzM-D1f*V;Qr7^_A!vzf0`IGTJfY z6j5|x-tOLYj7PNxdiDAUs2$q?3eohPd_Thx`oQwvl3_sSa7G%v=u+^FUq{7eeBYLI zHT+*_R^JvJW~KJ`ZNV1a_jt&Q;id!M_4*K8ICXOGRH;8P;GqV@5aT$=6JDbmk1H!? zq_xbFw8b-A-69cAJ)IWuXF*>(tfd;1P@3??`wyc=;iE2(bWZG;d< z1{JqE<{RBtG}Y-ph8%7)u~kax9B}Z9OV+;q0vOCsb?}g2_pmGJcEVc;nrE1kzgXp}Xnr zL$aMnebAj-hJ)xl;&QDUQ2{$bikv=7;YV0Y#K&X0VdG9me|0E$GBWcal{k}zok&c@ zl%CeB*Iq~?i1?28&j;N<_}*V=|2W0{gDU#Z{`NWYM`tCflJB2Cd@(x0=D#^|f7UyT z?@!8$B@Us;3zz7GCU!Nyq8pXGFOEQ&nhw|0t$ayQ@GxF~qI2i;Vhi2^SVv?anyy`% z$X!L(E`V)Joh#ZPK1#hBI=+-O8P?(K3 zQYhpXntFJG5ItBz54_LxAw-1A!23+NQGyvOZ@bEc3|o9Q@8{_hqV+La$)d$KOc_s4 zX8AJGX`_v%;e=lQJeiK~g$hx+L5z^{m%JYe?!g&!c)nb}#mTSb8eJs+7U?iKHmSt6<)o|t@8AATqjvB4x%wbygKeHzyr!CaueVrpj_ZS zO;}b&+vCt-=)YO$^5$Fnrqnt8OUeEKFIST(g?X}TDc&bXX_UukM0(6*(DL$?%b3~U zUlHzKaSbE+P3^=x+W+9Bv#>20r*hSBErg}a@iI>?4<6h@$g((&r(o4H#J862T0*JD zB3a_fzj38T|DR-qd_$t2M1~TbxL;y*PwhBGQ3lV=jBGRD;3KHZ(-+75{a5*fx%~w^iLdiwUFHx^-}ZFq6W@sVFd%8yHXW!m-|%`u z089&h>hKNOK1_*EsYLPp@hJ-^VSGw0eM2lhrIDcRtH}>MFFplUN19R}Uriojaa?># z1I23b)d2(srvLcrb$9}8II}%4AGY4%*q)|%Hg+r?vVW#JLt%lnz~~A$r$=;x~;7?oY!tcxm+lJc?VL z_7ulr9@G&{x0Y@is3V*TUM6Kov zbz|`a#Lnu!ta`=p%kEg2;SEe21x=yjM*dNOSDjjXN;7?M zN=&I;j}s%C(HFtxv(H*N5jWZ91iRBV`%#`KszsHHsLH^Gfhr&WLqdP)l62d}IG@tU zmuC$5ZK43twQ71Teg4XvYv~7q5n-0wVCZ@CGCQ26@QRh}c+T%o%u^Ea(@>sEG4Hfs zb>q;>iqz1gp^9=@jT#z<5Oi-`=gh>52%~kHgv}?BV_-f2U%w84 zukJ4Jb>$zZu*rJ~p}YXZA|O~5CEE)*XyFOXyqU_01n+3T0iQMLI2>P#(j%bdkH{Vk zBxu3-+4FmpasiT)zY`2@_%C7&W`Wlc!3?HjC~;#0YSWtZO zCKcn{V~E2fL^DUSp*@V`)`PjTs38s2$BQ&-y15<9m*bhOr%*oV3odU++k7)()i6z> z$&UKv4+Kz|d(TAa*#70SOo7*&>mBF{HGDe?ixX)578f>W-K{5}_j6^;9vk8`BQ!QW)-GY=C$ zt>1SBwO)>jHL{9gmT$MYj57yN`G9=C@$W>&Cy-GT%{8w^DoY;d>+hS(iP+CU9Qz4~ zUl@kqKDos(++66XPFS9b(fwN#6}^l4M^}=sfx#_NN7T*OXxL(6Hx^^4>9O}E(v@gBHDgu5iu-51Wc$RmtlZ7DZDNzx6EzhHZ)eU`Zwrw zqTqCtW(lx)9G9%vlFC`5t1pU#HauDCMgbY%6Co zC)Lbn5Eap%8#SVBk_8^5NTcKPv-9IuKz%YkV zZtcialC}OCNH)umG?_nMv;ei>zI7`ORqy?no_3@`lbWxCbIJOW1My^#$9+1`o#@Mo-*8_tNqaX*|U(+T!AD=@j9irnNq}TbF_m}{P_oF9a&;(_(dpia~ks4xPR$yK^@K<5EIUm z#RaIiOdz0DD2Tdkr9Sl#ga@t4gjO+DQ061-cYIF-SA=~J!|;vX<3Ru9U!yp+;}E{j zVf?2LcNE}op?jAHu7n;B#FW3-anVWC)BXNkdd6cb;A<$@hWDRqdJgtXX-#))t#jYR zHv1O5YVjtP&#-|jU@4*5dyq65K)*`weQ>MO7zygi3qJDWHbq?Z2z?Gxe(H?9iHj6p z*!wE#!wQ`Bqw&}}Fb1v=Rqa>~+V*4b!KeaxT5v1u!sUCxF#kK`4~Gq7Tb~@=KI|*4 z#mgYy`;XB}8?hk(>0NqS@^;9dIgg1h`6-hQ@DF-H6TIk#UG8X?3!E?{KrV3VV*3)?IqG!n>dac8ljE7>VJ|s04fMb51tNTjL_bM=CH!vl zI4uril-Qft!l#Di(7O}4Xjwj_0eZ6xU*Vyyr~4wE#-E92QZ8_lTv9IRO&|DLD4i6J zFXa=2<5fI~u7qgV7QgG$e53GQ5f;D2*6MdXFMiWUwWO=$a`FZ%NO-B*^V~!xo^WZ; z1|kMsqEB(`KnZdVwaY%Kv~zx^~VihvK|tkT#X)`suY4&u8#5sKI16w9>+KXM#=H@Gzo!Z#qB zHn}XrjVrhYFCm!=Y1Ql%H#XwtBsR2sImV;+TVgra-#q2gfY4Ev00!bVzoxZ}d*5~=X4SwyM-*!vYmFAU@YKR8=_q8Wnw7K#nbBUP5}CKv(X>dX43m6Rr+cAo_sIHy=Y6>Z9=ih8uC$D&`;4%2Pi}%IAPM9zyc#k< zs>Vu3cT#lk@u1?u#m#Ox$6$tj>fXfKZZxQaP4^_^EZR;9MOW|c`rs89Ob2jZPwO(L z*d@h9Y%woHCDeaFrvpubfUOquRGJhgT@--hw@Ym6hzyOFdl2M1NiT)ldmJ+CEu=q)hLZyXcwiU=Ryt`n(n?RdGa5i5e+j8f z|5f;#?w==iu?Ll1g@YWZdEay6HI@sMHtmC(OCg{GOLF;6E;Far#cGkMmK%5sJ)0tnGb;`^Sn&Q+l6anCNLk zw4I)AXdyNP;Jq76&y|uM%E0uvLD*60srwl{oCow!mcjH;Op=}f`zr5?CziD1Dm$d0cK-P@3+4y7xU)MIwi43b~qLmY(Bszh&tTZpS8L+$#I?dssy! z@5hIr1kfIgE0nucmTQS8t3B^^#d^lQJ~#Gws+{uEA;tQ*)j-VBC;g=fmwky3XOz|K z@rwQ2KP3g-D{d$$*s@|)iTG!Uh?k7tUNZjml7j!Ngcj^uak01c%KoyNT{w{cmgd-1 z(K_)JO}wp*--R<*ay;r7&KLG*B3BccJvgA{EH5zpW{Kl#l)UoK!Vr@jsC-WG_}GnJ z$F^cIt`9^cHcGZe@R^GhQ;Nk-Z|gGDv!i(Y7F6|mv17O9culL>jS9cj#_t@Mf3y_! zjXx~E_m$iaBQ@WkXDmQ%T0CPu0{V$NVHDxCubT`Kcn8X}bHdorD$e#4<2hdqodV6N zXRKJ_<^}2~K;`S!DN=XRUjot!C3*rVxxVf|8pwLH7MLs$_?AB_! zP~K&lp1vK2zu+@2&ej6|p43vFeG|S+Qk zkr4MBla~>@jT?R0H}#HUetYu&sfIovJWf`q8(sMF;OC^5Kv22(!sqq|{!@qz_pF3I z2*v2$CHQPNmME7M`VUZjunh~a@1}-+f=fpe=uxu-=Viv5#Vx+5hJc*zm?>o#L%B@fw{tplg{f#7F}fTissz!VkXdg42T@TvvD!hjz=*A+FQJ4kOsDHd zCV$vS*VXm;E@Cd1gOgg+2j!1R^qkw=ylflAQ;Jd30yBK%Kad_BxD;{JAGGPYA9T@9 zB3`78X9&d8uUt&J25G=kk+BLm4EBchD-aJkrnjFEpH34pGY(4y3wqbl~tLHS|5YK5%$~ls8xwatMozf1%uX#t(}VWj1a^gRY?0DI{k;en$83CgIP`Kq z>X0lb5fJ`SYUoq62IBGq5=HMrXR^4!@H&4DUiBA~mji$F-VacZ;sVUj?+}7P=+fg+ zIy;-i$mv!-TWi^#-dG9JeBB8>;eejNb~}W?t3L2@8Ac{#5z_ZRL^Ej?^GR@cp#AZT z?TDeD7A(%ra+vS)%!kf;5_qVUTs`AYc%t4=!>eg#CDA>S?@51>K6WWmLoecQ!4}x< zBr9F?dN}TbGCKZEgC?*LaU?(Y)G)84KGRyqY!}^7Zn?cD570;FyMkMs1qVb%8M67V z)ASL6f=T|*0=GL9--r6h3xMq{O4=vb9(BYsz5x;yL-}B6n8$FFLb8=K7Pdf(U7|kF zHGHRe0$N0T6kQ^t9l6Z2Wcvg8*QsEw8lp3kfy0-mp?6WBSMAttE|rTMSzZMlXB|t@ zjq%RI`_Tn%C2$vP9R5;PiGH(_FD=a=1%B!(MB+9~T>4LqUI&@neu&3P=)nXlpqZ5D zAqY-|J_2&|9CDDiNUEK3Oe-$qvmmYgCMlq|9P&E$%{^XyZF%3xgNX{FcW38n4hn_YFn$xH()2W?YPf4sKOE!;NS9nR{U3$&Y`U zX`rBBml}#76eHh93Ny^DFUBMxRm4k#`~V{&F`tQ%8-Wtt=3PJr4qvK<$^Fl&Kn=yf zn_x!lm#7x%<#r^*G8k*HjHP(25ZeMj6#B=|i+LWU409GDPss+(mmYf8kFRR+%$UbF ziT@StuAtk){~KQq7$0w$OLIqUHtwqU4@NI0zkF&8O@b7XMS-uT;v226_MTG(E|$QV~cYP5pl>>M>T2fcw0()c$QV=~UC zZ^>*5G^atx-$rfRSYJah7&l=mr&bYB=wu&K!jxX zzfhWu-Jlxm-ggTTn(=$2GEYVSROo4FQM4PKj0R={ZM96QoH;957x{o^&0{Vm$%toM z2L%1hN1!gP(f$Kqn-!W}od2~NS^|c{2<<%vQ*nJn4c$y|ax&f@EG!2>Fd^PVx#o}f z!*-IMaS_l^I^oy35t#L%F2v+hfTdPH7;7yKTw<1?0l2hJ4bc}3zvzQCzx+A(*_G2N68PK}M(iJF1AA7IF26uqqx4!wCb`a~9;t>Ec{D_hI zb@n0h*4YGyhZs!Y-axQ$71gGOE+Q8344@aj0aS%BqLr-hlFBX}HJYQ6=`d3iK7o|c z93+F}Y(IpQc`@z@*$;2r#r^O(63Kpelg3t|3ow?!vVkb17BDQ8Xk>784QBa#MmvAnvQMg-YoM;?3e@#_t&~11mhCbdXVC1j5ZddVu(Qt;>nS8 zq!^It30atrXdZZDQMkDp;%wW0DaqS`4Wzss=5t@OBN4E<9*>Fn$GaI~shAJS*hqv{ z?49)G4dYC5^TAyg~2Fc5f%>!G6Jk#6jqsaG&^g#ck~D zq*q+6yLF+&N&_^X`Bd-HVPM@Lz)=bdjlt@54fdFfv5jY{_3dTJmB=iOwY=T}at^68;z= z@S`_~^#h!@1B49_i>cU&9DH3cH|Q~|L8FLXkU^h7q;i`Empc*V+EOUqS!Lo)?@Ze! zBl~3Vf{xld8S7q5E3mi5Z}s6QDfSh3cd?z?fVa!<+Go5(wdSY$Plfz(I{zN|#kF#{ zlg9I|q4!37BL{x9cnmUbEsn^U7$Wlj7xjPg43Aa$$;ry! zrkYT-<#ML{Kdbr(`2l~Sx5m8Zfh)N@dl+5%>fBzOJq-TU+c69_;xTBHUUv41xH zUx{p= z@ge`RB)skjxP@SMGM;U#B>%Do@Haw~lK4u{Da+?`XoLL!w*5r41K(RoTo?_$DJuv>h9rSh6NCZCIxg_)9-BS5u8er|7=^GctR3dG~|F6C80gtP? z?tGe&j4P>wAS87`n>>RBaz07OU|d&G@JJfT8ha!S(pZ+UjWn7WNrUH~XWqy*I3OZd z!Lb~i#HDWQ-H-%mNKN8qS=J>kh~hX7HTyY~628P+yn!WR<80IorA}h<_IK_*_syH} z43Osgy4&x|`|SC>d(J)Q{yX>FbMJdInxCA+qZj-&)ysQvgnMGiUNT-;pKmM{G0c46 zk{n$B7m?Xkz9{SMLT{Y&)5eEw#hOrxLcKZ9pgl!iTo(C13b?{iK|lVO(=$i$6UOuB zu+zZ(6z<8bz1a)_;tR_BO$HvMiF}7(pVJp=j4H~-&ut{W`<1Ckt4*gQE3e$}o5Dk8*1M6oQsNr~VLa>c-JCo*B@`-j&O`_r5WI z1?16sakP(fU-^7VzVG}DJsrnan4X61B2=iP?|{kikae4csHntr<3Dai#4!KI8P(Wp zQ2P8JdIn!F6wlc42obrV2G1a~i#EUc)fbWB5q#k94J42+|NWZ$@^6*pci?HwYI@hY zV*V^BvJU?Ty)EvhD{dEc_#%qw-v3Qmbvz|_N`H*v7YqY-xR+5AJXnAC(fHnv3G&Qm z@i9;5Pg38Ppl`bIa#AG-o8R<9Vd3vr=Ef&2^1r%;@{Tk(5`*~x2#fVjjb}UM zulRZ{e=slqYhdT)zf$DCTjZxf7h3-Y#C(5h*~<^nm-{Mw$d3_Qg12-;EB02jfFfk? zgY1FnipG46+k{5zd~RUh+6g?1qSw;)%%Q7xOo~_49>MK1554Nvo+^iBi2j>z!yP?W z{?0oz*rMO(|D$E}1E>z0$Tv5WiKMryk-H$Q<8HSc(MmWFQuDbp)Z6%ZA~8i?0g(BiTD9LML?z9&GLV_-jMD_SBQ; z>CL>2e)IQHsMWr__!_&3U(P>|!tjj=CtwA1d~5#aXqgw`o=|rX>g1~h^bNwNo`qu8 z3!7N-=HDdqUspKL9X08@Ffj9a`ZgZ5T6hk1t~9?Hi-FwUNwG9vLYsiVp zm(71PKS`Mot$!DV$oTsyFEl-U2E{+~eSFNX#E1xHe)x9)_ch9o>aX)`KOsxCce+$**ZZ7w7mitbSKKz>Cndc7R z*#U+LU!%Yefqd`=+|o-0evH6#@L+)2f)2ss$F^hRm~wcc)?M~(ENAlX67N0L_Am2$ zPd$6#BhUT4mDFmQDZM%>F~(kki%(zi%7HOI7;A(ZXa84j#3>3{Lg9x_zhjFhZ}b2X;Rmd93SEXL z|M>&Zy|3c0`*pl-1h3z{4}a?Z&F2&7m=}Ni&vLH`*~QP1V2P^?=jt7?Xe41Yg;FUk z6ia3zS|(ydjc7cQ)^?<$Mr4JSNrtvX3~e-;2y3BaA`uB0$P^<;M}lEX_a?Wvz5h9Z zQ+t})C_T03j<)ou;Ak5X!O>VmH;jK*SmHiI1Cgd=0Y zY|PNZK_h78h^8XxG0hjv7?DIIEovP{rf4XbG4wl=(S#NgJS|5xj2P+}njA|f$pk`qaRtyknMcy~R5}@gM&0Yt zTlBiH%D1ttzt`Klwnfh-wk47~5_&q4N~R4e!q}CH=-1YTu5Hkxy33G9S`5BuVq^>I2p*1 z%}kK3MZ!9&L_MD&1(rP73x-r5&5n(s%Xgs9qX`6v zr-N~QEC>%7)`Mf{L9$~b9gV1dDUc6i_S4*fw~It4BYIJNMHN{s&cCs0<`3eLKu=(U z?ulkXNlZaldvKR1Y&4=rgj)|63>H*b^5IAf*=g`&!Sr~f0aXlVL%E@ES|LV$MN@O$ z$XoJ(4!>?2E@U!zT959+Bx=&zq*d87RqmkGWSlx8m88iJpPWp`gNab23BFnSarVN= zP&STLP&fr!GxU0^2Id=5j`e>+&#gG&qO*bQn1hK{K zB_{B0@|7BKv!Vd{?jv1tym?*e7i&R_UFqh54Lw`YwuC{JqD)A*$~^f}e38laA&X;Us)2gMUW=T9oP0157WPAv&05XsF|5NqZ9@Z{YlSIgvME~L(8r^@ z^uB>LCA1dmk0nF!33V9^a~ciL!Yzv+1$waXOxQSuwUqr;w^EEAeUkO*d3~oQ6V}zN z(U=@-Os2(BFDfD1_Z!HI@w!wVkpOC)xlz_;6|6^(XY{(2;T!923G4NBO*f6#)uDGv zmH)ow5pZnPy~;W3;tH@c6Nz>V+>U4%y~x+Ps6mcM*L}&1abqB9pzA&Ct8#|MLsY7N zZS^Z0lHB0p?tQfH-R0kZ`-NSxNk+%hZUpbU9GTKQuU1Kv!G zU^<&J^x$|9dclN9D57uAMh*D0dXA+n$Hi5&g-kRtwE{P*^^1jsYQU4dz^A~|giCWZ zZ5;w~;#(mm$ICEo(cc3y+O+Wl0iSg2g5Qo6n&ivFbN9QDjr!yjowEjp;WvuV`Mbr+7Sz znx9t54a}q>q3BpN)KaPIjiU{EW8Mx%ys zDNs`KQkJ5x(0h=dJP;x^5$jXT(t++{N6I6^Xo@^)>8kv=J zgh@v@8;ns1Y^#kYiOtezG#o_?LlHW>i^!3Qk_`nDkz_U#+eI1@q#==wv#`|-AdOOt zKgM$weIUZKc+}AAqX{hGn2q2z8lo|2QiBZPNOElKeN==jaxzLam(?(YJluhly-ukh z4?(@bfh?J@RSg=cTt|zL2P-Jr)J4iDxQr%JSwnA41mh9vS(y}@V%iKt7oskuj@C;N zKnKNUn)G-{kNAeLs*c3>r$-2q8Xu{VlS3@6s&OKLN~k#V((%f`2q~CNkQ$g|V`D0q zMwdlmx~{b7xskG%Y&$k52cse#0n&k;Jh#WvLEYSFBvH#rM3vOBIbW0OV$r#`%hn{a zI~x%ojMLT&)4eqq8&9H-DWW9zXJg^kNGD@D<-keEL|m`;MInx6#da;Ptn5K79EruG zQHrU#lZudgbl!IBn>#!`1A{a{73DYFhi9lecI66^8|@C+F|urVLx=G=WjT z=8QVmlCBg^%8R)ZLS3*5@)-rzK11iQ4-)Gh_1iG6lD`n7* zbBb}Xgtv+nq7g@4>5Q9ZTBa$J%wpw6AC5lNNT1Lj(9D zWRsWW@?~r#T)sU25j7(>kE0+u!_0Zx)u^2C2656QEO$6g;i$T#F_VeKgFCV4#9>h5 z!h*!sMeKYU$pmlo`t=E{B{(6Y7A8p_wg}|6akY{cm+qU1WRN^PQ7w7)sAd`JD`p+9 z^W@MWPHI!4nzXMGm*w|hFc>+xS^4|TVR zXcLL-AQ9ecL(1x8>Js}Fyj~s)t0On+9nlf(Bu{6>vPdgB5F}Jp5*pweu&iM#F&0Fe zN)y~V#^oT7D$_yA@=v&gT3DbsCl>p=WDJ9#qO6P_PQt;^F$h8*16~*FBz8~Z!h(88 zUv9i@-6_5QyN&tEW*Je4R`!yj1P=V@T*G#$Wh6ldo!~X-;b;bahl0!AAPzEb$mnfq zJ)ss3k|M8va@C+b*HpR?8Ves5PR2Q+r%aWV9J1y`gqUhr?xjU2c|s1zm?MrSQQ`)X z8x@L0hV7=IatjX1ro9L(k<3JidPtOytP2Yw`{t60oOs)UZrd&UFNEABoL2w`O(S4S zpLK&=;AzujTV=4nX~Uj0j@=K;iw59^y37s57IJx%h68r&KK!t}0r6l%JVbyP*)zN* zoc3^_Z$PtAVEV(oeV$HV+a|4UQ(e3+T-ROKQ#YVBG&I;+qq}9|T!%pS18xXvbr~v9 zi_k=aKi9fE9UDhOG7@C+fnYw1#J zN$}HxO{OKD29V8Ds2(AA6$vlZdy_gO;gOWUEm2v;1B`Qwihiyjt>_9D-h;35mBJ~O zm;IzZkJ4AC?AMe^NMjcRgto**^Mwt_bAHt<)ju-BQoRGuv8Y$r9Hl8!<^XK8aidzS z`6N3yi4#`wT#9zi6#S&|a0^ck=mZXnD?MEyZPJtA_);7d!X$+qsj3#muk3aUdh`Ed zJawO}#}s3V(W+Nrn(KREs(Ag+F@28lXhFV-Pv*-FaoWwOGahA}Vw_{N>c#aq^a-~{ zS0VlVrc?Jyd5!VRJu3FwLSD{nSsfYXuYk zp80s;A@3UH)N3X9A?7cX&>v>LSwen{`PDDG#a&_fQRZJ$f*)gk9rHP9L7eYyDIuR= z{+bf}6!X`W(4S`hrV@O5ZJVyK68a6v*0z_BSI=ASE+M~z<@c4~?_~ZLO7M3v|F25$ z+nIly`JA+%gYUjmg70De%O&)8G5<#;lEnZ(sPfM@ArGKC$(6V80!A|$ zSN`RZ67^I5YIaWem`Il!($WL$sPLz;W{^x}feC2<>TSC9`KR+lT zul&!eCHP6M-yN^G#a*HOD*yCGiSm_y`e_Ni@=tGaYA)WeL9WUrS2xmH*oRxLcG|*gwjDEh|xf<-cw!!B_t44@;D<{FkSMyz*b)E78Bo zfB8$uEB`fAqI~7QLM8ahf5l4Z@8|K!l#o~ct@CTe`&aq59VPT{VEvyg!B_t6GbQ-S zzkQ)Z{cdOd?*;Pwa{#Zf`8qp%-p<~DR&XTB={%-qLz^$qIiT`(_4W6(sf4#T(AhuO z=3_ZuXD{FR`@tH&0(BJ0i?Ca`c&Hz+(_H!cO?djxO9C>K8=eHdb zGpE1P4{e=89li}7m0QvV0-Jn_(vIV07U<~f@mrPmv~~9MsS0;_eVxPJUjGJFxq*Pk z+nYzRwT4e0WbgUB1A)$7stK3kZ|iUK`8rjv(D8-LiN~pYCkJ7enkHFZ|KO@&PhU@) zSJh}>!`ijzc51db8t051eZ55X_Vo_qHqhVa)8spO@?ni;J#N(0^E^!+5Nq^^K~tx` z8qPyC>%djR!yiqajB4uX8;)G)P*bC4IvSr#Yx2lZlP9PA2!&JP$%mGAI;hFRDUFU# zhsDz_O+3xwdp@w^cSPxUMN^NSpfipan=~Vt;pWld7@puxt{RqSa9SoiPEU=7QKez= zxE!Z?c@L9#I-FZ0PIu)wlc0@93_8@LLo4+@7mlhxrBhHo?rdsm(hYh!$`G$F(ixU@ zzR`v682VaB01X)?0X(9>(=?oLCv-X&R7zMPFaN3{0xNR@{=Nb4kZ%*lw!go#BOuN^ z#Nh=-FCT>9c zV==sfN4>!3Dxw8+?qby;^lRpac6wP0Pmodbe8r?Uo4{ks&8qV|$eH^EWxi^t>I_-Dwp+A1<^Ak}3&w(Z!W{bCt#X&c{WoCP)&~}hX zMlR0f`UY^;TNfLv3u$;~3NMS|Tvfb0#W&4@LeHW!dU-)xOCRE4lqMcUX=~|$l&t}a zzvLFFzx!fw)C>5l3(}?J{=Lxs@6n!#0{#N`Q_Yv%8eM<+B{#t(s2A{?3(}?J{=Lw< z-=jSv1$>RuqO&gfSXguMv4488XVkxD|4;tQL;rH}=&c7|zJ9){>55xr)`c|^{ftMM zUURGV{GWY{c=SgX>7p+K@#U6SBcYtB0?xF_R5RlNH>D#lyufMynvYk0@5`xou5-U| z8rQ`kcR)N0g4^NOm4@ZFB=CI>`LzVe*8})Y0v=A_d5wJ1V!M@#p?D-Fj`I`2L^2bL zL{eJWHO`L>p?;r69S*mcrh)rvw`m^vpr*yzP4h6)r-8?TKK!MO>IzLe0&DaiLuNoSp~RieJw&fDQOz zyMw?Z`%oUG@jI0lfyW0OWxUz#~8p@HlV_@I24} z?#7=-oCQ|nFEAbl9tNHV)_xuGSAh>~AUulvz~lI8Zv*DTX`lyq7Ptj?9%ulopMgH$ zZs6;{E%>#F>JLE<*Z^#O7UNE7;A!AteCw|I_kho#oxt7Sf>W=mpjSj{`kG-zoGja0_rZa29xw_`oB;^S~3p*6*O6z}n}b=l78h zxD0q0*a|!X3;@pp4PfivK@ada@Cjh;Y1k>y2Yd^77+8HZ?CJ%y2iOYq0nv5hD!Z#+ zE8AI9c1`tViw~4(+A>gU@n2tMnko1T%~jLoTC(o)svV1`v^7_M?4vg?yOsngj|cxx zecUt$iO}Y%nRe`|bS>_}>_YkYAIAU1x0>b-2X5M3H4ivCT}wXWY|J81c2T+z573B@N7HbV4 zy@dZe!QX^-PH{GMDn`>9>CPLE5UDM#g}E7rN@${fckUG*p$ zRgmrQRNY%Z>8RRx35ELYFzN3!%?kK+*>C8K;{CSPHR2p~6z#Y5qTgsd&qH607xNYO zS}%ITIpd(7^H$wUO%fN`!&T^qoyezX#2|VD=qb=KjjfC59?pL)QTtpqz0gMEv<377 z$iI&0T;APW63Nkb)#t#c=BbP1=qkI*?-LeznRDU8Zq2FelE#)`B`CPXPZHuQScNDF0Sl{(D5@DSMmfB=9Le_0JIUf0FXYZTTHt zmk6vx9uH!QW61wF?rru4JD4u_xSAcGs}#d8t!}L>Nwgnw&Ff7QZr-}6Z3jWG2VDd% z!X7xJE z(T;|7i;i1cCG4B@*J5BE`Ze{__yr($401Vta5vO@EIXw5(2hnMDeH_dMk&2Os2&oFiSY}1?T5r#a)T?>7t`FX@c za{j)n-&ZM04KPs06VTZes|G*viZad{)H(fDP zz6lO<*16x|_!TsZnL_10jC>b{O>;f&)m(4hB?pwsJpq3Gh-rSoDi_X{${lf>u*&5b zPWs+L{zE~m%cM_?{~%k3oc~v0yog^3|76*R;|XaX9aWC6%DWBJ@@4q%LH?Z~_zNx{ z^XbdN;2jSFsP|<5QM`OEY?@1nAj;irmD>u^EcgrHH&VH<_x%pc=UG~}cs)T+I=5qW ztjE%1ttWn=pXza%^dmkNf3s}eO!;)hfa|F2&;O2!h@PkZdJFj$PnahCu#l{W*QJl4 zQC+UZ{Z)>?kaq(@FZn6@C9n&~Pt{Tv(OW@Z03Ghcx`-YCeZENk80hB;=v41LpuYn8 zEo8szrWfsZZbCp%Fd$EiI0+{uHK{|;9(t%4gXPd+EIU+olkT~*tOAo}M#^3P%4veX)PbWN)GxKn*; zzcq*b%};Qz+Dl6&d2%uS;2*f#G`EvJzI?y{=oj$YX?I(8jJSp4q7LOZzX&t#u$ggZ zmGc{A`6N78M}otE|sT&|mqaj3>0tX{Vn|Aq&y2 zs)!nJ>c1_>*Nh*b&8>sExS0BHH~1;=?emKI?;z+CpbP&a{D4?@a(+O>m9G`VjNMg^ zU*<=eP$lAT+UM5)QO>VC;3yVHdSv|VcHUJy{+2yQ^|2nqX`|mLLbKs8HWBu^+*00io39HxL4Jln9>ef zk>8K~b|(>pzri?7JJH@;oJM-X$hQ;uE~A0YwIczG@l-jR$%<9jA?)}d@(*GEJ|pvE zUA)cZre$$l*qHNMB*BJE<3Z;O$FR?T829S(;pQyW5BvTzL=<+kmgZrX6~A~8b_EK| zXl>Qz0*Y8UshkD`s%N0@X41zO(diuH0_gRM2qgLz&};tm()|LRcPs%N%aCJ@UP2;}KrNcXNuq{`8>6gOD-;MK@_miLe-9hC43i3~peqk?I z?`OqUO>JvL{~kv^4d*tSDc`88hE@{~Zs{DT8+4QC821MpJ^A~_ZrX3JqxtU0RJxiG z%fg|;Cm^rdXg>kbTAUAQhp{fB-=v;meuMYz50yDTPT^zMB^&pyDrXZcwg?BY)MG^% z-Bm%*FFgZ*6Q3+9pxnCX7dqd%|1r~q`CAu_^LfyxKqq≧0T%*V+j>+>&(>y%zKo z=s3<1>$%$3(m5IBA0@i*TQo6;g!oF30^kpQ6z4ORAB10+A-^E@gU&_h4IQB|MA6+c zFr{&yh1>z?{YTQ~MMk1meR4&n5@v%^Z9sqqY&SkIT{L~{sj#q;D4XwWc{X)#o7lR0l((2Omka~Ph&1x2$pslA0yxwt}CyDJ_Ncw&Z7EU1lpJ6b_{Bj3(Qr|{_aNVD?tNLElS++h!|f77e@H z)0aKq_>6OZxkD5$`aI}3{>{5gv+Q?i@3gF9PnmWTtR94FNf_4} zdhO|?)*zzVJo(=ye%k}T?SWsf2lQ**Qb3_hX|!a~RftbYvPJ*_G+e2TqU%)^w5=VB3tweSID%g z_Xsg@sXc}&|5v7L&xIPd;3Ik#?c?fd3!Glfe39wj;Nz4dC`x&S$Dy#u2YGxSWqgwH zB;(7BZ!o^ixabls%ub}b1}Z((dQLZdwG?U5e%-j90C^7E@5Zln+w zGoe5?NxPjsnij7qHO8y?us83YfqT;3r z4uo9b*{{O!-vy>!e(Gws$UepL;vE{B0@W=F_Y}x4u)kdRh!pbew+Z7`$tmimabquE z#d)od%N#1+QTYq&e}Lsx|BY~*IKuLKZc>sG_57rE2x%%`$-n-pTjY5CRRP+Tf&vSY z+M~#3mv_G|<=wAKd3smNeyQu-^uF;;P>ii_vo zk+}-XD@^}4WV_rZuj1xY?^FK!kfl1Q^3S|8f)vi%-={ovGuf_^SMlO2EUyMe*|(~{ zvZHy(+RJ~%903LAKBj<6>`lol{0Xwz{8RF87s$_X+&kxxBQ?iz s3UqbDco9gtRQso#LBW}FO8KFJ@^!(@ec0=sqiULxFOzC4RzXtxzo4ZytpET3 diff --git a/vmtp/tools/iperf-2.0.9 b/vmtp/tools/iperf-2.0.9 new file mode 100755 index 0000000000000000000000000000000000000000..815af8631a0b82e31f70ca2414117e9264ee155e GIT binary patch literal 103920 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 BFopmC literal 0 HcmV?d00001 diff --git a/vmtp/tools/nuttcp-7.3.2 b/vmtp/tools/nuttcp-7.3.2 deleted file mode 100755 index 7663d15b63cd915a2e91f2de3bc771c709342d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154592 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

C`>$Fv9-35_Xsq@ga> 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

`}PMGA5;JY#-=2_IH2 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

    j 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 diff --git a/vmtp/tools/nuttcp-8.1.4 b/vmtp/tools/nuttcp-8.1.4 new file mode 100755 index 0000000000000000000000000000000000000000..5a82be546c586279c0cc4125328f54dd75f53273 GIT binary patch literal 144624 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