]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Initial support for the REdis Serialization Protocol known as RESP.
authorAndrew Darqui <[email protected]>
Tue, 12 Jan 2016 17:32:55 +0000 (12:32 -0500)
committerFrancois-Xavier Le Bail <[email protected]>
Tue, 26 Apr 2016 09:00:21 +0000 (11:00 +0200)
This commit adds support for RESP as defined in: http://redis.io/topics/protocol.
It also supports inline commands and pipelining. Due to the popularity of RESP,
numerous services are emerging that use this protocol. You may decode RESP packets
on arbitrary ports using the "-T resp" option.

Example captures can be found in tests/resp_*.

A simple way to test this parser is to start redis-server and then run
redis-cli commands such as "redis-cli set key value".

Traditionally, redis-cli monitor is used to debug redis. Unfortunately,
the "monitor" command can cause significant load on a redis-server in
production. This parser may be used as a non-invasive alternative to
redis-cli monitor.

14 files changed:
Makefile.in
netdissect.h
print-resp.c [new file with mode: 0644]
print-tcp.c
tcp.h
tcpdump.1.in
tcpdump.c
tests/TESTLIST
tests/resp_1.out [new file with mode: 0644]
tests/resp_1_benchmark.pcap [new file with mode: 0644]
tests/resp_2.out [new file with mode: 0644]
tests/resp_2_inline.pcap [new file with mode: 0644]
tests/resp_3.out [new file with mode: 0644]
tests/resp_3_malicious.pcap [new file with mode: 0644]

index cc774ccabc48151126dcbd1873ad584e5b622055..4a97d870004fd8645f07c923c8dcff67958e53fc 100644 (file)
@@ -191,6 +191,7 @@ LIBNETDISSECT_SRC=\
        print-pptp.c \
        print-radius.c \
        print-raw.c \
+       print-resp.c \
        print-rip.c \
        print-ripng.c \
        print-rpki-rtr.c \
