measuring packet reordering
play

Measuring Packet Reordering John Bellardo Stefan Savage Department - PowerPoint PPT Presentation

Measuring Packet Reordering John Bellardo Stefan Savage Department of Computer Science and Engineering University of California, San Diego November 6, 2002 Motivation Why is reordering important? Performance (TCP fast retransmit)


  1. Measuring Packet Reordering John Bellardo Stefan Savage Department of Computer Science and Engineering University of California, San Diego November 6, 2002

  2. Motivation • Why is reordering important? – Performance (TCP fast retransmit) – Race conditions (bad protocols) • What is hard about measuring it? – [Bennett et al 99]: active ICMP probing (ping) • Round-trip only; ICMP filtering/rate limiting bias – [Paxson 99]: pair-wise TCP endpoint analysis • Scale issues (need software at each endpoint) – [Jaiswal et al 02]: passive TCP analysis in net • Significant infrastructure requirement

  3. Our contributions • Unidirectional measurement techniques – Active approach • Send packet pairs and check for reordering – Code runs only at sender • Leverage TCP/IP protocol/implementation features • Infer if reordering is outbound or on return path • Implementation of same • Early experiences

  4. First attempt: Single Connection Test • Leverage TCP’s error control mechanisms – Every packet is labeled w/sequence number – Latest in-order sequence number acknowledged – Idea: Craft packets so ACKs reveal reordering • Assumption – ACK parity : ACK generated for each packet

  5. Single Connection Test • Fully establish a TCP session – Sequence space starts at 1 Probing Remote Host Host

  6. Single Connection Test D a t a 2 • Fully establish a TCP session – Sequence space starts at 1 • Create a gap in sequence space Probing Remote Host Host

  7. Single Connection Test D a t a 2 • Fully establish a TCP session – Sequence space starts at 1 ACK 1 • Create a gap in sequence space – Wait for remote host to ACK the gap Probing Remote Host Host

  8. Single Connection Test D a t a 2 • Fully establish a TCP session – Sequence space starts at 1 ACK 1 • Create a gap in sequence space Data 1 – Wait for remote host to ACK the gap • Send two sample packets that straddle the previous packet Data 3 Probing Remote Host Host

  9. Single Connection Test D a t a 2 • Fully establish a TCP session – Sequence space starts at 1 ACK 1 • Create a gap in sequence space Data 1 – Wait for remote host to ACK the gap • Send two sample packets that ACK 3 straddle the previous packet Data 3 • If there is no reordering – First ACK should be for the gap Probing Remote Host Host

  10. Single Connection Test D a t a 2 • Fully establish a TCP session – Sequence space starts at 1 ACK 1 • Create a gap in sequence space Data 1 – Wait for remote host to ACK the gap • Send two sample packets that ACK 3 straddle the previous packet Data 3 • If there is no reordering 4 – First ACK should be for the gap K C A – Second ACK is for the whole sequence Probing Remote Host Host

  11. Single Connection Test D D D D a a a a t t t t a a a a 2 2 2 2 ACK 1 ACK 1 ACK 1 ACK 1 Data 1 Data 1 Data 3 Data 3 Data 3 D ACK 3 Data 1 a t a 1 ACK 1 Data 3 ACK 4 ACK 4 ACK 3 ACK 1 4 4 K K C C A A Forward No Forward Reverse and Reverse Reordering Reordering Reordering Reordering

  12. Single Connection Test Pitfalls D a t a • Packet loss results in unusable 2 samples ( general limitation ) ACK 1 • ACK parity assumption fails Data 1 – Delayed acknowledgements – Need both ACKs to reveal order Data 3 ACK 3 gets delayed and 4 K subsequently is never sent C A

  13. Dual Connection Test • Need two samples to be reliable returned – Send all packets out of order (ACK not delayed) – ACK value useless, so infer order from other fields • Use two connections to differentiate samples • IPID – “unique” identifier for each datagram in a flow • New assumptions – IPID is strictly increasing per host • Dominant implementations do this – Both connections are made to the same machine

  14. Dual Connection Test • Fully establish two TCP sessions (red and black) Probing Remote Host Host

  15. Dual Connection Test • Fully establish two TCP sessions (red and black) • Send two sample packets: one in each connection Probing Remote Host Host

  16. Dual Connection Test • Fully establish two TCP sessions (red and black) • Send two sample packets: one in IPID n each connection • If no reordering – IPID of first response packet… Probing Remote Host Host

  17. Dual Connection Test • Fully establish two TCP sessions (red and black) • Send two sample packets: one in IPID n each connection IPID > n • If no reordering – IPID of first response packet, is strictly less than IPID of response packet Probing Remote Host Host

  18. Dual Connection Test Pitfalls • Connection assumption violations – Load balancer can direct two connections to different hosts • IPID assumption violations – Random IPID values (e.g., OpenBSD) – Zero IPID after MTU discovery (e.g., Linux)

  19. SYN Test • Trick load balancers by starting “identical” connections – Appear to belong to same flow (but different seq #’s) • Use TCP connection state machine to infer order – No assumptions about IPID • Assumptions – Duplicate SYN’s with different seq cause ACK or RST packets

  20. SYN Test • Uses no pre-established sessions Probing Remote Host Host

  21. SYN Test S Y N 1 • Uses no pre-established sessions • Send two SYN packets to remote SYN 10 host – Different starting sequence number – Other than that, identical Probing Remote Host Host

  22. SYN Test S Y N 1 • Uses no pre-established sessions • Send two SYN packets to remote SYN 10 host SYN+ACK 1 – Different starting sequence number – Other than that, identical • First received packet will generate a SYN+ACK Probing Remote Host Host

  23. SYN Test S Y N 1 • Uses no pre-established sessions • Send two SYN packets to remote SYN 10 host SYN+ACK 1 – Different starting sequence number – Other than that, identical • First received packet will generate RST/ACK a SYN+ACK • Other packet causes a RST or ACK Probing Remote Host Host

  24. SYN Test Pitfalls • SYN behavior assumption violations – Poorly understood/implemented part of spec. – Some TCP stacks send SYN+ACK or nothing in response to a bad duplicate SYN • A series of SYN-based probes may be interpreted as a DoS attack – Implementation is good about cleaning up state

  25. Implementation • User-level subset of TCP stack – Shared origin w/Sting, TBit, Sprobe and Alpine – Raw socket for sending frames – Packet filters (via libpcap) to capture response – Firewall filters to prevent host OS from seeing response – Detect assumption failures • Runs on stock FreeBSD and Linux

  26. Validation • Controlled – Added reordering to FreeBSD Dummynet – Independently varied forward and reverse reordering – Match between network trace and reports from tool • Experimental – Probed 50 hosts over 20 days with all tests – Each host probed approx. every 30 minutes – Probe results similar for hosts across tests (where different tests were compatible)

  27. Observations (1) • Significant reordering seen on some paths www.apple.com 30 forward 25 % reordering 20 15 10 5 0 22 10 22 10 22 10 22 10 22 10 22 10 hour

  28. Observations (2) • Reordering can be highly asymmetric www.apple.com 30 forward 25 reverse % reordering 20 15 10 5 0 22 10 22 10 22 10 22 10 22 10 22 10 hour

  29. Observations (3) • Small changes in packet spacing can have large changes on reordering (on same path) 12 10 % reordering 8 6 4 2 0 0 50 100 150 200 250 300 usec

  30. Conclusion • We can measure unidirectional reordering from a single endpoint • This matters – Reordering does happen – Asymmetry is common on reordered paths • We still need a precise metric for reordering – Results currently not comparable between studies • Source code will be available shortly at: http://ramp.ucsd.edu/reorder

Recommend


More recommend