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 ¡ Killer ¡Apps: ¡ ¡ ¡ telnet, ¡Sp ¡ ¡ IMP ¡2 ¡ IMP ¡4 ¡ SRI ¡ Utah ¡ IMP ¡3 ¡ UCSB ¡ IMP ¡1 ¡ UCLA ¡ Network ¡designed ¡for ¡accessing ¡hosts ¡
The ¡Internet ¡of ¡the ¡2000s ¡ Datacenter ¡ Datacenter ¡ Users ¡agnosYc ¡of ¡actual ¡service ¡locaYon ¡and ¡host ¡
What ¡does ¡Service ¡Access ¡Involve? ¡ 1. Locate ¡a ¡nearby ¡service ¡datacenter ¡ – Map ¡ service ¡ name ¡to ¡locaYon ¡ ¡ 2. Connect ¡to ¡service ¡ ¡ – Establish ¡data ¡ flow ¡to ¡instance ¡ – Load ¡balance ¡between ¡pool ¡of ¡replicas ¡ 3. Maintain ¡connecYvity ¡to ¡service ¡ – Migrate ¡between ¡interfaces ¡and ¡networks ¡
Today’s ¡(Overloaded) ¡AbstracYons ¡ • Service ¡is ¡IP ¡+ ¡port ¡ – Exposes ¡locaYon ¡ TCP/IP ¡ – Specifies ¡app. ¡protocol ¡ ApplicaYon ¡ connect ¡(IP ¡+ ¡port) ¡ – One ¡service ¡per ¡IP ¡ demux ¡(IP ¡+ ¡port) ¡ Transport ¡ • Flow ¡is ¡“five ¡tuple” ¡ Network ¡ – Binds ¡flow ¡to ¡interface ¡ and ¡locaYon ¡ – Cannot ¡migrate ¡between ¡ interfaces ¡or ¡networks ¡
Service ¡Access ¡Today ¡ Datacenter ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ 4G ¡ Cellular ¡ Datacenter ¡ Provider ¡
Finding ¡a ¡Service ¡LocaYon ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ DNS ¡ 4G ¡ Cellular ¡ Provider ¡ Load-‑Balanced ¡ Web ¡Service ¡ • DNS ¡binds ¡service ¡to ¡locaYon ¡at ¡client ¡( early ¡binding ) ¡ – Caching ¡and ¡ignoring ¡TTL ¡exacerbates ¡the ¡problem ¡ – Slow ¡failover ¡when ¡instance ¡or ¡load ¡balancer ¡fail ¡
ConnecYng ¡to ¡Service ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ 4G ¡ Cellular ¡ Provider ¡ Load-‑Balanced ¡ Web ¡Service ¡ • Datacenter ¡LB ¡maps ¡single ¡IP ¡to ¡mulYple ¡servers ¡ – Must ¡do ¡this ¡for ¡every ¡packet ¡on ¡path ¡-‑> ¡fate ¡sharing ¡ – Increases ¡complexity ¡and ¡cost ¡
Maintaining ¡ConnecYvity ¡to ¡Service ¡ VM ¡ ¡ Enterprise ¡ MigraYon ¡ Network ¡ Transit ¡ Provider ¡ 4G ¡ Cellular ¡ Datacenter ¡ Provider ¡ • Migrate ¡VMs ¡to ¡balance ¡load ¡in ¡the ¡cloud ¡ – Requires ¡flat ¡addressing ¡or ¡tunneling ¡within ¡datacenter ¡
Maintaining ¡ConnecYvity ¡to ¡Service ¡ Datacenter ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ MulY-‑ ¡ Homing ¡ 4G ¡ Cellular ¡ Datacenter ¡ Provider ¡ Physical ¡ Mobility ¡ • Flows ¡break ¡when ¡switching ¡networks ¡or ¡interfaces ¡
ContribuYons ¡ ¡ • Naming ¡abstracYons ¡ – Services, ¡flows ¡ – Clean ¡role ¡separaYon ¡in ¡the ¡network ¡stack ¡ ¡ • SoSware ¡architecture ¡for ¡services ¡(Serval) ¡ – Service-‑level ¡control/data ¡plane ¡split ¡ – Service-‑level ¡events ¡
Naming ¡AbstracYons ¡
Today’s ¡(Overloaded) ¡AbstracYons ¡ TCP/IP ¡ ApplicaYon ¡ connect ¡(IP ¡+ ¡port) ¡ demux ¡(IP ¡+ ¡port) ¡ Transport ¡ forward ¡(IP) ¡ Network ¡
Serval ¡AbstracYons ¡ • Serval ¡cleans ¡the ¡slate ¡ Serval ¡ – (But ¡not ¡completely) ¡ ApplicaYon ¡ • Network ¡layer ¡unmodified! ¡ Transport ¡ • Service ¡Access ¡Layer ¡(SAL) ¡ Service ¡ – Connects ¡to ¡services ¡ Access ¡ – Maintains ¡connecYvity ¡ ¡ forward ¡(IP) ¡ Network ¡
Serval ¡AbstracYons ¡ • Service ¡= ¡ServiceID ¡ – Group ¡of ¡processes ¡with ¡ Serval ¡ idenYcal ¡funcYonality ¡ ApplicaYon ¡ connect ¡(serviceID) ¡ • Flow ¡= ¡FlowID ¡ Transport ¡ – Invariant ¡demux ¡key ¡ ¡ ¡ serviceID ¡ Service ¡ – Host-‑local, ¡ephemeral ¡ demux ¡( ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡) ¡ ¡ ¡ flowID ¡ Access ¡ • LocaYon ¡= ¡IP ¡address ¡ forward ¡(IP) ¡ Network ¡ – LocaYon, ¡interface ¡ – Can ¡change ¡dynamically ¡
A ¡Clean ¡Role ¡SeparaYon ¡in ¡the ¡Stack ¡ ¡ • What ¡you ¡access ¡( serviceID ), ¡over ¡which ¡flows ¡( flowIDs ), ¡ and ¡at ¡which ¡service ¡instance ¡( IP ¡address ) ¡ TCP/IP ¡ Serval ¡ ApplicaYon ¡ connect ¡(IP ¡+ ¡port) ¡ connect ¡(serviceID) ¡ Transport ¡ demux ¡(IP ¡+ ¡port) ¡ Service ¡ ¡ ¡ serviceID ¡ demux ¡( ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡) ¡ Access ¡ ¡ ¡flowID ¡ Network ¡ forward ¡(IP) ¡ forward ¡(IP) ¡
Service ¡Names ¡(ServiceIDs) ¡ Provider ¡prefix ¡ Provider-‑specific ¡ Self-‑cerYfying ¡ • ServiceIDs ¡allocated ¡in ¡blocks ¡ – Prefix ¡ensures ¡global ¡uniqueness ¡ – Prefix-‑based ¡aggregaYon ¡and ¡LPM ¡ • A ¡ServiceID ¡late ¡binds ¡to ¡service ¡instance ¡ – ServiceID ¡in ¡ first ¡packet ¡of ¡connecYon ¡ – Service-‑level ¡rouYng ¡and ¡forwarding ¡
A ¡Service-‑Aware ¡Network ¡Stack ¡ bind(sock, ¡ serviceID ) ¡ listen(sock) ¡ connect(sock, ¡ serviceID ) ¡ Network ¡stack ¡must ¡ Network ¡stack ¡must ¡ resolve ¡ service ¡to ¡ adver/se ¡ service ¡for ¡ instance ¡for ¡ client ¡ server ¡
SoSware ¡Architecture ¡
Serval ¡End-‑host ¡Architecture ¡ Service ¡ ApplicaYon ¡ Controller ¡ Service ¡ Control ¡API ¡ FlowID ¡ Socket ¡ ServiceID ¡ Ac;on ¡ Sock/Addr ¡ Flow ¡Table ¡ Service ¡Table ¡ Dest ¡Address ¡ Next ¡Hop ¡ IP ¡Forwarding ¡Table ¡
Data ¡Plane: ¡The ¡Service ¡Table ¡ ServiceID ¡ Ac;on ¡ 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 ¡ Queue ¡and ¡noYfy ¡service ¡ Prefix ¡D ¡ DELAY ¡ controller ¡ Prefix ¡E ¡ DROP ¡ default ¡ FORWARD ¡ Send ¡to ¡A5 ¡
Data ¡Plane: ¡The ¡Service ¡Table ¡ ServiceID ¡ Ac;on ¡ 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 ¡ Queue ¡and ¡noYfy ¡service ¡ Prefix ¡D ¡ DELAY ¡ controller ¡ Prefix ¡E ¡ DROP ¡ default ¡ FORWARD ¡ Send ¡to ¡A5 ¡
Data ¡Plane: ¡The ¡Service ¡Table ¡ ServiceID ¡ Ac;on ¡ 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 ¡ Queue ¡and ¡noYfy ¡service ¡ Prefix ¡D ¡ DELAY ¡ controller ¡ Prefix ¡E ¡ DROP ¡ default ¡ FORWARD ¡ Send ¡to ¡A5 ¡
Data ¡Plane: ¡The ¡Service ¡Table ¡ ServiceID ¡ Ac;on ¡ 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 ¡ Queue ¡and ¡noYfy ¡service ¡ Prefix ¡D ¡ DELAY ¡ controller ¡ Prefix ¡E ¡ DROP ¡ default ¡ FORWARD ¡ Send ¡to ¡A5 ¡
Data ¡Plane: ¡The ¡Service ¡Table ¡ ServiceID ¡ Ac;on ¡ 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 ¡ Queue ¡and ¡noYfy ¡service ¡ Prefix ¡D ¡ DELAY ¡ controller ¡ Prefix ¡E ¡ DROP ¡ default ¡ FORWARD ¡ Send ¡to ¡A5 ¡
Service ¡Access ¡with ¡Serval ¡ X Service ¡ Router ¡ d c X Internet ¡ a e Datacenter ¡
Recommend
More recommend