tcp/icn: carrying tcp over content centric and named data ... · unaltered tcp/ip stack and...

26
TCP/ICN: Carrying TCP over Content Centric and Named Data Networks Ilya Moiseenko Cisco Systems Dave Oran Cisco Systems

Upload: others

Post on 11-Feb-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

TCP/ICN:CarryingTCPoverContentCentricandNamedDataNetworks

IlyaMoiseenkoCiscoSystems

DaveOranCiscoSystems

Outline

I. IntroductionII. Design– Basicfetchingproxy– Reliableprefetchingproxy– Unreliableprefetchingproxy

III. EvaluationIV. Conclusions

2

3

I.Introduction

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

II.Design

7

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

17

III.Evaluation

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

Q/A

26