tcp_dsack_mult.pkt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // SPDX-License-Identifier: GPL-2.0
  2. // Test various DSACK (RFC 2883) behaviors.
  3. --mss=1000
  4. `./defaults.sh`
  5. 0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
  6. +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
  7. +0 bind(3, ..., ...) = 0
  8. +0 listen(3, 1) = 0
  9. +0 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
  10. +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
  11. +.1 < . 1:1(0) ack 1 win 1024
  12. +0 accept(3, ..., ...) = 4
  13. // First SACK range.
  14. +0 < P. 1001:2001(1000) ack 1 win 1024
  15. +0 > . 1:1(0) ack 1 <nop, nop, sack 1001:2001>
  16. // Check SACK coalescing (contiguous sequence).
  17. +0 < P. 2001:3001(1000) ack 1 win 1024
  18. +0 > . 1:1(0) ack 1 <nop,nop,sack 1001:3001>
  19. // Check we have two SACK ranges for non contiguous sequences.
  20. +0 < P. 4001:5001(1000) ack 1 win 1024
  21. +0 > . 1:1(0) ack 1 <nop,nop,sack 4001:5001 1001:3001>
  22. // Three ranges.
  23. +0 < P. 7001:8001(1000) ack 1 win 1024
  24. +0 > . 1:1(0) ack 1 <nop,nop,sack 7001:8001 4001:5001 1001:3001>
  25. // DSACK (1001:3001) + SACK (6001:7001)
  26. +0 < P. 1:6001(6000) ack 1 win 1024
  27. +0 > . 1:1(0) ack 6001 <nop,nop,sack 1001:3001 7001:8001>
  28. // DSACK (7001:8001)
  29. +0 < P. 6001:8001(2000) ack 1 win 1024
  30. +0 > . 1:1(0) ack 8001 <nop,nop,sack 7001:8001>
  31. // DSACK for an older segment.
  32. +0 < P. 1:1001(1000) ack 1 win 1024
  33. +0 > . 1:1(0) ack 8001 <nop,nop,sack 1:1001>