building a service‐centric network with...

50
Building a service‐centric network with SCAFFOLD Michael J. Freedman Princeton University with Prem Gopalan, Steven Ko, Jen Rexford, and David Shue * Service‐Centric Architecture For Flexible Object LocalizaNon and DistribuNon *

Upload: others

Post on 27-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Buildingaservice‐centricnetworkwithSCAFFOLD

MichaelJ.Freedman

PrincetonUniversity

withPremGopalan,StevenKo,JenRexford,andDavidShue

*Service‐CentricArchitectureForFlexibleObjectLocalizaNonandDistribuNon

*

Page 2: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Fromahost‐centricarchitecture

1960s

Page 3: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Fromahost‐centricarchitecture

1960s1970s

Page 4: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Fromahost‐centricarchitecture

1960s1970s

1990s

Page 5: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Toaservice‐centricarchitecture

1960s1970s

1990s

2000s

Page 6: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Toaservice‐centricarchitecture

•  Userswantservices,agnosNcofactualhost

•  ServiceoperatorsneedtosupportreplicaselecNon,failover,migraNon,…

•  Service‐centricanycastasfirst‐classprimiNve

Page 7: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Challenges•  Handlingreplicatedservices

–  ControloverreplicaselecNonamonggroups

–  Controlofnetworkresourcesforsharedbetweengroups–  Handlingdynamicsamonggroupmembershipanddeployments

•  Handlingchurn–  Flexibility:Fromsessions,tohosts,todatacenters

–  Robustness:LargelyhidefromapplicaNons

–  Scalability:Localchangesshouldn’tneedtoupdateglobalinfo–  Scalability:Churnshouldn’trequireper‐clientstateinnetwork–  Efficiency:Wide‐areamigraNonshouldn’trequiretunneling

Page 8: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

SCAFFOLDas…

–  Cleanslatedesign

–  MulN‐datacenterarchitectureforsingleadministraNvedomain

Page 9: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Target:SingleadministraNvedomain

•  DCnetworkmanagementmoreunified,simple,centralized

•  End‐hostOSnet‐imagedandcanbefork‐li_upgraded

•  Alreadystrugglingtoprovidescalabilityandservice‐centrism

•  CloudcompuNngtrendslessonimportanceoffixed,physicalhosts

X

DC 2 DC 1

Y

Backbone

Internet X

YY

X

Page 10: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Appearanceofservice‐centrismtoday

Layer4/7: DNSwithsmallTTLs HTTPredirects

Layer‐7switching

Layer3: IPaddressesandIPanycast

Inter/intrarouNngupdates

Layer2: VIP/DIPloadbalancers

VRRP,ARPspoofing

Page 11: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Outlineoftalk

•  Principlesforservice‐centricdesign

•  ArchitectureanddesignofSCAFFOLD– Networksupport•  Newforwardingmodel•  SupportformigraNonandfailover•  Networkandservicemanagement

– End‐hostsupport:socketinterfaceandnetworkstack

•  ImplementaNon,especiallyOpenFlow/NOXdetails(anddesiderata)

Page 12: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

PrinciplesofSCAFFOLD•  Service‐centricnaming

–  Service/objectid’sasflexiblenaming,nothosts•  Webserversprovidingfront‐Nerweb(calendar.google.com)

•  AparNcularregionina(distributed)VirtualWorldservice

•  AparNcularfileinaCDN

Page 13: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

PrinciplesofSCAFFOLD•  Service‐centricnaming

–  Service/objectid’sasflexiblenaming,nothosts

–  Network‐leveladdresseshiddenfromapplicaNon

•  FlowsandanycastasbasicnetworkprimiNves–  Namescorrespondtoanycastgroups,unicastasspecialcase

–  ConnecNonaffinityforflowswithinanycastedendpoints

•  MigraNonandfailoverthroughaddressremapping–  FlowsidenNfiedbyeachendpoint,notpairwise–  Controlthroughin‐bandsignalling,statelessforwarders

•  Minimizevisibilityofchurnforscalability–  Differentaddressingfordifferentscopes(successiverefinement)

–  UnityoffuncNonalityandmanagement

Page 14: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Extentofchanges

 Changein‐networksupport

 Changethepacketformat

 Changesocketlayer+stack

Object Switch

Flow Switch

Flow ID

Obj ID DC ID Host ID Sock ID Hdr

