cs 204 multipath tcp
play

CS 204: Multipath TCP Jiasi Chen Lectures: MWF 12:10-1pm in WCH - PowerPoint PPT Presentation

CS 204: Multipath TCP Jiasi Chen Lectures: MWF 12:10-1pm in WCH 139 http://www.cs.ucr.edu/~jiasi/teaching/cs204_spring16/ 1 Goals Use the available network paths at least as well as regular TCP, but without starving TCP. Usable as


  1. CS 204: Multipath TCP Jiasi Chen Lectures: MWF 12:10-1pm in WCH 139 http://www.cs.ucr.edu/~jiasi/teaching/cs204_spring16/ 1

  2. Goals • Use the available network paths at least as well as regular TCP, but without starving TCP. • Usable as regular TCP for existing applications. • Enabling MPTCP must not prevent connectivity on a path where regular TCP works. 2

  3. Network Stack Source: http://queue.acm.org/detail.cfm?id=2591369 3

  4. Network Address Translators Source: https://en.wikibooks.org/wiki/Communication_Networks/NAT_and_PAT_Protocols 4

  5. Connection Setup Host A Host B • Use MP-CAPABLE flag to indicate sender has MPTCP capability SYN, MP-CAPABLE • Problem: Middleboxes remove SYN/ACK, MP-CAPABLE TCP options • Option removed on msg 1? • Option removed on msg 2? ACK 5

  6. Connection Setup Host A Host B • Use MP-CAPABLE flag to indicate sender has MPTCP capability SYN, MP-CAPABLE • Problem: Middleboxes remove TCP options • Option removed on msg 1? SYN/ACK, MP-CAPABLE à fall back to TCP • Option removed on msg 2? à host A and host B’s views are ACK, MP-CAPABLE inconsistent à add another MPT-CAPABLE to msg 3 if MP-CAPABLE recv’d in msg 2 6

  7. Adding New Flows: Naïve solution Host A • Host A has addresses A1 and A2 Host B A1 A2 • Assume Host B knows these addresses and starts sending data SYN, MP-CAPABLE to both SYN/ACK, MP-CAPABLE ACK, MP-CAPABLE • Problem: Middleboxes will not Data allow data to be sent without SYN à need 3-way handshake for new SYN, MP-JOIN subflows SYN/ACK, MP-JOIN ACK, MP-JOIN Data 7

  8. Adding New Flows: Identification • TCP flows traditionally identified by I want to join <source IP, source port, dest IP, <10.0.0.2:12345 , 128.112.49.87:80> dest port> Host B Host A • Problem: when adding new subflow to existing connection, 10.0.0.2 à 71.93.165.196 don’t know the source IP I don’t know that connection. 8

  9. Adding New Flows: Identification Host A • TCP flows traditionally identified by Host B A1 A2 <source IP, source port, dest IP, dest port> SYN, MP-CAPABLE, key A SYN/ACK, MP-CAPABLE, key B • Problem: when adding new ACK, MP-CAPABLE subflow to existing connection, Data don’t know the source IP à add a token to identify the SYN, MP-JOIN, token B connection SYN/ACK, MP-JOIN • token = hash(key) ACK, MP-JOIN Data 9

  10. Adding New Flows: Authentication Host A Host B • Problem: attacker could use the A1 A2 same token à authentication using HMAC SYN, MP-CAPABLE, key A SYN/ACK, MP-CAPABLE, key B ACK, MP-CAPABLE Data SYN, MP-JOIN, token B SYN/ACK, MP-JOIN SYN, MP- ACK, MP-JOIN JOIN, token B Data 10

  11. Hash-based Message Authentication Code (HMAC) Source: http://www.networkworld.com/article/2268575/lan-wan/chapter-2--ssl-vpn-technology.html 11

  12. Adding New Flows: Authentication Host A • Problem: attacker could use the Host B A2 A1 same token à authentication using HMAC SYN, MP-CAPABLE, key A • HMAC = f(key, rand) SYN/ACK, MP-CAPABLE, key B • Attacker gets one change to guess the HMAC, otherwise rand changes ACK, MP-CAPABLE Data SYN, MP-JOIN, token B, rand A SYN/ACK, MP-JOIN, rand B, HMAC B SYN, MP- ACK, MP-JOIN,HMAC A JOIN, token B, 12 Data rand Z

  13. Adding New Flows: Addresses • Implicit Host B Host A • Explicit • Problem: second subflow can’t reach client because of NAT • Server sends ADD_ADDR option Host B Host A 13

  14. Sequence Numbers • Naïve: Use one sequence of numbers, send subset those numbers on each subflow Host A1 934 935 936 937 938 939 940 941 942 943 Host A2 • Problem: middleboxes re-initialize sequence numbers • Problem: middleboxes don’t like gaps in sequence numbers à use flow-level sequence numbers along with per-subflow sequence numbers 14

  15. Sequence Numbers: ACKs • Flow-level sequence numbers needed • Are flow-level ACKs needed? Can we infer them from subflow ACKs? • Example: receive buffer size 2 Source: [3] 15

  16. Sequence Numbers: Mapping • Mapping from subflow sequence number to data sequence number • Naïve: On each packet, record absolute value of data sequence number • TCP segmentation offload (TSO) • Divide large segments into smaller chunks • Performed by NICs to save CPU • Problem: TSO copies same data sequence number onto multiple packets à record exact mapping between subflow and data sequence numbers 16

  17. Sequence Numbers: Encoding • Option 1: Encode in data payload • Problem: Data ACKs can get stuck from flow control S can’t read until finished sending C can’t ACK until S reads Source: [3] à Encode data sequence numbers and ACKs in TCP options 17

  18. Flow Control • Naïve: Use one receive window for each flow à one receive window for each subflow • Problem: Subflow failure can lead to deadlock 1. Application waiting for subflow 1’s data à One receive window 2. Subflow 1 fails, doesn’t send data for the overall flow 3. No space left in subflow 2’s rwnd to transmit new data Subflow 1 rwnd Application buffer Subflow 2 rwnd 18

  19. Retransmissions • What if data on a subflow times out? • Can resend on a different subflow • Still need to retransmit on the original subflow • No holes in subflow sequence numbers for middlebox compatibility • Wastes bandwidth • Protocol not defined by RFC • Aggressive: Re-transmit every packet not received on a different subflow • Conservative: Re-transmit after fixed number of retries on the original subflow 19

  20. Congestion Control • Naïve: use TCP congestion control separately on each path • Problem: Not TCP-friendly For example: 2 clients Client A has 2 MPTCP subflows Client B is regular TCP Client A will receive 2/3 of capacity 20 Source: [2]

  21. Congestion Control • Solution: Congestion control coupled across subflows • Many algorithms developed 21 Source: [2]

  22. Scheduling • When there is space in both congestion windows, which subflow to transmit on? • Round-robin • Lowest-RTT first • ACK-clocked • Round-robin: if cwnd has space, send even if out of RR order? • Lowest-RTT first: if cwnd has space, send on higher-RTT subflow? 22

  23. Practical Example 23 Source: [2]

  24. Who Uses MPTCP? • iOS 7 for Siri • Primary TCP connection over WiFi • Backup TCP connection over cellular data • Use cases • Smartphones with 4G and WiFi for connectivity • Data center servers with multiple high-speed links for load balancing • Linux kernel available 24

  25. Paper Discussion • How computationally expensive is it? • Is TCP-friendliness too restrictive? 25

  26. Sources 1. “Multipath TCP,” ChristophPasch and Olivier Bonaventure, ACM Queue , 2014. 2. TCP Extensions for Multipath Operation with Multiple Addresses, RFC 2684. 3. “How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP,” Raiciu et al., NSDI 2012. 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend