serval : an end-host stack for service-centric networking
DESCRIPTION
serval-arch.org. Serval : An End-Host Stack for Service-Centric Networking. Erik Nordström D avid Shue , Prem Gopalan , Rob Kiefer, Mat Arye , Steven Ko , Jen Rexford, Mike Freedman Princeton University. The Internet of the 1970s. Network designed for accessing hosts. Killer Apps: - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/1.jpg)
Serval: An End-Host Stack for Service-Centric Networking
Erik NordströmDavid Shue, Prem Gopalan, Rob Kiefer,
Mat Arye, Steven Ko, Jen Rexford, Mike Freedman
Princeton University
serval-arch.org
![Page 2: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/2.jpg)
The Internet of the 1970s
Network designed for accessing hosts
Killer Apps: telnet, ftp
IMP 1UCLA
IMP 4Utah
IMP 2SRI
IMP 3UCSB
![Page 3: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/3.jpg)
Users agnostic of actual service location and host
The Internet of the 2000s
Datacenter
Datacenter
![Page 4: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/4.jpg)
What does Service Access Involve?
1. Locate a nearby service datacenter– Map service name to location
2. Connect to service – Establish data flow to instance– Load balance between pool of replicas
3. Maintain connectivity to service– Migrate between interfaces and networks
![Page 5: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/5.jpg)
Today’s (Overloaded) Abstractions
• Service is IP + port– Exposes location– Specifies app. protocol– One service per IP
• Flow is “five tuple”– Binds flow to interface and
location– Cannot migrate between
interfaces or networks
TCP/IP
demux (IP + port)
Network
connect (IP + port)
Transport
Application
![Page 6: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/6.jpg)
CellularProvider
EnterpriseNetwork
4G
TransitProvider
Service Access Today
Datacenter
Datacenter
![Page 7: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/7.jpg)
CellularProvider
EnterpriseNetwork
4G
TransitProvider
Finding a Service Location
Load-BalancedWeb Service
• DNS binds service to location at client (early binding)– Caching and ignoring TTL exacerbates the problem– Slow failover when instance or load balancer fail
DNS
![Page 8: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/8.jpg)
CellularProvider
EnterpriseNetwork
4G
TransitProvider
Connecting to Service
Load-BalancedWeb Service
• Datacenter LB maps single IP to multiple servers– Must do this for every packet on path -> fate sharing– Increases complexity and cost
![Page 9: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/9.jpg)
CellularProvider
EnterpriseNetwork
4G
TransitProvider
Maintaining Connectivity to Service
VM Migration
Datacenter
• Migrate VMs to balance load in the cloud– Requires flat addressing or tunneling within datacenter
![Page 10: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/10.jpg)
CellularProvider
EnterpriseNetwork
4G
Maintaining Connectivity to Service
Datacenter
Datacenter
PhysicalMobility
Multi-Homing
TransitProvider
• Flows break when switching networks or interfaces
![Page 11: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/11.jpg)
Contributions
• Naming abstractions– Services, flows– Clean role separation in the network stack
• Software architecture for services (Serval)– Service-level control/data plane split– Service-level events
![Page 12: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/12.jpg)
Naming Abstractions
![Page 13: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/13.jpg)
Today’s (Overloaded) Abstractions
TCP/IP
demux (IP + port)
Networkforward (IP)
connect (IP + port)
Transport
Application
![Page 14: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/14.jpg)
ServiceAccess
Serval Abstractions
• Serval cleans the slate– (But not completely)
• Network layer unmodified!
• Service Access Layer (SAL)– Connects to services– Maintains connectivity
Transport
Application
Networkforward (IP)
Serval
![Page 15: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/15.jpg)
Serval Abstractions
• Service = ServiceID– Group of processes with
identical functionality
• Flow = FlowID– Invariant demux key– Host-local, ephemeral
• Location = IP address– Location, interface– Can change dynamically
connect (serviceID)
Transport
Application
demux ( ) serviceID
Networkforward (IP)
ServiceAccess flowID
Serval
![Page 16: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/16.jpg)
A Clean Role Separation in the Stack • What you access (serviceID), over which flows
(flowIDs), and at which service instance (IP address)
TCP/IP Serval
demux (IP + port)
forward (IP) forward (IP)
connect (IP + port) connect (serviceID)
demux ( ) serviceID flowID
Transport
Network
Application
ServiceAccess
![Page 17: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/17.jpg)
Service Names (ServiceIDs)
• ServiceIDs allocated in blocks– Prefix ensures global uniqueness– Prefix-based aggregation and LPM
• A ServiceID late binds to service instance– ServiceID in first packet of connection– Service-level routing and forwarding
Provider prefix Provider-specific Self-certifying
![Page 18: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/18.jpg)
A Service-Aware Network Stack
connect(sock, serviceID)bind(sock, serviceID)listen(sock)
Network stack must resolve service to instance for client
Network stack must advertise service for
server
![Page 19: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/19.jpg)
Software Architecture
![Page 20: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/20.jpg)
Service Controller
Serval End-host Architecture
ServiceID Action Sock/AddrFlowID Socket
Application
Dest Address Next Hop
IP Forwarding Table
Flow Table Service Table
ServiceControl API
![Page 21: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/21.jpg)
Data Plane: The Service Table
ServiceID Action Rule State
Prefix A FORWARD Send to addr A1
Prefix B FORWARD Send to [A2, A3, A4]
Prefix C DEMUX Send to listening sock s
Prefix D DELAY Queue and notify service controller
Prefix E DROP
default FORWARD Send to A5
![Page 22: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/22.jpg)
Data Plane: The Service Table
ServiceID Action Rule State
Prefix A FORWARD Send to addr A1
Prefix B FORWARD Send to [A2, A3, A4]
Prefix C DEMUX Send to listening sock s
Prefix D DELAY Queue and notify service controller
Prefix E DROP
default FORWARD Send to A5
![Page 23: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/23.jpg)
Data Plane: The Service Table
ServiceID Action Rule State
Prefix A FORWARD Send to addr A1
Prefix B FORWARD Send to [A2, A3, A4]
Prefix C DEMUX Send to listening sock s
Prefix D DELAY Queue and notify service controller
Prefix E DROP
default FORWARD Send to A5
![Page 24: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/24.jpg)
Data Plane: The Service Table
ServiceID Action Rule State
Prefix A FORWARD Send to addr A1
Prefix B FORWARD Send to [A2, A3, A4]
Prefix C DEMUX Send to listening sock s
Prefix D DELAY Queue and notify service controller
Prefix E DROP
default FORWARD Send to A5
![Page 25: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/25.jpg)
Data Plane: The Service Table
ServiceID Action Rule State
Prefix A FORWARD Send to addr A1
Prefix B FORWARD Send to [A2, A3, A4]
Prefix C DEMUX Send to listening sock s
Prefix D DELAY Queue and notify service controller
Prefix E DROP
default FORWARD Send to A5
![Page 26: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/26.jpg)
Internet
Service Access with Serval
X
X
a
cd
eDatacenter
ServiceRouter
![Page 27: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/27.jpg)
Adding a Service Instance
ServiceID Action Sock/AddrFlowID Socket
ApplicationService
Controller
S bind(X)listen()
Add DEMUX rule
X DMX s
RegisterService X
![Page 28: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/28.jpg)
Removing a Service Instance
ServiceID Action Sock/AddrFlowID Socket
ApplicationService
Controller
S close()
Remove DEMUX rule
X DMX s
UnregisterService X
![Page 29: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/29.jpg)
Control Plane: The Service Controller
Service Controller
Service X@ address a
Service Controller
DNS
![Page 30: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/30.jpg)
Control Plane: The Service Controller
ServiceID Action Sock/AddrFlowID Socket
Service Controller
Add FORWARD rule
X FWD d
Service X@ address d
![Page 31: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/31.jpg)
Internet
Service Access with Serval
X
X
a
cd
eDatacenter
X d,eX@d
X@e
X/24@cX/24 c
ServiceRouter
bind(X)
bind(X)
![Page 32: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/32.jpg)
Service Controller
Connecting to Service X
ServiceID Action Sock/AddrFlowID Socket
Application
S socket()
X FWD c2 s
Allocates local flowID
a
![Page 33: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/33.jpg)
Connecting to Service X
ServiceID Action Sock/AddrFlowID Socket
Application
S connect(X)
X FWD c2 s
aa 2 SYNc - X
To c
![Page 34: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/34.jpg)
Load Balancing in Service Router
ServiceID Action Sock/AddrFlowID Socket
X FWD d,e
fcTo eFrom a
a 2 SYNe - Xa 2 SYNc - X
![Page 35: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/35.jpg)
Service Instance Providing Service X
ServiceID Action Sock/AddrFlowID Socket
Application
X DMX s
a 2 SYNe - X
S
eFrom a
![Page 36: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/36.jpg)
Service Instance Providing Service X
ServiceID Action Sock/AddrFlowID Socket
Application
accept()
X DMX s3 sc
SSc
eTo a
e 3 SYN-ACKa 2
![Page 37: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/37.jpg)
Internet
Service Access with Serval
X
X
a
cd
eDatacenter
a SYNc X
e SYN-ACKa
a SYNe X
X d,e
e dataa
ServiceRouter
![Page 38: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/38.jpg)
Ad hoc Service Discovery
ServiceID Action Rule State
default FORWARD “broadcast”
X
X
connect(X)
a
c
b
Accessing service X
a SYN* X
bSYN-ACK
a
cSYN-ACK
a
![Page 39: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/39.jpg)
What does Service Access Involve?
1. Locating a nearby service datacenter– Map service name to location
2. Connecting to service – Establish data flow to instance– Load balance between pool of replicas
3. Maintaining connectivity to service– Migrate between interfaces and networks
![Page 40: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/40.jpg)
Migration of Flows
sC sS
fS1fC1 a1
a2
a3
Host C Host Sa4
RSYN
RSYN-ACK
ACK
Migrate flowa1 -> a2
![Page 41: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/41.jpg)
Multipath with Multiple Subflows
sC sS
fS1fC1
fS2fC2
a1
a2
a3
Host C Host Sa4
SYN
SYN-ACK
ACK
Add flowa2 <-> a4
![Page 42: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/42.jpg)
Prototype• End-host network stack (28,000 LOC)– Linux kernel module – BSD sockets with AF_SERVAL protocol family– AF_INET sockets can be accessed simultaneously
• Legacy middleboxes / NATs handled via encap.
• Translator for incremental deployment– Unmodified apps and end-hosts– Serval apps with unmodified services
![Page 43: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/43.jpg)
Incremental Deployment
TranslatorApp
TCP/IP Serval
![Page 44: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/44.jpg)
Incremental Deployment
TCP/IP
Translator
App
ServalTCP/IP
Translator
![Page 45: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/45.jpg)
Use of Migration on ClientsWiFiCellular
Single Serval TCP connection that never breaks
Saves > 900 MB cellular data per month
![Page 46: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/46.jpg)
Uses of Migration on Servers
Load balancing across NICs
Both flows use eth0
Flow 1moved to eth1
![Page 47: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/47.jpg)
Uses of Migration on ServersMigrating VMs across subnets
VM changes subnet, acquiring
new address
VM migrates flow to new
address
![Page 48: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/48.jpg)
Competitive Performance
Mean (Mbit/s)TCP/IP 934.5Serval 933.8Translator 932.1
TCP Throughput
Mbit/s Kpkt/sIP forwarding 987 388.4Serval 872 142.8
Service Table Throughput
![Page 49: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/49.jpg)
Applications are Easy to PortApplication Codebase Changes
Iperf 5,934 240TFTP 3,452 90wget 87,164 207Elinks browser 115,224 234Firefox browser 4,615,324 70Mongoose webserver 8,831 425Memcached server 8,329 159Memcached client 12,503 184
![Page 50: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/50.jpg)
SDN to the Edges!• SDN about network-wide visibility and control– Today’s “SDN” (OpenFlow) primarily focuses on
layer-2 / layer-3 abstractions
• Serval extends SDN model to the network edge– New programming abstractions for services, flows,
hosts, and interfaces– Service-level control/data plane split
• Joint service and network control
![Page 51: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/51.jpg)
Summary of Contributions
• New naming abstractions– Clean role separation in the stack– Makes it easier to build and manage services
• Software architecture for services– Flexible service resolution and discovery– Maintains robust connectivity– Joint service and network management
![Page 52: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/52.jpg)
Papers, demos, source code (GPL) online
serval-arch.org
@servalnetwork
![Page 53: Serval : An End-Host Stack for Service-Centric Networking](https://reader035.vdocuments.us/reader035/viewer/2022062222/568163c2550346895dd4e61b/html5/thumbnails/53.jpg)
Related Work
• Locator/identifier separation– HIP, i3, HAIR, DOA, LISP, LNA
• Data-oriented networking– DONA, CCNx
• Support for mobility and migration– TCP Migrate, Mobile IP, ROAM
• Multipath and multi-homing– MPTCP, SCTP, Shim6