Page 15: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

ApplicaNon’snetworkAPI

Today(IP/BSDsockets)

fd = open();

Datagram: sendto (IP:port, data)

Stream: connect (fd, IP:port) send (fd, data);

IP:ApplicaNonseesnetwork,networkdoesn’tseeappSCAFFOLD:Networkseesapp,appdoesn’tseenetwork

SCAFFOLD

fd = open();

Unbounddatagram: sendto (objectID, data)

Bounddatagram: connect (fd, objectID) send (fd, data);

Page 16: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

SCAFFOLDinthenetwork:

UnboundDatagramsandNetworkSupport

Page 17: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingunbounddatagrams

Host ID: B

X B

C SRC

DST

C

X SRC

DST

C SRC

X DST

C A

X SRC

DST

X

X

Object Switch

Host ID: A

X

C:A

X:B

X:D

X:E

HID: D

HID: E   Service‐levelnamingandforwarding  ServicesshouldcontrolinstanceselecNon

Page 18: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

HID: D

HID: E

Successiverefinementofdatagrams

X

Host ID: B

Data Center 2 Data Center 1

Host ID: A

X

X

C:A

X:2

C:1

X:B

X:D

X:E

Page 19: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

HID: D

HID: E

Successiverefinementofdatagrams

X

Host ID: B

Data Center 2 Data Center 1

Host ID: A

X 2

C SRC

DST X B

C SRC

DST

X

C SRC

X DST C

X SRC

DST

C A

X SRC

DST

C 1

X SRC

DST

X

C:A

X:2

C:1

X:B

X:D

X:E

  Forwardingreferstosuccessively‐refineddesNnaNons  Churnhiddenfromwider‐areaasmuchaspossible

Page 20: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

SCAFFOLDinthenetwork:

BoundFlowsandNetworkDevices

Page 21: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

Host ID: B

X

X

Object Switch

Host ID: A

XX B

C SRC

DST

C

X SRC

DST

SRC

X DST

C A

X SRC

DST

C:A

X:B

X:D

X:E

C

Page 22: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

Host ID: B

X

X

Object Switch

Host ID: A

XX B

C SRC

DST

C SRC

X DST

A p

A p

C

X SRC

DST A p

B q

C:A

X:B

X:D

X:E

Page 23: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

C:A

X:B

X:D

X:E

Forwardingboundflows

Host ID: B

Object Switch

Host ID: A

XX B

C SRC

DST

C SRC

X DST

A p

A p

C

X SRC

DST A p

B q

Flow ID

Obj ID Host ID Sock ID Header

X

C SRC

DST B q

A p

fd=5 oid=C,X C

X SRC

DST A p

B q

fd=9 oid=X,C

Page 24: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

C:A

X:B

X:D

X:E

Forwardingboundflows

Host ID: B

Object Switch

Host ID: A

XX B

C SRC

DST

C SRC

X DST

A p

A p

C

X SRC

DST A p

B q

Flow Switch

_:aOS

A:aAB:aB

D:aD

E:aE

C

X SRC

DST A p

B q

fd=9 oid=X,C

X

C SRC

DST B q

A p

fd=5 oid=C,X

Flow ID

Obj ID Host ID Sock ID Header

Page 25: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

C:A

X:B

X:D

X:E

Forwardingboundflows

Host ID: B

Object Switch

Host ID: A

XX B

C SRC

DST

C SRC

X DST

A p

A p

C

X SRC

DST A p

B q

Flow Switch

C

X SRC

DST A p

B q

fd=9 oid=X,C

X

C SRC

DST B q

A p

fd=5 oid=C,X

B q

q

_:aOS

A:aAB:aB

D:aD

E:aE

Flow ID

Obj ID Host ID Sock ID Header

Page 26: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

C:A

X:B

X:D

X:E

Forwardingboundflows

Host ID: B

Object Switch

Host ID: A

XX B

C SRC

DST

C SRC

X DST

A p

A p

C

X SRC

DST A p

B q

Flow Switch

C

X SRC

DST A p

B q

fd=9 oid=X,C

X

C SRC

DST B q

A p

fd=5 oid=C,X

B q

q

_:aOS

A:aAB:aB

D:aD

E:aE

Flow ID

