Skip to content
Snippets Groups Projects
  • Jason Eggleston's avatar
    68f26eb3
    add support for ignoring tcp sequence number and timestamp offset changes · 68f26eb3
    Jason Eggleston authored
    In order to simulate delayed packets, there are occasions where responses
    to those packets need to be ignored insofar as they modify relative sequence
    numbers or timestamps. For example a retransmitted SYN or SYN-ACK might be delayed
    until after the TCP session ends, but a combination of bugs on the client and server
    might result in the session persisting as if it never ended.
    
    inbound injected packet:  0.100034 S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    outbound sniffed packet:  0.100083 S. 3079308609:3079308609(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 3206488061 ecr 100>
    inbound injected packet:  0.150127 . 1:101(100) ack 3079308610 win 1031 <nop,nop,TS val 150 ecr 3206488061>
    outbound sniffed packet:  0.150170 . 3079308610:3079308610(0) ack 101 win 12495 <nop,nop,TS val 3206488111 ecr 150>
    outbound sniffed packet:  0.150192 P. 3079308610:3079309010(400) ack 101 win 12501 <nop,nop,TS val 3206488111 ecr 150>
    inbound injected packet:  0.200251 . 101:101(0) ack 3079309010 win 1024 <nop,nop,TS val 200 ecr 3206488111>
    inbound injected packet:  0.200271 F. 101:101(0) ack 3079309010 win 1031 <nop,nop,TS val 200 ecr 3206488111>
    outbound sniffed packet:  0.200287 . 3079309010:3079309010(0) ack 102 win 12501 <nop,nop,TS val 3206488161 ecr 200>
    outbound sniffed packet:  0.200324 F. 3079309010:3079309010(0) ack 102 win 12501 <nop,nop,TS val 3206488161 ecr 200>
    inbound injected packet:  0.250354 . 102:102(0) ack 3079309011 win 1031 <nop,nop,TS val 250 ecr 3206488161>
    inbound injected packet:  0.265380 S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    outbound sniffed packet:  0.265402 S. 3079308609:3079308609(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 3118763918 ecr 100>
    inbound injected packet:  0.300437 . 1:1(0) ack 3079308610 win 1031 <nop,nop,TS val 150 ecr 3206488061>
    outbound sniffed packet:  0.300455 R 3079308610:3079308610(0) win 0
    
     0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    +0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    +0.000 bind(3, ..., ...) = 0
    +0.000 listen(3, 1) = 0
    +0.100 < S  0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    +0.000 > S. 0:0(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 200 ecr 100>
    +0.050 < . 1:101(100) ack 1 win 1031 <nop, nop, TS val 150 ecr 200>
    +0.000 accept(3, ..., ...) = 4
    +0.000 read(4, ..., 100) = 100
    +0.000 write(4, ..., 400) = 400
    +0.000 > . 1:1(0) ack 101 win 12495 <nop, nop, TS val 250 ecr 150>
    +0.000 > P. 1:401(400) ack 101 win 12501 <nop, nop, TS val 250 ecr 150>
    +0.050 < . 101:101(0) ack 401 win 1024 <nop, nop, TS val 200 ecr 250>
    +0.000 < F. 101:101(0) ack 401 win 1031 <nop, nop, TS val 200 ecr 250>
    +0.000 > . 401:401(0) ack 102 win 12501 <nop, nop, TS val 300 ecr 200>
    +0.000 close(4) = 0
    +0.000 > F. 401:401(0) ack 102 win 12501 <nop, nop, TS val 300 ecr 200>
    +0.050 < . 102:102(0) ack 402 win 1031 <nop, nop, TS val 250 ecr 300>
    +0.015 < S  0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0!>
    +0.000 > S. ...(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val ... ecr 100>
    +0.035 < . 1:1(0) ack 1 win 1031 <nop, nop, TS val 150 ecr 200>
    +0.000 > . 1:1(0) ack 1 win 12501 <nop, nop, TS val 200 ecr 150>
    68f26eb3
    History
    add support for ignoring tcp sequence number and timestamp offset changes
    Jason Eggleston authored
    In order to simulate delayed packets, there are occasions where responses
    to those packets need to be ignored insofar as they modify relative sequence
    numbers or timestamps. For example a retransmitted SYN or SYN-ACK might be delayed
    until after the TCP session ends, but a combination of bugs on the client and server
    might result in the session persisting as if it never ended.
    
    inbound injected packet:  0.100034 S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    outbound sniffed packet:  0.100083 S. 3079308609:3079308609(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 3206488061 ecr 100>
    inbound injected packet:  0.150127 . 1:101(100) ack 3079308610 win 1031 <nop,nop,TS val 150 ecr 3206488061>
    outbound sniffed packet:  0.150170 . 3079308610:3079308610(0) ack 101 win 12495 <nop,nop,TS val 3206488111 ecr 150>
    outbound sniffed packet:  0.150192 P. 3079308610:3079309010(400) ack 101 win 12501 <nop,nop,TS val 3206488111 ecr 150>
    inbound injected packet:  0.200251 . 101:101(0) ack 3079309010 win 1024 <nop,nop,TS val 200 ecr 3206488111>
    inbound injected packet:  0.200271 F. 101:101(0) ack 3079309010 win 1031 <nop,nop,TS val 200 ecr 3206488111>
    outbound sniffed packet:  0.200287 . 3079309010:3079309010(0) ack 102 win 12501 <nop,nop,TS val 3206488161 ecr 200>
    outbound sniffed packet:  0.200324 F. 3079309010:3079309010(0) ack 102 win 12501 <nop,nop,TS val 3206488161 ecr 200>
    inbound injected packet:  0.250354 . 102:102(0) ack 3079309011 win 1031 <nop,nop,TS val 250 ecr 3206488161>
    inbound injected packet:  0.265380 S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    outbound sniffed packet:  0.265402 S. 3079308609:3079308609(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 3118763918 ecr 100>
    inbound injected packet:  0.300437 . 1:1(0) ack 3079308610 win 1031 <nop,nop,TS val 150 ecr 3206488061>
    outbound sniffed packet:  0.300455 R 3079308610:3079308610(0) win 0
    
     0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    +0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    +0.000 bind(3, ..., ...) = 0
    +0.000 listen(3, 1) = 0
    +0.100 < S  0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
    +0.000 > S. 0:0(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val 200 ecr 100>
    +0.050 < . 1:101(100) ack 1 win 1031 <nop, nop, TS val 150 ecr 200>
    +0.000 accept(3, ..., ...) = 4
    +0.000 read(4, ..., 100) = 100
    +0.000 write(4, ..., 400) = 400
    +0.000 > . 1:1(0) ack 101 win 12495 <nop, nop, TS val 250 ecr 150>
    +0.000 > P. 1:401(400) ack 101 win 12501 <nop, nop, TS val 250 ecr 150>
    +0.050 < . 101:101(0) ack 401 win 1024 <nop, nop, TS val 200 ecr 250>
    +0.000 < F. 101:101(0) ack 401 win 1031 <nop, nop, TS val 200 ecr 250>
    +0.000 > . 401:401(0) ack 102 win 12501 <nop, nop, TS val 300 ecr 200>
    +0.000 close(4) = 0
    +0.000 > F. 401:401(0) ack 102 win 12501 <nop, nop, TS val 300 ecr 200>
    +0.050 < . 102:102(0) ack 402 win 1031 <nop, nop, TS val 250 ecr 300>
    +0.015 < S  0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0!>
    +0.000 > S. ...(0) ack 1 win 65535 <mss 1460,nop,wscale 4,sackOK,TS val ... ecr 100>
    +0.035 < . 1:1(0) ack 1 win 1031 <nop, nop, TS val 150 ecr 200>
    +0.000 > . 1:1(0) ack 1 win 12501 <nop, nop, TS val 200 ecr 150>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.