gaspp a gpu accelerated stateful packet processing
play

GASPP: A GPU-Accelerated Stateful Packet Processing Framework - PowerPoint PPT Presentation

GASPP: A GPU-Accelerated Stateful Packet Processing Framework Giorgos Vasiliadis, FORTH-ICS, Greece Lazaros Koromilas, FORTH-ICS, Greece Michalis Polychronakis,


  1. GASPP: ¡A ¡GPU-­‑Accelerated ¡Stateful ¡ Packet ¡Processing ¡Framework ¡ ¡ Giorgos ¡Vasiliadis, ¡ FORTH-­‑ICS, ¡Greece ¡ Lazaros ¡Koromilas, ¡ FORTH-­‑ICS, ¡Greece ¡ Michalis ¡Polychronakis, ¡ Columbia ¡University, ¡USA ¡ So5ris ¡Ioannidis, ¡ FORTH-­‑ICS, ¡Greece ¡ ¡

  2. Network ¡Packet ¡Processing ¡ • Computa5onally ¡and ¡memory-­‑intensive ¡ ¡ • High ¡levels ¡of ¡data ¡parallelism ¡ – Each ¡packet ¡can ¡be ¡processed ¡in ¡parallel ¡ • Poor ¡temporal ¡locality ¡for ¡data ¡ – Typically, ¡each ¡packet ¡is ¡processed ¡only ¡once ¡

  3. GPU ¡= ¡ G raphics ¡ P rocessing ¡ U nits ¡ • Highly ¡parallel ¡manycore ¡devices ¡ • Hundreds ¡of ¡cores ¡ • High ¡memory ¡bandwidth ¡ • Up ¡to ¡6GB ¡of ¡memory ¡

  4. GPUs ¡for ¡Network ¡Packet ¡Processing ¡ • Gnort ¡[RAID’08] ¡ • PacketShader ¡[SIGCOMM’10] ¡ • SSLShader ¡[NSDI’11] ¡ ¡ • MIDeA ¡[CCS’11], ¡Kargus ¡[CCS’12] ¡ • … ¡

  5. GPUs ¡for ¡Network ¡Packet ¡Processing ¡ • Gnort ¡[RAID’08] ¡ Independent/Monolithic ¡Designs ¡ • PacketShader ¡[SIGCOMM’10] ¡ ¡ 1. A ¡lot ¡of ¡CPU-­‑side ¡code ¡even ¡for ¡simple ¡apps ¡ • SSLShader ¡[NSDI’11] ¡ ¡ 2. Explicit ¡batching ¡ 3. Explicit ¡data ¡copies ¡and ¡PCIe ¡transfers ¡ • MIDeA ¡[CCS’11], ¡Kargus ¡[CCS’12] ¡ • … ¡

  6. Need ¡a ¡ framework ¡for ¡developing ¡ GPU ¡ accelerated ¡ packet ¡processing ¡ applica5ons ¡

  7. GASPP ¡Framework ¡ AES ¡ Regex ¡Match ¡ String ¡Match ¡ Firewall ¡ TCP ¡Flow ¡State ¡ Packet ¡ Management ¡ Reordering ¡ Packet ¡Scheduling ¡ Packet ¡Decoding ¡

  8. GASPP ¡Framework ¡ • Fast ¡user-­‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡

  9. GASPP ¡Framework ¡ • Fast ¡user-­‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡

  10. Fast ¡user-­‑space ¡packet ¡capturing ¡ Main Memory Main Memory DMA GPU Buffer DMA NIC GPU CPU Buffer DMA NIC Buffer Use ¡a ¡single ¡user-­‑space ¡buffer ¡ Stage ¡packets ¡back-­‑to-­‑back ¡to ¡ between ¡the ¡NIC ¡and ¡the ¡GPU ¡ a ¡separate ¡buffer ¡

  11. Fast ¡user-­‑space ¡packet ¡capturing ¡ Main Memory Main Memory DMA GPU Buffer DMA NIC GPU CPU Buffer DMA NIC Buffer Packets ¡size ¡ Gbit/s ¡ Packets ¡size ¡ Gbit/s ¡ (#bytes) ¡ (#bytes) ¡ 64 ¡ 2.06 ¡ 64 ¡ 13.76 ¡ 128 ¡ 4.03 ¡ 128 ¡ 18.21 ¡ 256 ¡ 8.07 ¡ 256 ¡ 20.53 ¡ > � 512 ¡ 16.13 ¡ 512 ¡ 19.21 ¡ 1024 ¡ 32.26 ¡ 1024 ¡ 19.24 ¡ 1518 ¡ 47.83 ¡ 1518 ¡ 20.04 ¡

  12. Fast ¡user-­‑space ¡packet ¡capturing ¡ Main Memory Main Memory DMA GPU Buffer DMA NIC GPU CPU Buffer DMA NIC Buffer Packets ¡size ¡ Gbit/s ¡ Packets ¡size ¡ Gbit/s ¡ (#bytes) ¡ (#bytes) ¡ < � 64 ¡ 2.06 ¡ 64 ¡ 13.76 ¡ 128 ¡ 4.03 ¡ 128 ¡ 18.21 ¡ 256 ¡ 8.07 ¡ 256 ¡ 20.53 ¡ 512 ¡ 16.13 ¡ 512 ¡ 19.21 ¡ 1024 ¡ 32.26 ¡ 1024 ¡ 19.24 ¡ 1518 ¡ 47.83 ¡ 1518 ¡ 20.04 ¡

  13. Why ¡staging ¡is ¡be_er ¡than ¡zero-­‑copy ¡ (for ¡small ¡packets) ¡ 0 ¡ 1536 ¡ NIC’s ¡ Packet ¡ Buffer: ¡ ¡ Staging ¡buffer: ¡ Be1er ¡space ¡u6liza6on ¡=> ¡No ¡redundant ¡transfers ¡

  14. Selec5ve ¡scheme ¡ Main Memory Main Memory DMA GPU Buffer DMA NIC GPU CPU Buffer DMA NIC Buffer • Packets ¡are ¡are ¡ copied ¡back-­‑to-­‑back ¡ to ¡a ¡separate ¡ buffer, ¡if ¡the ¡buffer ¡occupancy ¡is ¡sparse ¡ • Otherwise , ¡they ¡are ¡transferred ¡ directly ¡to ¡the ¡GPU ¡

  15. GASPP ¡Framework ¡ • Fast ¡user-­‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡

  16. Modular ¡and ¡Flexible ¡ • Basic ¡abstrac5on ¡of ¡processing: ¡``modules’’ ¡ – processPacket(packet){ ... } • Modules ¡are ¡executed ¡sequen5ally ¡or ¡in ¡ parallel ¡ processPacket(…) TX ¡ RX ¡ processPacket(…) processPacket(…) Module ¡1: ¡ Module ¡2: ¡ IP-­‑learn ¡ Module ¡3: ¡ Content ¡ Encryption ¡ Inspection ¡

  17. Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡

  18. Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ RX ¡ batch ¡

  19. Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡

  20. Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡

  21. Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡ copy ¡ to ¡ CPU ¡ TX ¡batch ¡

  22. GASPP ¡Framework ¡ • Fast ¡user-­‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡

  23. S ingle ¡ I nstruc5on, ¡ M ul5ple ¡ T hreads ¡ SIMT ¡group ¡ (warp) ¡ • Threads ¡within ¡the ¡same ¡ warp ¡have ¡to ¡execute ¡ the ¡same ¡instruc5ons ¡ • Great ¡for ¡regular ¡computaEons! ¡

  24. Parallelism ¡in ¡packet ¡processing ¡ ¡ Network ¡traffic ¡ Batch ¡Size ¡ (#packets) ¡ • Network ¡packets ¡are ¡processed ¡in ¡batches ¡ – More ¡packets ¡=> ¡more ¡parallelism ¡

  25. Dynamic ¡Irregulari5es ¡ Batch ¡Size ¡ (#packets) ¡ • Received ¡network ¡packets ¡mix ¡is ¡very ¡dynamic ¡ ¡

  26. Dynamic ¡Irregulari5es ¡ Batch ¡Size ¡ (#packets) ¡ • Received ¡network ¡packets ¡mix ¡is ¡very ¡dynamic ¡ ¡ – Different ¡packet ¡lengths ¡

  27. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ Batch ¡Size ¡ (#packets) ¡ • Received ¡network ¡packets ¡mix ¡is ¡very ¡dynamic ¡ ¡ – Different ¡packet ¡lengths ¡ – Divergent ¡parallel ¡module ¡processing ¡

  28. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡

  29. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡

  30. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡

  31. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡

  32. Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡ Low ¡warp ¡occupancy ¡

  33. Packet ¡grouping ¡ Batch ¡Size ¡ Batch ¡Size ¡

  34. Packet ¡grouping ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡ Ø Harmonized ¡execu5on ¡ Ø Symmetric ¡processing ¡

  35. GASPP ¡Framework ¡ • Fast ¡user-­‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡

  36. TCP ¡Flow ¡State ¡Management ¡ Connection Records Rx Rx Connection Record HtoD GPU DtoH HtoD GPU DtoH Hash key : 4 bytes Tx Tx State : 1 byte Seq CLIENT : 4 bytes Seq SERVER : 4 bytes Next : 4 bytes Connection Table • Maintain ¡the ¡state ¡of ¡TCP ¡connec5ons ¡

Recommend


More recommend