Obj ID Host ID Sock ID Header

  ServicesshouldcontrolinstanceselecNon  Flowaffinity,yetnoper‐flownetworkstate  FlowsidenNfiedbyeachendpoint

Page 27: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

X

X

Host ID: B

Data Center 2 Data Center 1

X 2

C 1 A p SRC

DST X 2 B

C 1 A p SRC

DST

C 1 A p

X 2 B q SRC

DST

X

C 1 A p SRC

X DST

Host ID: A

C:A

X:2

_:aOS2

2B:aB

2D:aD

2E:aE

1:a1

_:aOS1

1A:aA2:a2

Page 28: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

X

X

Host ID: B

Data Center 2 Data Center 1

X 2

C 1 A p SRC

DST X 2 B

C 1 A p SRC

DST

C 1 A p

X 2 B q SRC

DST

X

C 1 A p SRC

X DST

Host ID: A

C:A

X:2

_:aOS2

2B:aB

2D:aD

2E:aE

1:a1

_:aOS1

1A:aA2:a2

Page 29: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

X

X

Host ID: B

Data Center 2 Data Center 1

X 2 B

C 1 A p SRC

DST

C 1 A p

X 2 B q SRC

DST

X

C 1 A p SRC

X DST

Host ID: A

X 2

C 1 A p SRC

DST

Flow ID

Obj ID DC ID Host ID Sock ID Header

C:A

X:2

_:aOS2

2B:aB

2D:aD

2E:aE

1:a1

_:aOS1

1A:aA2:a2

Page 30: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Forwardingboundflows

X

X

Host ID: B

Data Center 2 Data Center 1

X 2 B

C 1 A p SRC

DST

C 1 A p

X 2 B q SRC

DST

X

C 1 A p SRC

X DST

Host ID: A

X 2

C 1 A p SRC

DST

C:A

X:2

_:aOS2

2B:aB

2D:aD

2E:aE

1:a1

_:aOS1

1A:aA2:a2

  ApplicaNonsnamelogicalflows,notphysicallocaNons

Page 31: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Labelmanagementbyend‐host

SocketState

LocalObjectID

LocalFlowID

RemoteObjectID

RemoteFlowID

AcceptedSocket

open C 1:A:p X 2:B:q No

bound C 1:A:r Y −− No

unbound E −− Z −− No

IP:ApplicaNonseesnetwork,networkdoesn’tseeappSCAFFOLD:Networkseesapp,appdoesn’tseenetwork

FileDescriptor ObjectIDs

5 CX

9 CX

47 CY

X 2 B q

C 1 A p SRC

DST User-Space Application

SCAFFOLD Socket State

Page 32: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Labelmanagementbyend‐host

SocketState

LocalObjectID

LocalFlowID

RemoteObjectID

RemoteFlowID

AcceptedSocket

open C 1:A:p X 2:B:q No

bound C 1:A:r Y −− No

unbound E −− Z −− No

IP:ApplicaNonseesnetwork,networkdoesn’tseeappSCAFFOLD:Networkseesapp,appdoesn’tseenetwork

FileDescriptor ObjectIDs

5 CX

9 CX

47 CY

X 2 B q

C 1 A p SRC

DST User-Space Application

SCAFFOLD Socket State

4:A:p 2:D:t3:D:q

4:A:r

Page 33: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

MigraNonandFailover

•  PlannedmigraNonorphysicalmobility–  In‐bandsignaling:DesNnaNonreplacesflowidoldwithflowidnew

•  Unplannedfailover–  FailureofdesNnaNoncausesremovalfromflowswitch

–  Flowswitchlookupfails,flowre‐resolvedatobjectswitch–  SenderagainlearnsnewlocaNon(flowid)viain‐bandsignaling

•  Mayrequirenew3‐wayhandshakeforrenegoNaNon

Page 34: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

NetworkManagementAPIs

X

Controller

X

X

•  Flowswitch–  FlowTable:MapFlowIDto

networkaddroroutport

•  Objectswitch–  ObjectTable:MapObjIDto

FlowIDlabel

–  Typicallycolocatesflowtable

•  End‐host–  Join/leavenetwork–  Register/unregisterobjectIDs–  Migrate/redirectflowids

•  NetworkController

Page 35: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

NetworkManagementAPIs

X

Controller

X

X

•  Flowswitch–  FlowTable:MapFlowIDto

networkaddroroutport

