tcp/icn: carrying tcp over content centric and named data ... · unaltered tcp/ip stack and...
TRANSCRIPT
TCP/ICN:CarryingTCPoverContentCentricandNamedDataNetworks
IlyaMoiseenkoCiscoSystems
DaveOranCiscoSystems
Outline
I. IntroductionII. Design– Basicfetchingproxy– Reliableprefetchingproxy– Unreliableprefetchingproxy
III. EvaluationIV. Conclusions
2
WhyBother?YoucouldjustrunDual-Stackin”Ships-in-the-night”mode.But… amajorattractionofICNissimplificationandperformanceinenvironmentsnotfriendlytoIP:• Mobileedge– eliminatetunnels,respondmorequicklytomobilityevents,temporalcachingattheedgeforbettererrorcontrol
• IoT – Muchsmallercodefootprint,betterintegrationwithradioprotocols,lowerbackgroundchatterthanIP
4
High-levelgoals
1. UnalteredTCP/IPstackandapplications2. PreserveTCPend-to-endsemantics– Split-TCPfunctionalitycanbeaddedafterwards
3. Pulldatabetweenproxies(i.e.don’trequiredatapushinInterests)
4. CompatibilitywithbothCCNandNDN5. Minimizeoverhead
5
Non-goals
1. SupportofUDPorothertransportprotocols2. Heterogeneousaddressingandrouting– Eachproxyownsaroutablenameprefix– DonotproposeIPaddr <->nameprefixmapping
3. PathMTU-discoveryandfragmentation– Assumestandard1500-byteTCPMSSandupto
9000bytesICNDatamessages
6
Mainchallenges
• HowtoreconciletheTCP/IPpushmodelwiththeICNpullmodel?
• Howtominimizeinflationofmessagecountandmessagesizes?
• HowmuchdoesthetranslationfunctionneedtounderstandtheTCPstatemachine?
• HowtomarrytheICNandTCPcongestionandflowcontrolmodels?
8
DesignalternativesforTPC/ICNProxies
• Wedesignedandevaluatedthreeapproaches:– Simpleone-to-onemappingofTCPmessagestoICNexchanges
– TracktheTCPstatemachineintheproxiestoprovidereliabilityovertheICNsegmentofthepath
–MapTCPDatatoICNDatausinganunreliableinter-proxychannel
• Connectionstatemachinesameforallthree–differonlyinthedataphase
9
Sharedparts
10
TCPconnectionsetup
Interest: /<routable prefix>/<TCP/IP headers>/<nonce>
SYN flag
Interest: /<routable prefix>/<TCP/IP headers>/<nonce> SYN, ACK flags
Interest: /<routable prefix>/<TCP/IP headers>/<nonce> ACK flag
/verizon
/att
/verizon
Interest: /<routable prefix>/<TCP/IP headers>/<nonce>
FIN flag
Interest: /<routable prefix>/<TCP/IP headers>/<nonce> ACK flag
Interest: /<routable prefix>/<TCP/IP headers>/<nonce> ACK flag
Interest: /<routable prefix>/<TCP/IP headers>/<nonce> FIN flag
/verizon
/att
/att
/verizon
TCPconnectionteardown
Basicfetching
• DataencapsulatesaTCPsegmentcarryingpayload/[forward-proxy-prefix]/[TCP-4-tuple]/[TCP-sequence-number]/[Wraparound-number]
• InterestencapsulatesanemptyTCPsegment/[reverse-proxy-prefix]/[TCP-IP-headers]/[nonce]
• Slow:2xRTT,2xpackets
11
Forward proxy
Interest with TCP/IP headers
Reverse proxy
Data carrying TCP payload
1"
2"
3"
4" Interest pulling data
5"
6"
Data"cache"
Unidirectional TCP flow
TCP$data$$segment$
TCP$data$$segment$
TCP$$ACK$
TCP$$ACK$
Interest with TCP/IP headers
TCP receiver TCP sender
ReliableprefetchingDatasequencingisindependentfromTCPsequencing
– ImpossibletopredictTCPsequencenumberprogression
12
Interest: /<routable prefix>/<connection id>/<sequence#> TCP 4 tuple
Interest: /<routable prefix>/<TCP/IP headers>/<nonce>
SEQ # 376523 ACK # 1225142 TCP/IP:
SEQ # 376523 ACK # 1225142
TCP/IP: SEQ # 1223682 ACK # 376523
TCP/IP: SEQ # 1225142 ACK # 376523
Forward proxy
Unidirectional TCP flow
130
Interest: /<routable prefix>/<connection id>/<sequence#> TCP 4 tuple 129
Data: /<routable prefix>/<connection id>/<sequence#> TCP 4 tuple 129
Data: /<routable prefix>/<connection id>/<sequence#> TCP 4 tuple 130
Reliableprefetching
• ReverseproxytransmitsanInterestpriortoTCPsegmentarrivalattheforwardproxy– Enforcesreliability
• Forwardproxyadvertisesapprox.TCPcwnd size• Faster,butunstable.Alotofstateintheproxy.Otherissues.
13
Forward proxy Reverse proxy
1"
2"
3"
4"
6"
Reliable"consumer"
Interest"queue"
cwnd"adver:ser"
Data"queue"+"cache"TCP$data$$segment$
TCP$data$$segment$
5"
TCP$$ACK$
TCP$$ACK$
Interest per each RTT
Interest pipelining w.r.t cwnd
Data carrying TCP segment
Unidirectional TCP flow
Interest with TCP/IP headers
TCP sender TCP receiver
UnreliableprefetchingTime-delayednaming
– DatanamesmatchTCPsequencenumbersdeliveredoneRTTago
14
Interest: /<routable prefix>/<TCP/IP headers>/<nonce>
SEQ # 376523 ACK # 1222222
Interest: /<routable prefix>/<TCP/IP headers>/<nonce>
SEQ # 376523 ACK # 1225142
TCP/IP: SEQ # 376523 ACK # 1222222
TCP/IP: SEQ # 1223682 ACK # 376523
TCP/IP: SEQ # 1225142 ACK # 376523 Data: /<routable prefix>/<TCP/IP headers>/<nonce>
SEQ # 376523 ACK # 1222222
Forward proxy
Unidirectional TCP flow
Unreliableprefetching
• InterestsencapsulatingACKsprefetch newTCPsegments– NotenoughACKsduetodelayedACKTCPmechanism– PackagemultipleTCPsegmentsinasingleDatamessage
• NoadditionalreliabilityinICNprotocol• Fast.ComparabletoTCP/IP(cubic).Scalable.
15
Forward proxy Reverse proxy
1"2"3"
4" 6"
Interest"queue"
TCP"queue"
TCP$data$$segment$
TCP$data$$segment$
5"
TCP$$ACK$
TCP$$ACK$
Interest with TCP/IP headers
Data carrying multiple TCP data segments
Unidirectional TCP flow
TCP sender TCP receiver
Unreliableprefetching
Aproblemoffull-duplexTCPconnection:TCPpiggybacksACKsinthedatasegments-->noInterestsaresentbytheproxies
• Aproxydetectsfull-duplexbyanalyzingACK#• GeneratesInterestsonitsown– Fixedprobability(e.g.50%=every2nd segment)– FunctionofACK#progression
16
Evaluation
TCPcubicoverICNvs.TCPcubicoverIP
• NDNsim• Proofofconcept*niximplementation
– Unreliableprefetching18
TCP client IP forwarder IP forwarder IP forwarder TCP server
TCP client TCP server ICN forwarder TCP/ICN proxy
TCP firewall
ICN forwarder ICN forwarder TCP/ICN proxy
TCP firewall
Flowcompletiontime
19
TCP cubicUnreliable prefetching
Reliable prefetchingBasic fetching
0
0e+00
2e+07
4e+07
0 200 400 600
Time (ms)
TCP
sequ
ence
num
ber
a
a
a
a
Basic fetching
Reliable prefetching
TCP cubic
Unreliable prefetching
Unreliableprefetchingis10%slowerthanTCP/IP
TCPretransmissions
20
TCP cubicUnreliable prefetching
Reliable prefetching
Basic fetching
0
0
500
1000
1500
2000
0 200 400 600
Time (ms)
Tota
l num
ber o
f TC
P re
trans
mis
sion
s (p
acke
ts)
a
a
a
a
Basic fetching
Reliable prefetching
TCP cubic
Unreliable prefetching
TCPcongestionwindowsize
21
TCP cubic
Unreliable prefetching
Reliable prefetching
Basic fetching
0
0
20000
40000
60000
0 200 400 600
Time (ms)
Cw
nd (b
ytes
)
a
a
a
a
Basic fetching
Reliable prefetching
TCP cubic
Unreliable prefetching
TCPretransmissiontimeout
22
TCP cubicUnreliable prefetching
Reliable prefetching
Basic fetching
0
500
1000
1500
2000
0 200 400 600
Time (ms)
RTO
(ms)
a
a
a
a
Basic fetching
Reliable prefetching
TCP cubic
Unreliable prefetching
Flowfairnessandcompletiontime
23
50
100
150
200
1 10 100 500
TCP flow size (Mb)
TCP
flow
com
plet
ion
time
(sec
)
TCP/ICN
TCP/IP• Unreliable
prefetching• tcpperf tool+
proxyPoC• 10competing
unidirectionalflows
• Within5%differencewithTCP/IP
• Fair
Beyondsynthetictests
TLSrequiresadditionalaccommodations– InjectextraInterestsatTCPconnectionsetupphasetofetchTLSserverhellomessages
24
Webbrowser
WebserverICNforwarderTCP/ICNproxyTCPfirewall
ICNforwarder ICNforwarderTCP/ICNproxyTCPfirewall
Conclusions
• WecanrunmanyInternetapplicationswithoutIP
• TCPishighlyoptimizedforIP– ButitworkssurprisinglywelloverICN!
25