index 345bffca08c16c7cc3187c5ccac5fd9af6376e87..1febc886e230e7578d03736a4f441acc9bd3ab97 100644 (file)
@@ -218,6 +218,7 @@ struct netdissect_options {
 #define PT_PGM         14      /* [UDP-encapsulated] Pragmatic General Multicast */
 #define PT_PGM_ZMTP1   15      /* ZMTP/1.0 inside PGM (native or UDP-encapsulated) */
 #define PT_LMP         16      /* Link Management Protocol */
+#define PT_RESP                17      /* RESP */
 
 #ifndef min
 #define min(a,b) ((a)>(b)?(b):(a))
@@ -553,6 +554,7 @@ extern int print_unknown_data(netdissect_options *, const u_char *, const char *
 extern char *q922_string(netdissect_options *, const u_char *, u_int);
 extern void q933_print(netdissect_options *, const u_char *, u_int);
 extern void radius_print(netdissect_options *, const u_char *, u_int);
+extern void resp_print(netdissect_options *, const u_char *, u_int);
 extern void rip_print(netdissect_options *, const u_char *, u_int);
 extern void ripng_print(netdissect_options *, const u_char *, unsigned int);
 extern void rpki_rtr_print(netdissect_options *, const u_char *, u_int);
diff --git a/print-resp.c b/print-resp.c
new file mode 100644 (file)
index 0000000..6f28105
--- /dev/null
@@ -0,0 +1,357 @@
+/*
+ * This file implements decoding of the REdis Serialization Protocol.
+ *
+ *
+ * Copyright (c) 2015 The TCPDUMP project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Initial contribution by Andrew Darqui ([email protected]).
+ */
+
+#define NETDISSECT_REWORKED
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <netdissect-stdinc.h>
+#include "netdissect.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "extract.h"
+
+static const char tstr[] = " [|RESP]";
+
+/*
+ * For information regarding RESP, see: http://redis.io/topics/protocol
+ */
+
+#define RESP_SIMPLE_STRING    '+'
+#define RESP_ERROR            '-'
+#define RESP_INTEGER          ':'
+#define RESP_BULK_STRING      '$'
+#define RESP_ARRAY            '*'
+
+#define resp_print_empty(ndo)      ND_PRINT((ndo, " empty"))
+#define resp_print_null(ndo)       ND_PRINT((ndo, " null"))
+#define resp_print_invalid(ndo)    ND_PRINT((ndo, " invalid"))
+
+void       resp_print(netdissect_options *, const u_char *, u_int);
+static int resp_parse(netdissect_options *, register const u_char *, int);
+static int resp_print_string_error_integer(netdissect_options *, register const u_char *, int);
+static int resp_print_simple_string(netdissect_options *, register const u_char *, int);
+static int resp_print_integer(netdissect_options *, register const u_char *, int);
+static int resp_print_error(netdissect_options *, register const u_char *, int);
+static int resp_print_bulk_string(netdissect_options *, register const u_char *, int);
+static int resp_print_bulk_array(netdissect_options *, register const u_char *, int);
+static int resp_print_inline(netdissect_options *, register const u_char *, int);
+
+/*
+ * MOVE_FORWARD:
+ * Attempts to move our 'ptr' forward until a \r\n is found,
+ * while also making sure we don't exceed the buffer 'len'.
+ * If we exceed, jump to trunc.
+ */
+#define MOVE_FORWARD(ptr, len) \
+    while(*ptr != '\r' && *(ptr+1) != '\n') { ND_TCHECK2(*ptr, 2); ptr++; len--; }
+
+/*
+ * MOVE_FORWARD_CR_OR_LF
+ * Attempts to move our 'ptr' forward until a \r or \n is found,
+ * while also making sure we don't exceed the buffer 'len'.
+ * If we exceed, jump to trunc.
+ */
+#define MOVE_FORWARD_CR_OR_LF(ptr, len) \
+    while(*ptr != '\r' && *ptr != '\n') { ND_TCHECK(*ptr); ptr++; len--; }
+
+/*
+ * CONSUME_CR_OR_LF
+ * Consume all consecutive \r and \n bytes.
+ * If we exceed 'len', jump to trunc.
+ */
+#define CONSUME_CR_OR_LF(ptr, len) \
+    while (*ptr == '\r' || *ptr == '\n') { ND_TCHECK(*ptr); ptr++; len--; }
+
+/*
+ * INCBY
+ * Attempts to increment our 'ptr' by 'increment' bytes.
+ * If our increment exceeds the buffer length (len - increment),
+ * bail out by jumping to the trunc goto tag.
+ */
+#define INCBY(ptr, increment, len) \
+    { ND_TCHECK2(*ptr, increment); ptr+=increment; len-=increment; }
+
+/*
+ * INC1
+ * Increment our ptr by 1 byte.
+ * Most often used to skip an opcode (+-:*$ etc)
+ */
+#define INC1(ptr, len) INCBY(ptr, 1, len)
+
+/*
+ * INC2
+ * Increment our ptr by 2 bytes.
+ * Most often used to skip CRLF (\r\n).
+ */
+#define INC2(ptr, len) INCBY(ptr, 2, len)
+
+/*
+ * TEST_RET_LEN
+ * If ret_len is < 0, jump to the trunc tag which returns (-1)
+ * and 'bubbles up' to printing tstr. Otherwise, return ret_len.
+ */
+#define TEST_RET_LEN(rl) \
+    if (rl < 0) { goto trunc; } else { return rl; }
+
+/*
+ * TEST_RET_LEN_NORETURN
+ * If ret_len is < 0, jump to the trunc tag which returns (-1)
+ * and 'bubbles up' to printing tstr. Otherwise, continue onward.
+ */
+#define TEST_RET_LEN_NORETURN(rl) \
+    if (rl < 0) { goto trunc; }
+
+/*
+ * RESP_PRINT_SEGMENT
+ * Prints a segment in the form of: ' "<stuff>"\n"
+ */
+#define RESP_PRINT_SEGMENT(_ndo, _bp, _len)            \
+        ND_PRINT((_ndo, " \""));                       \
+        fn_printn(_ndo, _bp, _len, _ndo->ndo_snapend); \
+        fn_print_char(_ndo, '"');
+
+void
+resp_print(netdissect_options *ndo, const u_char *bp, u_int length)
+{
+    int ret_len = 0, length_cur = length;
+
+    if(!bp || length <= 0)
+        return;
+
+    ND_PRINT((ndo, ": RESP"));
+    while (length_cur > 0) {
+        /*
+         * This block supports redis pipelining.
+         * For example, multiple operations can be pipelined within the same string:
+         * "*2\r\n\$4\r\nINCR\r\n\$1\r\nz\r\n*2\r\n\$4\r\nINCR\r\n\$1\r\nz\r\n*2\r\n\$4\r\nINCR\r\n\$1\r\nz\r\n"
+         * or
+         * "PING\r\nPING\r\nPING\r\n"
+         * In order to handle this case, we must try and parse 'bp' until
+         * 'length' bytes have been processed or we reach a trunc condition.
+         */
+        ret_len = resp_parse(ndo, bp, length_cur);
+        TEST_RET_LEN_NORETURN(ret_len);
+        bp += ret_len;
+        length_cur -= ret_len;
+    }
+
+    return;
+
+trunc:
+    ND_PRINT((ndo, "%s", tstr));
+}
+
+static int
+resp_parse(netdissect_options *ndo, register const u_char *bp, int length)
+{
+    int ret_len = 0;
+    u_char op = *bp;
+
+    ND_TCHECK(*bp);
+
+    switch(op) {
+        case RESP_SIMPLE_STRING:  ret_len = resp_print_simple_string(ndo, bp, length);   break;
+        case RESP_INTEGER:        ret_len = resp_print_integer(ndo, bp, length);         break;
+        case RESP_ERROR:          ret_len = resp_print_error(ndo, bp, length);           break;
+        case RESP_BULK_STRING:    ret_len = resp_print_bulk_string(ndo, bp, length);     break;
+        case RESP_ARRAY:          ret_len = resp_print_bulk_array(ndo, bp, length);      break;
+        default:                  ret_len = resp_print_inline(ndo, bp, length);          break;
+    }
+
+    TEST_RET_LEN(ret_len);
+
+trunc:
+    return (-1);
+}
+
+static int
+resp_print_simple_string(netdissect_options *ndo, register const u_char *bp, int length) {
+    return resp_print_string_error_integer(ndo, bp, length);
+}
+
+static int
+resp_print_integer(netdissect_options *ndo, register const u_char *bp, int length) {
+    return resp_print_string_error_integer(ndo, bp, length);
+}
+
+static int
+resp_print_error(netdissect_options *ndo, register const u_char *bp, int length) {
+    return resp_print_string_error_integer(ndo, bp, length);
+}
+
+static int
+resp_print_string_error_integer(netdissect_options *ndo, register const u_char *bp, int length) {
+    int length_cur = length, len, ret_len = 0;
+    const u_char *bp_ptr = bp;
+
+    /*
+     * MOVE_FORWARD moves past the string that follows the (+-;) opcodes
+     * +OK\r\n
+     * -ERR ...\r\n
+     * :02912309\r\n
+     */
+    MOVE_FORWARD(bp_ptr, length_cur);
+    len = (bp_ptr - bp);
+    ND_TCHECK2(*bp, len);
+    RESP_PRINT_SEGMENT(ndo, bp+1, len-1);
+    ret_len = len /*<1byte>+<string>*/ + 2 /*<CRLF>*/;
+
+    TEST_RET_LEN(ret_len);
+
+trunc:
+    return (-1);
+}
+
+static int
+resp_print_bulk_string(netdissect_options *ndo, register const u_char *bp, int length) {
+    int length_cur = length, string_len;
+
+    ND_TCHECK(*bp);
+
+    /* opcode: '$' */
+    INC1(bp, length_cur);
+    ND_TCHECK(*bp);
+
+    /* <length> */
+    string_len = atoi((const char *)bp);
+
+    /* move to \r\n */
+    MOVE_FORWARD(bp, length_cur);
+
+    /* \r\n */
+    INC2(bp, length_cur);
+
+    if (string_len > 0) {
+        /* Byte string of length string_len */
+        ND_TCHECK2(*bp, string_len);
+        RESP_PRINT_SEGMENT(ndo, bp, string_len);
+    } else {
+        switch(string_len) {
+            case 0: resp_print_empty(ndo); break;
+            case (-1): {
+                /* This is the NULL response. It follows a different pattern: $-1\r\n */
+                resp_print_null(ndo);
+                TEST_RET_LEN(length - length_cur);
+                /* returned ret_len or jumped to trunc */
+            }
+            default: resp_print_invalid(ndo); break;
+        }
+    }
+
+    /* <string> */
+    INCBY(bp, string_len, length_cur);
+
+    /* \r\n */
+    INC2(bp, length_cur);
+
+    TEST_RET_LEN(length - length_cur);
+
+trunc:
+    return (-1);
+}
+
+static int
+resp_print_bulk_array(netdissect_options *ndo, register const u_char *bp, int length) {
+    int length_cur = length, array_len, i, ret_len = 0;
+
+    ND_TCHECK(*bp);
+
+    /* opcode: '*' */
+    INC1(bp, length_cur);
+    ND_TCHECK(*bp);
+
+    /* <array_length> */
+    array_len = atoi((const char *)bp);
+
+    /* move to \r\n */
+    MOVE_FORWARD(bp, length_cur);
+
+    /* \r\n */
+    INC2(bp, length_cur);
+
+    if (array_len > 0) {
+        /* non empty array */
+        for (i = 0; i < array_len; i++) {
+            ret_len = resp_parse(ndo, bp, length_cur);
+
+            TEST_RET_LEN_NORETURN(ret_len);
+
+            bp += ret_len;
+            length_cur -= ret_len;
+
+            TEST_RET_LEN_NORETURN(length - length_cur);
+        }
+    } else {
+        /* empty, null, or invalid */
+        switch(array_len) {
+            case 0:     resp_print_empty(ndo);   break;
+            case (-1):  resp_print_null(ndo);    break;
+            default:    resp_print_invalid(ndo); break;
+        }
+    }
+
+    TEST_RET_LEN(length - length_cur);
+
+trunc:
+    return (-1);
+}
+
+static int
+resp_print_inline(netdissect_options *ndo, register const u_char *bp, int length) {
+    int length_cur = length, len;
+    const u_char *bp_ptr;
+
+    /*
+     * Inline commands are simply 'strings' followed by \r or \n or both.
+     * Redis will do it's best to split/parse these strings.
+     * This feature of redis is implemented to support the ability of
+     * command parsing from telnet/nc sessions etc.
+     *
+     * <string><\r||\n||\r\n...>
+     */
+    CONSUME_CR_OR_LF(bp, length_cur);
+    bp_ptr = bp;
+    MOVE_FORWARD_CR_OR_LF(bp_ptr, length_cur);
+    len = (bp_ptr - bp);
+    ND_TCHECK2(*bp, len);
+    RESP_PRINT_SEGMENT(ndo, bp, len);
+    CONSUME_CR_OR_LF(bp_ptr, length_cur);
+
+    TEST_RET_LEN(length - length_cur);
+
+trunc:
+    return (-1);
+}
index c731d949fed9a662aa93fc56032a5c7b9c261d61..043d9b671bf05dfc17b358fe30b36479764dad50 100644 (file)
@@ -650,6 +650,9 @@ tcp_print(netdissect_options *ndo,
                 case PT_ZMTP1:
                         zmtp1_print(ndo, bp, length);
                         break;
+                case PT_RESP:
+                        resp_print(ndo, bp, length);
+                        break;
                 }
                 return;
         }
@@ -663,6 +666,8 @@ tcp_print(netdissect_options *ndo,
                 bgp_print(ndo, bp, length);
         else if (IS_SRC_OR_DST_PORT(PPTP_PORT))
                 pptp_print(ndo, bp);
+        else if (IS_SRC_OR_DST_PORT(REDIS_PORT))
+                resp_print(ndo, bp, length);
 #ifdef ENABLE_SMB
         else if (IS_SRC_OR_DST_PORT(NETBIOS_SSN_PORT))
                 nbt_tcp_print(ndo, bp, length);
diff --git a/tcp.h b/tcp.h
index 24739622aa16c7298b9b5b530970b5a6a592af7c..02df629594d511f07386d9eff569c1796a2bde5c 100644 (file)
--- a/tcp.h
+++ b/tcp.h
@@ -154,3 +154,6 @@ struct tcphdr {
 #ifndef BEEP_PORT
 #define BEEP_PORT              10288
 #endif
+#ifndef REDIS_PORT
+#define REDIS_PORT             6379
+#endif
index d4dc6cdffa936b33921bc0c48c4a2091c5ea5360..2de8daa41cde6a24c833cf4c6c0928878d9148b4 100644 (file)
@@ -638,6 +638,7 @@ Currently known types are
 \fBlmp\fR (Link Management Protocol),
 \fBpgm\fR (Pragmatic General Multicast),
 \fBpgm_zmtp1\fR (ZMTP/1.0 inside PGM/EPGM),
+\fBresp\fR (REdis Serialization Protocol),
 \fBradius\fR (RADIUS),
 \fBrpc\fR (Remote Procedure Call),
 \fBrtp\fR (Real-Time Applications protocol),
index 6f164e28c40422bd7055d294ab8f8a3158fb49a9..e62c2d69eb3698852752a42efbb3bf54f776ff95 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -1115,6 +1115,8 @@ main(int argc, char **argv)
                                ndo->ndo_packettype = PT_PGM_ZMTP1;
                        else if (ascii_strcasecmp(optarg, "lmp") == 0)
                                ndo->ndo_packettype = PT_LMP;
+            else if (strcasecmp(optarg, "resp") == 0)
+                ndo->ndo_packettype = PT_RESP;
                        else
                                error("unknown packet type `%s'", optarg);
                        break;
index bc7c58c71efcce2c5490bd014b5c842686a2f8fe..af99117db7abf730d995635590eea50a8461244c 100644 (file)
@@ -342,3 +342,8 @@ nsh-over-vxlan-gpe     nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe.out     -t
 nsh-over-vxlan-gpe-v   nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-v.out   -t -v
 nsh-over-vxlan-gpe-vv  nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vv.out  -t -vv
 nsh-over-vxlan-gpe-vvv nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vvv.out -t -vvv
+
+# RESP tests
+resp_1      resp_1_benchmark.pcap   resp_1.out      -n -t
+resp_2      resp_2_inline.pcap      resp_2.out      -n -t
+resp_3      resp_3_malicious.pcap   resp_3.out      -n -t
diff --git a/tests/resp_1.out b/tests/resp_1.out
new file mode 100644 (file)
index 0000000..88c9140
--- /dev/null
@@ -0,0 +1,150 @@
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [S], seq 1159918511, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35901: Flags [S.], seq 1309831771, ack 1159918512, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 2004405846,nop,wscale 7], length 0
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 6: RESP "PING"
+IP 127.0.0.1.6379 > 127.0.0.1.35901: Flags [.], ack 7, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35901: Flags [P.], seq 1:8, ack 7, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 7: RESP "PONG"
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [.], ack 8, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [F.], seq 7, ack 8, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35901: Flags [F.], seq 8, ack 8, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35901 > 127.0.0.1.6379: Flags [.], ack 9, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [S], seq 3880036895, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35902: Flags [S.], seq 95825237, ack 3880036896, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 2004405846,nop,wscale 7], length 0
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [P.], seq 1:15, ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 14: RESP "PING"
+IP 127.0.0.1.6379 > 127.0.0.1.35902: Flags [.], ack 15, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35902: Flags [P.], seq 1:8, ack 15, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 7: RESP "PONG"
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [.], ack 8, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [F.], seq 15, ack 8, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35902: Flags [F.], seq 8, ack 16, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35902 > 127.0.0.1.6379: Flags [.], ack 9, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [S], seq 3040658582, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35903: Flags [S.], seq 2458684268, ack 3040658583, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 2004405846,nop,wscale 7], length 0
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [P.], seq 1:46, ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 45: RESP "SET" "key:000000000943" "xxx"
+IP 127.0.0.1.6379 > 127.0.0.1.35903: Flags [.], ack 46, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35903: Flags [P.], seq 1:6, ack 46, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 5: RESP "OK"
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [.], ack 6, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [F.], seq 46, ack 6, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35903: Flags [F.], seq 6, ack 47, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35903 > 127.0.0.1.6379: Flags [.], ack 7, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [S], seq 2555867980, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35904: Flags [S.], seq 4291997072, ack 2555867981, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 2004405846,nop,wscale 7], length 0
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [P.], seq 1:37, ack 1, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 36: RESP "GET" "key:000000000199"
+IP 127.0.0.1.6379 > 127.0.0.1.35904: Flags [.], ack 37, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35904: Flags [P.], seq 1:10, ack 37, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 9: RESP "xxx"
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [.], ack 10, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [F.], seq 37, ack 10, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35904: Flags [F.], seq 10, ack 38, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35904 > 127.0.0.1.6379: Flags [.], ack 11, win 342, options [nop,nop,TS val 2004405846 ecr 2004405846], length 0
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [S], seq 2342248419, win 43690, options [mss 65495,sackOK,TS val 2004405846 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35905: Flags [S.], seq 2490886259, ack 2342248420, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405846,nop,wscale 7], length 0
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [P.], seq 1:42, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 41: RESP "INCR" "counter:000000000293"
+IP 127.0.0.1.6379 > 127.0.0.1.35905: Flags [.], ack 42, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35905: Flags [P.], seq 1:5, ack 42, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 4: RESP "3"
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [.], ack 5, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [F.], seq 42, ack 5, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35905: Flags [F.], seq 5, ack 43, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35905 > 127.0.0.1.6379: Flags [.], ack 6, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [S], seq 131158412, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35906: Flags [S.], seq 49781958, ack 131158413, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [P.], seq 1:37, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 36: RESP "LPUSH" "mylist" "xxx"
+IP 127.0.0.1.6379 > 127.0.0.1.35906: Flags [.], ack 37, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35906: Flags [P.], seq 1:9, ack 37, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 8: RESP "47158"
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [.], ack 9, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [F.], seq 37, ack 9, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35906: Flags [F.], seq 9, ack 38, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35906 > 127.0.0.1.6379: Flags [.], ack 10, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [S], seq 1454742392, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35907: Flags [S.], seq 4166501195, ack 1454742393, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [P.], seq 1:27, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 26: RESP "LPOP" "mylist"
+IP 127.0.0.1.6379 > 127.0.0.1.35907: Flags [.], ack 27, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35907: Flags [P.], seq 1:10, ack 27, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 9: RESP "xxx"
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [.], ack 10, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [F.], seq 27, ack 10, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35907: Flags [F.], seq 10, ack 28, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35907 > 127.0.0.1.6379: Flags [.], ack 11, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [S], seq 545589487, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35908: Flags [S.], seq 2823817844, ack 545589488, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [P.], seq 1:53, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 52: RESP "SADD" "myset" "element:000000000063"
+IP 127.0.0.1.6379 > 127.0.0.1.35908: Flags [.], ack 53, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35908: Flags [P.], seq 1:5, ack 53, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 4: RESP "1"
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [.], ack 5, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [F.], seq 53, ack 5, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35908: Flags [F.], seq 5, ack 54, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35908 > 127.0.0.1.6379: Flags [.], ack 6, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [S], seq 296698850, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35909: Flags [S.], seq 3970806453, ack 296698851, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [P.], seq 1:26, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 25: RESP "SPOP" "myset"
+IP 127.0.0.1.6379 > 127.0.0.1.35909: Flags [.], ack 26, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35909: Flags [P.], seq 1:28, ack 26, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 27: RESP "element:000000000063"
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [.], ack 28, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [F.], seq 26, ack 28, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35909: Flags [F.], seq 28, ack 27, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35909 > 127.0.0.1.6379: Flags [.], ack 29, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [S], seq 2082555059, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35910: Flags [S.], seq 1762470779, ack 2082555060, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [P.], seq 1:37, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 36: RESP "LPUSH" "mylist" "xxx"
+IP 127.0.0.1.6379 > 127.0.0.1.35910: Flags [.], ack 37, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35910: Flags [P.], seq 1:9, ack 37, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 8: RESP "47158"
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [.], ack 9, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [F.], seq 37, ack 9, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35910: Flags [F.], seq 9, ack 38, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35910 > 127.0.0.1.6379: Flags [.], ack 10, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [S], seq 823555559, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35911: Flags [S.], seq 1343119127, ack 823555560, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [P.], seq 1:44, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 43: RESP "LRANGE" "mylist" "0" "99"
+IP 127.0.0.1.6379 > 127.0.0.1.35911: Flags [.], ack 44, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35911: Flags [P.], seq 1:907, ack 44, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 906: RESP "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx"
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [.], ack 907, win 356, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [F.], seq 44, ack 907, win 356, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35911: Flags [F.], seq 907, ack 45, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35911 > 127.0.0.1.6379: Flags [.], ack 908, win 356, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [S], seq 2379661641, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35912: Flags [S.], seq 1832740480, ack 2379661642, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [P.], seq 1:45, ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 44: RESP "LRANGE" "mylist" "0" "299"
+IP 127.0.0.1.6379 > 127.0.0.1.35912: Flags [.], ack 45, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35912: Flags [P.], seq 1:2707, ack 45, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 2706: RESP "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx"
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [.], ack 2707, win 1365, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [F.], seq 45, ack 2707, win 1365, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35912: Flags [F.], seq 2707, ack 46, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35912 > 127.0.0.1.6379: Flags [.], ack 2708, win 1365, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [S], seq 1669304377, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35913: Flags [S.], seq 1910612537, ack 1669304378, win 43690, options [mss 65495,sackOK,TS val 2004405847 ecr 2004405847,nop,wscale 7], length 0
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405847 ecr 2004405847], length 0
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [P.], seq 1:45, ack 1, win 342, options [nop,nop,TS val 2004405848 ecr 2004405847], length 44: RESP "LRANGE" "mylist" "0" "449"
+IP 127.0.0.1.6379 > 127.0.0.1.35913: Flags [.], ack 45, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35913: Flags [P.], seq 1:4057, ack 45, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 4056: RESP "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx"
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [.], ack 4057, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [F.], seq 45, ack 4057, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35913: Flags [F.], seq 4057, ack 46, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35913 > 127.0.0.1.6379: Flags [.], ack 4058, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [S], seq 1695153288, win 43690, options [mss 65495,sackOK,TS val 2004405848 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35914: Flags [S.], seq 488402032, ack 1695153289, win 43690, options [mss 65495,sackOK,TS val 2004405848 ecr 2004405848,nop,wscale 7], length 0
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [P.], seq 1:45, ack 1, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 44: RESP "LRANGE" "mylist" "0" "599"
+IP 127.0.0.1.6379 > 127.0.0.1.35914: Flags [.], ack 45, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35914: Flags [P.], seq 1:5407, ack 45, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 5406: RESP "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx" "xxx"
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [.], ack 5407, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [F.], seq 45, ack 5407, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35914: Flags [F.], seq 5407, ack 46, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35914 > 127.0.0.1.6379: Flags [.], ack 5408, win 1365, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [S], seq 3952529642, win 43690, options [mss 65495,sackOK,TS val 2004405848 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35915: Flags [S.], seq 2079771045, ack 3952529643, win 43690, options [mss 65495,sackOK,TS val 2004405848 ecr 2004405848,nop,wscale 7], length 0
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [P.], seq 1:336, ack 1, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 335: RESP "MSET" "key:000000000525" "xxx" "key:000000000050" "xxx" "key:000000000416" "xxx" "key:000000000263" "xxx" "key:000000000941" "xxx" "key:000000000148" "xxx" "key:000000000739" "xxx" "key:000000000571" "xxx" "key:000000000974" "xxx" "key:000000000495" "xxx"
+IP 127.0.0.1.6379 > 127.0.0.1.35915: Flags [.], ack 336, win 350, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35915: Flags [P.], seq 1:6, ack 336, win 350, options [nop,nop,TS val 2004405848 ecr 2004405848], length 5: RESP "OK"
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [.], ack 6, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [F.], seq 336, ack 6, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35915: Flags [F.], seq 6, ack 337, win 350, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
+IP 127.0.0.1.35915 > 127.0.0.1.6379: Flags [.], ack 7, win 342, options [nop,nop,TS val 2004405848 ecr 2004405848], length 0
diff --git a/tests/resp_1_benchmark.pcap b/tests/resp_1_benchmark.pcap
new file mode 100644 (file)
index 0000000..b746f1c
Binary files /dev/null and b/tests/resp_1_benchmark.pcap differ
diff --git a/tests/resp_2.out b/tests/resp_2.out
new file mode 100644 (file)
index 0000000..37333d7
--- /dev/null
@@ -0,0 +1,14 @@
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [S], seq 270581733, win 43690, options [mss 65495,sackOK,TS val 2004413385 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [S.], seq 3524975383, ack 270581734, win 43690, options [mss 65495,sackOK,TS val 2004413385 ecr 2004413385,nop,wscale 7], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 2004413385 ecr 2004413385], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [P.], seq 1:13, ack 1, win 342, options [nop,nop,TS val 2004413683 ecr 2004413385], length 12: RESP "set test 1"
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [.], ack 13, win 342, options [nop,nop,TS val 2004413683 ecr 2004413683], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [P.], seq 13:157, ack 1, win 342, options [nop,nop,TS val 2004413683 ecr 2004413683], length 144: RESP "incr test" "set test2 redis" "get test2" "lpush test3 r" "lpush test3 e" "lpush test3 d" "lpush test3 i" "lpush test3 s" "lrange test3 0 -1" "del test4"
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [.], ack 157, win 350, options [nop,nop,TS val 2004413683 ecr 2004413683], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [P.], seq 157:168, ack 1, win 342, options [nop,nop,TS val 2004413683 ecr 2004413683], length 11: RESP "get test4"
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [.], ack 168, win 350, options [nop,nop,TS val 2004413683 ecr 2004413683], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [P.], seq 1:1289, ack 168, win 350, options [nop,nop,TS val 2004413683 ecr 2004413683], length 1288: RESP "OK" "2" "OK" "redis" "170" "171" "172" "173" "174" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "i" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "d" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "s" "i" "d" "e" "r" "i" "s" "i" "e" "r" "s" "i" "d" "e" "r" "0" null
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [.], ack 1289, win 1365, options [nop,nop,TS val 2004413683 ecr 2004413683], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [F.], seq 168, ack 1289, win 1365, options [nop,nop,TS val 2004413984 ecr 2004413683], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.35934: Flags [F.], seq 1289, ack 169, win 350, options [nop,nop,TS val 2004413984 ecr 2004413984], length 0
+IP 127.0.0.1.35934 > 127.0.0.1.6379: Flags [.], ack 1290, win 1365, options [nop,nop,TS val 2004413984 ecr 2004413984], length 0
diff --git a/tests/resp_2_inline.pcap b/tests/resp_2_inline.pcap
new file mode 100644 (file)
index 0000000..e22b5f2
Binary files /dev/null and b/tests/resp_2_inline.pcap differ
diff --git a/tests/resp_3.out b/tests/resp_3.out
new file mode 100644 (file)
index 0000000..eb9d8a9
--- /dev/null
@@ -0,0 +1,163 @@
+IP 127.0.0.1.52759 > 127.0.0.1.6379: Flags [F.], seq 2169831382, ack 489972337, win 342, options [nop,nop,TS val 1132418034 ecr 1132417734], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52759: Flags [F.], seq 1, ack 1, win 342, options [nop,nop,TS val 1132418034 ecr 1132418034], length 0
+IP 127.0.0.1.52759 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132418034 ecr 1132418034], length 0
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [S], seq 264055152, win 43690, options [mss 65495,sackOK,TS val 1132418037 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52760: Flags [S.], seq 4227148888, ack 264055153, win 43690, options [mss 65495,sackOK,TS val 1132418037 ecr 1132418037,nop,wscale 7], length 0
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132418037 ecr 1132418037], length 0
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 1132418037 ecr 1132418037], length 6: RESP empty
+IP 127.0.0.1.6379 > 127.0.0.1.52760: Flags [.], ack 7, win 342, options [nop,nop,TS val 1132418037 ecr 1132418037], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52760: Flags [P.], seq 1:28, ack 7, win 342, options [nop,nop,TS val 1132418037 ecr 1132418037], length 27: RESP "ERR unknown command '$0'"
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [.], ack 28, win 342, options [nop,nop,TS val 1132418037 ecr 1132418037], length 0
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [F.], seq 7, ack 28, win 342, options [nop,nop,TS val 1132418337 ecr 1132418037], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52760: Flags [F.], seq 28, ack 8, win 342, options [nop,nop,TS val 1132418337 ecr 1132418337], length 0
+IP 127.0.0.1.52760 > 127.0.0.1.6379: Flags [.], ack 29, win 342, options [nop,nop,TS val 1132418337 ecr 1132418337], length 0
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [S], seq 4029577365, win 43690, options [mss 65495,sackOK,TS val 1132418340 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52763: Flags [S.], seq 365322185, ack 4029577366, win 43690, options [mss 65495,sackOK,TS val 1132418340 ecr 1132418340,nop,wscale 7], length 0
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132418340 ecr 1132418340], length 0
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [P.], seq 1:4, ack 1, win 342, options [nop,nop,TS val 1132418340 ecr 1132418340], length 3: RESP ""
+IP 127.0.0.1.6379 > 127.0.0.1.52763: Flags [.], ack 4, win 342, options [nop,nop,TS val 1132418340 ecr 1132418340], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52763: Flags [P.], seq 1:27, ack 4, win 342, options [nop,nop,TS val 1132418340 ecr 1132418340], length 26: RESP "ERR unknown command '+'"
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [.], ack 27, win 342, options [nop,nop,TS val 1132418340 ecr 1132418340], length 0
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [F.], seq 4, ack 27, win 342, options [nop,nop,TS val 1132418640 ecr 1132418340], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52763: Flags [F.], seq 27, ack 5, win 342, options [nop,nop,TS val 1132418640 ecr 1132418640], length 0
+IP 127.0.0.1.52763 > 127.0.0.1.6379: Flags [.], ack 28, win 342, options [nop,nop,TS val 1132418640 ecr 1132418640], length 0
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [S], seq 3994485171, win 43690, options [mss 65495,sackOK,TS val 1132418642 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52764: Flags [S.], seq 3089553256, ack 3994485172, win 43690, options [mss 65495,sackOK,TS val 1132418642 ecr 1132418642,nop,wscale 7], length 0
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132418642 ecr 1132418642], length 0
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [P.], seq 1:4, ack 1, win 342, options [nop,nop,TS val 1132418642 ecr 1132418642], length 3: RESP ""
+IP 127.0.0.1.6379 > 127.0.0.1.52764: Flags [.], ack 4, win 342, options [nop,nop,TS val 1132418642 ecr 1132418642], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52764: Flags [P.], seq 1:27, ack 4, win 342, options [nop,nop,TS val 1132418642 ecr 1132418642], length 26: RESP "ERR unknown command '-'"
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [.], ack 27, win 342, options [nop,nop,TS val 1132418642 ecr 1132418642], length 0
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [F.], seq 4, ack 27, win 342, options [nop,nop,TS val 1132418942 ecr 1132418642], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52764: Flags [F.], seq 27, ack 5, win 342, options [nop,nop,TS val 1132418942 ecr 1132418942], length 0
+IP 127.0.0.1.52764 > 127.0.0.1.6379: Flags [.], ack 28, win 342, options [nop,nop,TS val 1132418942 ecr 1132418942], length 0
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [S], seq 3235592213, win 43690, options [mss 65495,sackOK,TS val 1132418944 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52765: Flags [S.], seq 1213611847, ack 3235592214, win 43690, options [mss 65495,sackOK,TS val 1132418944 ecr 1132418944,nop,wscale 7], length 0
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132418944 ecr 1132418944], length 0
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [P.], seq 1:4, ack 1, win 342, options [nop,nop,TS val 1132418944 ecr 1132418944], length 3: RESP ""
+IP 127.0.0.1.6379 > 127.0.0.1.52765: Flags [.], ack 4, win 342, options [nop,nop,TS val 1132418944 ecr 1132418944], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52765: Flags [P.], seq 1:27, ack 4, win 342, options [nop,nop,TS val 1132418945 ecr 1132418944], length 26: RESP "ERR unknown command ':'"
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [.], ack 27, win 342, options [nop,nop,TS val 1132418945 ecr 1132418945], length 0
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [F.], seq 4, ack 27, win 342, options [nop,nop,TS val 1132419244 ecr 1132418945], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52765: Flags [F.], seq 27, ack 5, win 342, options [nop,nop,TS val 1132419244 ecr 1132419244], length 0
+IP 127.0.0.1.52765 > 127.0.0.1.6379: Flags [.], ack 28, win 342, options [nop,nop,TS val 1132419244 ecr 1132419244], length 0
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [S], seq 1161779316, win 43690, options [mss 65495,sackOK,TS val 1132419247 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52766: Flags [S.], seq 1206331179, ack 1161779317, win 43690, options [mss 65495,sackOK,TS val 1132419247 ecr 1132419247,nop,wscale 7], length 0
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132419247 ecr 1132419247], length 0
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [P.], seq 1:89, ack 1, win 342, options [nop,nop,TS val 1132419247 ecr 1132419247], length 88: RESP "0392049029024920492304923049032940329402394092304932049230492034932094032940234902340"
+IP 127.0.0.1.6379 > 127.0.0.1.52766: Flags [.], ack 89, win 342, options [nop,nop,TS val 1132419247 ecr 1132419247], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52766: Flags [P.], seq 1:112, ack 89, win 342, options [nop,nop,TS val 1132419247 ecr 1132419247], length 111: RESP "ERR unknown command ':0392049029024920492304923049032940329402394092304932049230492034932094032940234902340'"
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [.], ack 112, win 342, options [nop,nop,TS val 1132419247 ecr 1132419247], length 0
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [F.], seq 89, ack 112, win 342, options [nop,nop,TS val 1132419547 ecr 1132419247], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52766: Flags [F.], seq 112, ack 90, win 342, options [nop,nop,TS val 1132419547 ecr 1132419547], length 0
+IP 127.0.0.1.52766 > 127.0.0.1.6379: Flags [.], ack 113, win 342, options [nop,nop,TS val 1132419547 ecr 1132419547], length 0
+IP 127.0.0.1.52767 > 127.0.0.1.6379: Flags [S], seq 3453687710, win 43690, options [mss 65495,sackOK,TS val 1132419549 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52767: Flags [S.], seq 4076862539, ack 3453687711, win 43690, options [mss 65495,sackOK,TS val 1132419549 ecr 1132419549,nop,wscale 7], length 0
+IP 127.0.0.1.52767 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.52767 > 127.0.0.1.6379: Flags [P.], seq 1:39, ack 1, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 38: RESP null
+IP 127.0.0.1.6379 > 127.0.0.1.52767: Flags [.], ack 39, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52767: Flags [P.], seq 1:48, ack 39, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 47: RESP "ERR Protocol error: invalid multibulk length"
+IP 127.0.0.1.52767 > 127.0.0.1.6379: Flags [.], ack 48, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52767: Flags [F.], seq 48, ack 39, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.52767 > 127.0.0.1.6379: Flags [F.], seq 39, ack 49, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52767: Flags [.], ack 40, win 342, options [nop,nop,TS val 1132419549 ecr 1132419549], length 0
+IP 127.0.0.1.52768 > 127.0.0.1.6379: Flags [S], seq 3109305893, win 43690, options [mss 65495,sackOK,TS val 1132419852 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52768: Flags [S.], seq 4202059680, ack 3109305894, win 43690, options [mss 65495,sackOK,TS val 1132419852 ecr 1132419852,nop,wscale 7], length 0
+IP 127.0.0.1.52768 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132419852 ecr 1132419852], length 0
+IP 127.0.0.1.52768 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 1132419852 ecr 1132419852], length 6: RESP invalid
+IP 127.0.0.1.6379 > 127.0.0.1.52768: Flags [.], ack 7, win 342, options [nop,nop,TS val 1132419852 ecr 1132419852], length 0
+IP 127.0.0.1.52768 > 127.0.0.1.6379: Flags [F.], seq 7, ack 1, win 342, options [nop,nop,TS val 1132420152 ecr 1132419852], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52768: Flags [F.], seq 1, ack 8, win 342, options [nop,nop,TS val 1132420152 ecr 1132420152], length 0
+IP 127.0.0.1.52768 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132420152 ecr 1132420152], length 0
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [S], seq 4072438166, win 43690, options [mss 65495,sackOK,TS val 1132420154 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52769: Flags [S.], seq 156730490, ack 4072438167, win 43690, options [mss 65495,sackOK,TS val 1132420154 ecr 1132420154,nop,wscale 7], length 0
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132420154 ecr 1132420154], length 0
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [P.], seq 1:11, ack 1, win 342, options [nop,nop,TS val 1132420154 ecr 1132420154], length 10: RESP invalid [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52769: Flags [.], ack 11, win 342, options [nop,nop,TS val 1132420154 ecr 1132420154], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52769: Flags [P.], seq 1:57, ack 11, win 342, options [nop,nop,TS val 1132420154 ecr 1132420154], length 56: RESP "ERR unknown command '$-20'" "ERR unknown command 'hi'"
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [.], ack 57, win 342, options [nop,nop,TS val 1132420154 ecr 1132420154], length 0
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [F.], seq 11, ack 57, win 342, options [nop,nop,TS val 1132420454 ecr 1132420154], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52769: Flags [F.], seq 57, ack 12, win 342, options [nop,nop,TS val 1132420454 ecr 1132420454], length 0
+IP 127.0.0.1.52769 > 127.0.0.1.6379: Flags [.], ack 58, win 342, options [nop,nop,TS val 1132420454 ecr 1132420454], length 0
+IP 127.0.0.1.52770 > 127.0.0.1.6379: Flags [S], seq 374549345, win 43690, options [mss 65495,sackOK,TS val 1132420457 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52770: Flags [S.], seq 1146630634, ack 374549346, win 43690, options [mss 65495,sackOK,TS val 1132420457 ecr 1132420457,nop,wscale 7], length 0
+IP 127.0.0.1.52770 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132420457 ecr 1132420457], length 0
+IP 127.0.0.1.52770 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 1132420457 ecr 1132420457], length 6: RESP [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52770: Flags [.], ack 7, win 342, options [nop,nop,TS val 1132420457 ecr 1132420457], length 0
+IP 127.0.0.1.52770 > 127.0.0.1.6379: Flags [F.], seq 7, ack 1, win 342, options [nop,nop,TS val 1132420757 ecr 1132420457], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52770: Flags [F.], seq 1, ack 8, win 342, options [nop,nop,TS val 1132420757 ecr 1132420757], length 0
+IP 127.0.0.1.52770 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132420757 ecr 1132420757], length 0
+IP 127.0.0.1.52771 > 127.0.0.1.6379: Flags [S], seq 2541241523, win 43690, options [mss 65495,sackOK,TS val 1132420760 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52771: Flags [S.], seq 3482468888, ack 2541241524, win 43690, options [mss 65495,sackOK,TS val 1132420760 ecr 1132420760,nop,wscale 7], length 0
+IP 127.0.0.1.52771 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132420760 ecr 1132420760], length 0
+IP 127.0.0.1.52771 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 1132420760 ecr 1132420760], length 6: RESP [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52771: Flags [.], ack 7, win 342, options [nop,nop,TS val 1132420760 ecr 1132420760], length 0
+IP 127.0.0.1.52771 > 127.0.0.1.6379: Flags [F.], seq 7, ack 1, win 342, options [nop,nop,TS val 1132421059 ecr 1132420760], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52771: Flags [F.], seq 1, ack 8, win 342, options [nop,nop,TS val 1132421059 ecr 1132421059], length 0
+IP 127.0.0.1.52771 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132421059 ecr 1132421059], length 0
+IP 127.0.0.1.52772 > 127.0.0.1.6379: Flags [S], seq 3376019145, win 43690, options [mss 65495,sackOK,TS val 1132421060 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52772: Flags [S.], seq 2449011991, ack 3376019146, win 43690, options [mss 65495,sackOK,TS val 1132421060 ecr 1132421060,nop,wscale 7], length 0
+IP 127.0.0.1.52772 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132421060 ecr 1132421060], length 0
+IP 127.0.0.1.52772 > 127.0.0.1.6379: Flags [P.], seq 1:7, ack 1, win 342, options [nop,nop,TS val 1132421060 ecr 1132421060], length 6: RESP [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52772: Flags [.], ack 7, win 342, options [nop,nop,TS val 1132421060 ecr 1132421060], length 0
+IP 127.0.0.1.52772 > 127.0.0.1.6379: Flags [F.], seq 7, ack 1, win 342, options [nop,nop,TS val 1132421360 ecr 1132421060], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52772: Flags [F.], seq 1, ack 8, win 342, options [nop,nop,TS val 1132421360 ecr 1132421360], length 0
+IP 127.0.0.1.52772 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132421360 ecr 1132421360], length 0
+IP 127.0.0.1.52773 > 127.0.0.1.6379: Flags [S], seq 3567970909, win 43690, options [mss 65495,sackOK,TS val 1132421363 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52773: Flags [S.], seq 3366370739, ack 3567970910, win 43690, options [mss 65495,sackOK,TS val 1132421363 ecr 1132421363,nop,wscale 7], length 0
+IP 127.0.0.1.52773 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132421363 ecr 1132421363], length 0
+IP 127.0.0.1.52773 > 127.0.0.1.6379: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1132421363 ecr 1132421363], length 5: RESP null
+IP 127.0.0.1.6379 > 127.0.0.1.52773: Flags [.], ack 6, win 342, options [nop,nop,TS val 1132421363 ecr 1132421363], length 0
+IP 127.0.0.1.52773 > 127.0.0.1.6379: Flags [F.], seq 6, ack 1, win 342, options [nop,nop,TS val 1132421663 ecr 1132421363], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52773: Flags [F.], seq 1, ack 7, win 342, options [nop,nop,TS val 1132421663 ecr 1132421663], length 0
+IP 127.0.0.1.52773 > 127.0.0.1.6379: Flags [.], ack 2, win 342, options [nop,nop,TS val 1132421663 ecr 1132421663], length 0
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [S], seq 3374943379, win 43690, options [mss 65495,sackOK,TS val 1132421665 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52775: Flags [S.], seq 363870070, ack 3374943380, win 43690, options [mss 65495,sackOK,TS val 1132421665 ecr 1132421665,nop,wscale 7], length 0
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132421665 ecr 1132421665], length 0
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1132421665 ecr 1132421665], length 5: RESP null
+IP 127.0.0.1.6379 > 127.0.0.1.52775: Flags [.], ack 6, win 342, options [nop,nop,TS val 1132421665 ecr 1132421665], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52775: Flags [P.], seq 1:29, ack 6, win 342, options [nop,nop,TS val 1132421665 ecr 1132421665], length 28: RESP "ERR unknown command '$-1'"
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [.], ack 29, win 342, options [nop,nop,TS val 1132421665 ecr 1132421665], length 0
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [F.], seq 6, ack 29, win 342, options [nop,nop,TS val 1132421965 ecr 1132421665], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52775: Flags [F.], seq 29, ack 7, win 342, options [nop,nop,TS val 1132421965 ecr 1132421965], length 0
+IP 127.0.0.1.52775 > 127.0.0.1.6379: Flags [.], ack 30, win 342, options [nop,nop,TS val 1132421965 ecr 1132421965], length 0
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [S], seq 2780863902, win 43690, options [mss 65495,sackOK,TS val 1132421969 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52776: Flags [S.], seq 2789065616, ack 2780863903, win 43690, options [mss 65495,sackOK,TS val 1132421969 ecr 1132421969,nop,wscale 7], length 0
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132421969 ecr 1132421969], length 0
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [P.], seq 1:64, ack 1, win 342, options [nop,nop,TS val 1132421969 ecr 1132421969], length 63: RESP "INCR" "z" "INCR" "z" "INCR" "z"
+IP 127.0.0.1.6379 > 127.0.0.1.52776: Flags [.], ack 64, win 342, options [nop,nop,TS val 1132421969 ecr 1132421969], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52776: Flags [P.], seq 1:16, ack 64, win 342, options [nop,nop,TS val 1132421969 ecr 1132421969], length 15: RESP "69" "70" "71"
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [.], ack 16, win 342, options [nop,nop,TS val 1132421969 ecr 1132421969], length 0
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [F.], seq 64, ack 16, win 342, options [nop,nop,TS val 1132422270 ecr 1132421969], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52776: Flags [F.], seq 16, ack 65, win 342, options [nop,nop,TS val 1132422270 ecr 1132422270], length 0
+IP 127.0.0.1.52776 > 127.0.0.1.6379: Flags [.], ack 17, win 342, options [nop,nop,TS val 1132422270 ecr 1132422270], length 0
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [S], seq 357339476, win 43690, options [mss 65495,sackOK,TS val 1132422271 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52777: Flags [S.], seq 3123925211, ack 357339477, win 43690, options [mss 65495,sackOK,TS val 1132422271 ecr 1132422271,nop,wscale 7], length 0
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132422271 ecr 1132422271], length 0
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [P.], seq 1:21, ack 1, win 342, options [nop,nop,TS val 1132422271 ecr 1132422271], length 20: RESP "PING" "PING" "PING" [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52777: Flags [.], ack 21, win 342, options [nop,nop,TS val 1132422271 ecr 1132422271], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52777: Flags [P.], seq 1:22, ack 21, win 342, options [nop,nop,TS val 1132422271 ecr 1132422271], length 21: RESP "PONG" "PONG" "PONG"
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [.], ack 22, win 342, options [nop,nop,TS val 1132422271 ecr 1132422271], length 0
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [F.], seq 21, ack 22, win 342, options [nop,nop,TS val 1132422571 ecr 1132422271], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52777: Flags [F.], seq 22, ack 22, win 342, options [nop,nop,TS val 1132422571 ecr 1132422571], length 0
+IP 127.0.0.1.52777 > 127.0.0.1.6379: Flags [.], ack 23, win 342, options [nop,nop,TS val 1132422571 ecr 1132422571], length 0
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [S], seq 2069568772, win 43690, options [mss 65495,sackOK,TS val 1132422573 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52778: Flags [S.], seq 1085796497, ack 2069568773, win 43690, options [mss 65495,sackOK,TS val 1132422573 ecr 1132422573,nop,wscale 7], length 0
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132422573 ecr 1132422573], length 0
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [P.], seq 1:21, ack 1, win 342, options [nop,nop,TS val 1132422573 ecr 1132422573], length 20: RESP "PING" "PING" "PING" [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52778: Flags [.], ack 21, win 342, options [nop,nop,TS val 1132422573 ecr 1132422573], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52778: Flags [P.], seq 1:22, ack 21, win 342, options [nop,nop,TS val 1132422573 ecr 1132422573], length 21: RESP "PONG" "PONG" "PONG"
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [.], ack 22, win 342, options [nop,nop,TS val 1132422573 ecr 1132422573], length 0
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [F.], seq 21, ack 22, win 342, options [nop,nop,TS val 1132422873 ecr 1132422573], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52778: Flags [F.], seq 22, ack 22, win 342, options [nop,nop,TS val 1132422873 ecr 1132422873], length 0
+IP 127.0.0.1.52778 > 127.0.0.1.6379: Flags [.], ack 23, win 342, options [nop,nop,TS val 1132422873 ecr 1132422873], length 0
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [S], seq 1578479120, win 43690, options [mss 65495,sackOK,TS val 1132422875 ecr 0,nop,wscale 7], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52779: Flags [S.], seq 2529957046, ack 1578479121, win 43690, options [mss 65495,sackOK,TS val 1132422875 ecr 1132422875,nop,wscale 7], length 0
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [.], ack 1, win 342, options [nop,nop,TS val 1132422875 ecr 1132422875], length 0
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [P.], seq 1:24, ack 1, win 342, options [nop,nop,TS val 1132422875 ecr 1132422875], length 23: RESP "PING" "PING" "PING" [|RESP]
+IP 127.0.0.1.6379 > 127.0.0.1.52779: Flags [.], ack 24, win 342, options [nop,nop,TS val 1132422875 ecr 1132422875], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52779: Flags [P.], seq 1:22, ack 24, win 342, options [nop,nop,TS val 1132422875 ecr 1132422875], length 21: RESP "PONG" "PONG" "PONG"
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [.], ack 22, win 342, options [nop,nop,TS val 1132422875 ecr 1132422875], length 0
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [F.], seq 24, ack 22, win 342, options [nop,nop,TS val 1132423175 ecr 1132422875], length 0
+IP 127.0.0.1.6379 > 127.0.0.1.52779: Flags [F.], seq 22, ack 25, win 342, options [nop,nop,TS val 1132423175 ecr 1132423175], length 0
+IP 127.0.0.1.52779 > 127.0.0.1.6379: Flags [.], ack 23, win 342, options [nop,nop,TS val 1132423175 ecr 1132423175], length 0
diff --git a/tests/resp_3_malicious.pcap b/tests/resp_3_malicious.pcap
new file mode 100644 (file)
index 0000000..02cd53f
Binary files /dev/null and b/tests/resp_3_malicious.pcap differ