•  Objectswitch–  ObjectTable:MapObjIDto

FlowIDlabel

–  Typicallycolocatesflowtable

•  End‐host–  Join/leavenetwork–  Register/unregisterobjectIDs–  Migrate/redirectflowids

•  NetworkController

Page 36: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

NetworkManagementAPIs•  Flowswitch

–  FlowTable:MapFlowIDtonetworkaddroroutport

•  Objectswitch–  ObjectTable:MapObjIDto

FlowIDlabel

–  Typicallycolocatesflowtable

•  End‐host–  Join/leavenetwork–  Register/unregisterobjectIDs–  Migrate/redirectflowids

•  NetworkController

X

Controller

X

X

reg

join

Page 37: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

IncrementalDeploymentModel

X

DC 2 DC 1

Backbone

Internet

X

Legacy Clients

Y

X

YY

Page 38: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Legacy Clients

IncrementalDeploymentModel

X

DC 2 DC 1

X

YY

X

AnycastedIPPrefix(BGP)

AnycastSubprefix1 Anycast

Subprefix2

IPforwarding

YMACforwarding

Page 39: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

CurrentimplementaNon•  BackwardscompaNblewith

legacyIPv4networks–  SCAFFOLDpacketformat:

•  ObjectIDinUDPport•  FlowidinIPv4addr

•  Flowswitch–  OpenFlowso_wareswitch–  Hit:LPMonflowID

–  Miss:EGREtuntoobjswitch

•  Objectswitch–  OpenFlowso_wareswitch–  Hit:ExactmatchonobjID

–  Miss:SendpackettoController

X

Controller

X

X

reg

join

Ingress Proxy

Page 40: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

CurrentimplementaNon•  End‐host

–  NewSCAFFOLDsocketlibrary–  User‐levelClickprocess

•  Networkandtransport•  Comm.withController

–  TUN/TAPdriverandin‐kernelClickforpacketintercepNon

•  NetworkController–  NOX–  NewhostAPI(viapacket_in)–  Manageflow/objectswitches

X

Controller

X

X

reg

join

Ingress Proxy

Page 41: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

OpenflowDesiderata

•  Matchonone‐of‐Nentries(e.g.,hashing)

•  MulNcast(e.g.,forplannedredirect)

•  PacketencapsulaNon(forforwardingtoobjswitch)–  UnnecessaryifSCAFFOLD‐onlynetwork

•  Moreflexibility/spaceforheaderencoding/rewriNng–  Currently216objectsandfixed28DCs,28hosts,216sockets–  IPv6supportwouldprovidemuchgreatlyscalability–  UlNmatelyprefertodefineownheaderformat

Page 42: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

SCAFFOLDonend‐hosts:

NewsocketAPIandnetworkstack

Page 43: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

+------------------+ | Scafd Daemon | +----------+ | | | | AF_UNIX socket | Event-driven | | SF app | <------------------> | SFNet element | | | Scafd protocol | | +----------+ +--------+---------+ |Control | Sock | | table | table | +--+-----+-----+---+ Change | ^ kernel | | SF packets send/recv state | +---------------+ | | IP Frag/Reass | | +---------------+ | | V V +-------+ +-----+ User |ioctl()| | TUN | ---------------------------------+-------+---+-----+--- Kernel | +-------<------------->-------// more ethX | +----------+-----------+ | | +------+----+ +------+------+ | | | | non-SF | SFEthOut | | SFEthIn +---------> Linux Stack | | | +-----+ +-+-----+---+ +-------+-----+ | | | ^ ^ ARP | | Eth+SF | Eth+SF | ARP V V pkts | pkts | | +------------------------------+ | +--| eth device |------+ +----+--------+--------+-------+ ^ ^ | V V V flow-switch non-SF L2 bcast

SocketArchitecture

Page 44: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

+------------------+ | Scafd Daemon | +----------+ | | | | AF_UNIX socket | Event-driven | | SF app | <------------------> | SFNet element | | | Scafd protocol | | +----------+ +--------+---------+ |Control | Sock | | table | table | +--+-----+-----+---+

SocketArchitecturetypedef struct { uint16_t v; } sf_obj_t;

struct sockaddr_sf { uint16_t family; sf_obj_t local_obj_id; sf_obj_t remote_obj_id; };

int socket_sf (int domain, int type, int protocol)

