serval an end host stack for service centric networking
play

Serval: An End-Host Stack for Service-Centric Networking - PowerPoint PPT Presentation

serval-arch.org Serval: An End-Host Stack for Service-Centric Networking Erik Nordstrm D avid Shue, Prem Gopalan, Rob Kiefer, Mat Arye, Steven Ko,


  1. 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 ¡

  2. 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 ¡

  3. The ¡Internet ¡of ¡the ¡2000s ¡ Datacenter ¡ Datacenter ¡ Users ¡agnosYc ¡of ¡actual ¡service ¡locaYon ¡and ¡host ¡

  4. 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 ¡

  5. 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 ¡

  6. Service ¡Access ¡Today ¡ Datacenter ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ 4G ¡ Cellular ¡ Datacenter ¡ Provider ¡

  7. 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 ¡

  8. 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 ¡

  9. 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 ¡

  10. Maintaining ¡ConnecYvity ¡to ¡Service ¡ Datacenter ¡ Enterprise ¡ Network ¡ Transit ¡ Provider ¡ MulY-­‑ ¡ Homing ¡ 4G ¡ Cellular ¡ Datacenter ¡ Provider ¡ Physical ¡ Mobility ¡ • Flows ¡break ¡when ¡switching ¡networks ¡or ¡interfaces ¡

  11. 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 ¡

  12. Naming ¡AbstracYons ¡

  13. Today’s ¡(Overloaded) ¡AbstracYons ¡ TCP/IP ¡ ApplicaYon ¡ connect ¡(IP ¡+ ¡port) ¡ demux ¡(IP ¡+ ¡port) ¡ Transport ¡ forward ¡(IP) ¡ Network ¡

  14. 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 ¡

  15. 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 ¡

  16. 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) ¡

  17. 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 ¡

  18. 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 ¡

  19. SoSware ¡Architecture ¡

  20. 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 ¡

  21. 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 ¡

  22. 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 ¡

  23. 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 ¡

  24. 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 ¡

  25. 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 ¡

  26. Service ¡Access ¡with ¡Serval ¡ X Service ¡ Router ¡ d c X Internet ¡ a e Datacenter ¡

Recommend


More recommend