Maranello : Practical Partial Packet Recovery for 802.11 Bo Han Aaron Schulman Lusheng Ji Neil Spring Francesco Gringoli Seungjoon Lee Bobby Bhattacharjee Lorenzo Nava Robert Miller University of Maryland University of Brescia AT&T Research
Block-based partial packet recovery corrupt packet Maranello Practical Partial Packet Recovery for 802.11 2
Block-based partial packet recovery corrupt packet Maranello Practical Partial Packet Recovery for 802.11 2
Block-based partial packet recovery corrupt ✓ ✓ ✓ ✖ ✖ packet Maranello Practical Partial Packet Recovery for 802.11 2
Block-based partial packet recovery corrupt ✓ ✓ ✓ ✖ ✖ packet repair blocks Maranello Practical Partial Packet Recovery for 802.11 2
Block-based partial packet recovery repaired packet Maranello Practical Partial Packet Recovery for 802.11 2
Block-based partial packet recovery repaired packet • Increases throughput because: • Repairs are shorter than retransmissions • Short transmissions have higher delivery probability • Early delivery avoids backoff and low rate retransmission Maranello Practical Partial Packet Recovery for 802.11 2
Deployable partial packet recovery 333 67 142 Full retransmission 29 ~ ~ ~ Symbols (PPR) ~ Symbols (PPR) ~ ~ repair bits per incorrect bit 25 Ideal Reed Solomon (ZipTx) Ideal Reed Solomon (ZipTx) 64 byte blocks (Maranello) Blocks (Maranello) 21 17 13 9 5 1 .003 .007 .015 .102 .106 error traces by average bit error rate Maranello Practical Partial Packet Recovery for 802.11 3
802.11 errors are clustered 100 corrupted packets bits Maranello Practical Partial Packet Recovery for 802.11 4
802.11 errors are clustered 100 corrupted packets bits Maranello Practical Partial Packet Recovery for 802.11 4
802.11 errors are clustered 100 corrupted packets bits Maranello Practical Partial Packet Recovery for 802.11 4
Need few blocks for repairs 1 1 1 1 1 1 fraction repaired by blocks fraction repaired by blocks fraction repaired by blocks 2 2 2 3 3 3 4 4 4 5 5 5 0.5 0.5 0.5 ... ... ... 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 0 0 0 1 1 1 2 2 2 3-7 3-7 3-7 8-14 8-14 8-14 15-32 15-32 15-32 33-368 33-368 33-368 369-3475 369-3475 369-3475 3476-5847 3476-5847 3476-5847 fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors Maranello Practical Partial Packet Recovery for 802.11 5
Need few blocks for repairs 1 1 1 1 1 1 fraction repaired by blocks fraction repaired by blocks fraction repaired by blocks 2 2 2 3 3 3 4 4 4 5 5 5 0.5 0.5 0.5 ... ... ... 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 0 0 0 1 1 1 2 2 2 3-7 3-7 3-7 8-14 8-14 8-14 15-32 15-32 15-32 33-368 33-368 33-368 369-3475 369-3475 369-3475 3476-5847 3476-5847 3476-5847 fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors Maranello Practical Partial Packet Recovery for 802.11 5
Need few blocks for repairs 1 1 1 1 1 1 fraction repaired by blocks fraction repaired by blocks fraction repaired by blocks 2 2 2 3 3 3 4 4 4 5 5 5 0.5 0.5 0.5 ... ... ... 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 0 0 0 1 1 1 2 2 2 3-7 3-7 3-7 8-14 8-14 8-14 15-32 15-32 15-32 33-368 33-368 33-368 369-3475 369-3475 369-3475 3476-5847 3476-5847 3476-5847 fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors Maranello Practical Partial Packet Recovery for 802.11 5
Need few blocks for repairs 1 1 1 1 fraction repaired by blocks fraction repaired by blocks 2 2 3 3 4 4 5 5 0.5 0.5 ... ... 19 19 20 20 21 21 22 22 23 23 0 0 1 1 2 2 3-7 3-7 8-14 8-14 15-32 15-32 33-368 33-368 369-3475 369-3475 3476-5847 3476-5847 fraction corrupt packets, labeled by bit errors fraction corrupt packets, labeled by bit errors ≤ 32 bit errors, repaired by one block Maranello Practical Partial Packet Recovery for 802.11 5
Need few blocks for repairs 1 1 fraction repaired by blocks 2 3 4 5 0.5 ... 19 20 21 22 23 0 1 2 3-7 8-14 15-32 33-368 369-3475 3476-5847 fraction corrupt packets, labeled by bit errors ≤ 32 bit errors, many bit errors, still correct blocks repaired by one block Maranello Practical Partial Packet Recovery for 802.11 5
Maranello design goals • Compatible with 802.11 (Maintain link latency) • Incremental deployment • Runs on existing hardware • No extra bits for correct packets Maranello Practical Partial Packet Recovery for 802.11 6
Firmware suits block repair GnuRadio Firmware Driver e.g. PPR e.g. ZipTx Maranello long delay short delay long delay + + + expensive cheap cheap + + + low rate high rate high rate deploy completely deploy incrementally deploy incrementally not compatible 802.11 compatible not compatible Maranello Practical Partial Packet Recovery for 802.11 7
Broadcom (OpenFWWF) firmware Transmit: backoff to retransmit enqueue carrier sense transmit wait for ack Receive: packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack 8 Maranello Practical Partial Packet Recovery for 802.11
Broadcom (OpenFWWF) firmware Transmit: backoff to retransmit enqueue carrier sense transmit wait for ack Receive: packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack 8 Maranello Practical Partial Packet Recovery for 802.11
Broadcom (OpenFWWF) firmware Transmit: backoff to retransmit enqueue carrier sense transmit wait for ack Receive: packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack 8 Maranello Practical Partial Packet Recovery for 802.11
Nacking with checksums build and send nack build and send repair 1 2 3 4 5 C 1 C 2 C 3 C 4 C 5 build repair compute checksums 3 5 C 1 C 2 C 3 C 4 C 5 packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack Maranello Practical Partial Packet Recovery for 802.11 9
Nacking with checksums build and send nack build and send repair 1 2 3 4 5 C 1 C 2 C 3 C 4 C 5 build repair compute checksums 3 5 C 1 C 2 C 3 C 4 C 5 packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack Maranello Practical Partial Packet Recovery for 802.11 9
Nacking with checksums build and send nack build and send repair 1 2 3 4 5 C 1 C 2 C 3 C 4 C 5 build repair compute checksums 3 5 C 1 C 2 C 3 C 4 C 5 packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack Maranello Practical Partial Packet Recovery for 802.11 9
Nacking with checksums build and send nack build and send repair 1 2 3 4 5 C 1 C 2 C 3 C 4 C 5 build repair compute checksums 3 5 C 1 C 2 C 3 C 4 C 5 packet send ack deliver ack ✓ nack build and send repair validate patch send ack deliver repair ✖ packet build and send nack Maranello Practical Partial Packet Recovery for 802.11 9
802.11’s timing Correct: SIFS packet ack Retransmission: ack timeout DIFS & backoff retransmission corrupt packet Maranello Practical Partial Packet Recovery for 802.11 10
802.11’s timing Correct: SIFS packet ack Retransmission: ack timeout DIFS & backoff retransmission corrupt packet Maranello Practical Partial Packet Recovery for 802.11 10
Exploiting 802.11’s timing reserved time for expected ack SIFS ack timeout retransmission corrupt packet DIFS & backoff build nack build repair • Compute block • Identify mismatched checksums checksums • 10 μ s • 100 μ s Maranello Practical Partial Packet Recovery for 802.11 11
Fletcher-32 • Operations per 16 bits: two adds, two decrements • All single bit errors, burst errors in a single 16-bit block, and two-bit errors separated by at most 16 bits • CRC-32 & Fletcher-32 find all block errors in 9,911,800 802.11 error packets • Maranello relies on whole packet CRC-32 Maranello Practical Partial Packet Recovery for 802.11 12
Card’s CPU is not fast enough • Problem: 4 μ s per 64 byte block (SIFS = 10 μ s) • Insight: Compute block checksums while blocks are received Maranello Practical Partial Packet Recovery for 802.11 13
Maranello design review Goal Solution • Broadcom firmware • Replace ack with nack Compatible with 802.11 (Maintain link layer latency) (Fletcher-32 while blocks are received) Incremental deployment Legacy 802.11 ignores nacks No extra bits for correct Receiver sends checksums, packets sender finds the errors Maranello Practical Partial Packet Recovery for 802.11 14
Recommend
More recommend