int bind_sf (int s, const sockaddr *, socklen_t)

–  Blockingcall,returnsa_erregistercallb/wscafdandController

int connect_sf (int s, const sockaddr *, socklen_t, sf_err_t &) –  Bothblockingandnon‐blockingversions(workswithselect)–  Returnssuccessa_er3‐wayhandshakewithremotesockaddr

Page 45: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

+------------------+ | Scafd Daemon | +----------+ | | | | AF_UNIX socket | Event-driven | | SF app | <------------------> | SFNet element | | | Scafd protocol | | +----------+ +--------+---------+ |Control | Sock | | table | table | +--+-----+-----+---+

SocketArchitecturetypedef struct { uint16_t v; } sf_obj_t;

struct sockaddr_sf { uint16_t family; sf_obj_t local_obj_id; sf_obj_t remote_obj_id; };

int listen_sf (int s, int backlog, sf_err_t &) int listen_sf (int s, const sockaddr *, socklen_t, int backlog, sf_err_t &)

–  LarerversionallowssinglesockettolistenonmulNpleobjects

–  Resultsinaregistercallb/wscafdandController

int accept_sf (int s, sockaddr *, socklen_t, sf_err_t &)

–  Returnsboundsocket(sender/receiverflowidsestablished)

Page 46: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

+------------------+ | Scafd Daemon | +----------+ | | | | AF_UNIX socket | Event-driven | | SF app | <------------------> | SFNet element | | | Scafd protocol | | +----------+ +--------+---------+ |Control | Sock | | table | table | +--+-----+-----+---+

SocketArchitecturetypedef struct { uint16_t v; } sf_obj_t;

struct sockaddr_sf { uint16_t family; sf_obj_t local_obj_id; sf_obj_t remote_obj_id; };

ssize_t send_sf (int s, const void *, size_t, int flags, &) ssize_t sendto_sf (int s, const void *, size_t, int flags, const sockaddr *, socklen_t, sf_err_t &)

ssize_t recv_sf (int s, void *, size_t, int flags, &) ssize_t recvfrom_sf (int s, void *, size_t, int flags, struct sockaddr *, socklen_t *, sf_err_t &)

int close_sf (int s, sf_err_t &);

–  Connectedsocketsexecute3‐wayhandshake–  Bound/listeningsocketsunregisterallobjIDswithController

Page 47: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

ApplicaNons

•  Replicatedwebservices–  Fault‐tolerantfailoverforunmodifiedservices

•  Key‐valuestorew/olayer‐7switch(memcached,CRAQ)

•  Layer‐3VMmigraNon•  Wide‐areacontentdistribuNonnetwork•  SubstrateforVirtualWorlds(Meru)

•  Currentports–  Iperf–  TFTP(FTPoverUDP)–  NFSv3(inprogress)

Page 48: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Unresolvedforclean‐slatedesign

•  DiscoveryandecosystemofauthoritaNveobjectswitches

•  Security–  Wide‐arearouNngannouncements

–  In‐bandsignalingofflowidupdates

•  Flexibilityandextensibility–  Useforfine‐grain,ephemeralobjID’s(CCN)

–  Revisitstream‐orientedappsasself‐descripNvedatagrams

–  SupplantallIPandhost‐to‐hostcommunicaNon?“Host”asserviceIDwithsinglelocaNon?

Page 49: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

RelatedWork

•  Addressing:SeparaNnglocaNonfromidenNty–  SFR,LNA,DOA,LISP;ROFL,SEATTLE–  Triad,DONA,CCN–  Portland,VL2,SPAIN

•  MigraNonandMobility– MobileIP,i3,LISP,TCPMigrate,SCTP;RTP,Trickles

•  ReplicaNonandIPanycast–  SFR,DOA;4D‐likecontrol;PIAS,GIA

•  RouNngoncoarsegrainidenNfiers–  AIP,NIRA

Page 50: Building a service‐centric network with SCAFFOLDnetseminar.stanford.edu/past_seminars/seminars/freedman-scaffold.… · To a service‐centric architecture ... single administrave

Buildingaservice‐centricnetworkwithSCAFFOLD

MichaelJ.Freedman

PrincetonUniversity

withPremGopalan,StevenKo,JenRexford,andDavidShue

*Service‐CentricArchitectureForFlexibleObjectLocalizaNonandDistribuNon

*