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 ¡ ¡
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 ¡
GPU ¡= ¡ G raphics ¡ P rocessing ¡ U nits ¡ • Highly ¡parallel ¡manycore ¡devices ¡ • Hundreds ¡of ¡cores ¡ • High ¡memory ¡bandwidth ¡ • Up ¡to ¡6GB ¡of ¡memory ¡
GPUs ¡for ¡Network ¡Packet ¡Processing ¡ • Gnort ¡[RAID’08] ¡ • PacketShader ¡[SIGCOMM’10] ¡ • SSLShader ¡[NSDI’11] ¡ ¡ • MIDeA ¡[CCS’11], ¡Kargus ¡[CCS’12] ¡ • … ¡
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] ¡ • … ¡
Need ¡a ¡ framework ¡for ¡developing ¡ GPU ¡ accelerated ¡ packet ¡processing ¡ applica5ons ¡
GASPP ¡Framework ¡ AES ¡ Regex ¡Match ¡ String ¡Match ¡ Firewall ¡ TCP ¡Flow ¡State ¡ Packet ¡ Management ¡ Reordering ¡ Packet ¡Scheduling ¡ Packet ¡Decoding ¡
GASPP ¡Framework ¡ • Fast ¡user-‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡
GASPP ¡Framework ¡ • Fast ¡user-‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡
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 ¡
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 ¡
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 ¡
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 ¡
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 ¡
GASPP ¡Framework ¡ • Fast ¡user-‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡
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 ¡
Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡
Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ RX ¡ batch ¡
Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡
Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡
Batch ¡Processing ¡Pipeline ¡ RX ¡ Module1 ¡ Module2 ¡ TX ¡ [me ¡ copy ¡ RX ¡ to ¡ GPU ¡ batch ¡ Batch ¡ processing ¡ copy ¡ to ¡ CPU ¡ TX ¡batch ¡
GASPP ¡Framework ¡ • Fast ¡user-‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡
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! ¡
Parallelism ¡in ¡packet ¡processing ¡ ¡ Network ¡traffic ¡ Batch ¡Size ¡ (#packets) ¡ • Network ¡packets ¡are ¡processed ¡in ¡batches ¡ – More ¡packets ¡=> ¡more ¡parallelism ¡
Dynamic ¡Irregulari5es ¡ Batch ¡Size ¡ (#packets) ¡ • Received ¡network ¡packets ¡mix ¡is ¡very ¡dynamic ¡ ¡
Dynamic ¡Irregulari5es ¡ Batch ¡Size ¡ (#packets) ¡ • Received ¡network ¡packets ¡mix ¡is ¡very ¡dynamic ¡ ¡ – Different ¡packet ¡lengths ¡
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 ¡
Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡
Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡
Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡
Dynamic ¡Irregulari5es ¡ ¡ module ¡1 ¡ ¡ module ¡2 ¡ ¡ module ¡3 ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡
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 ¡
Packet ¡grouping ¡ Batch ¡Size ¡ Batch ¡Size ¡
Packet ¡grouping ¡ [me ¡ warp ¡1 ¡ warp ¡2 ¡ warp ¡3 ¡ warp ¡4 ¡ warp ¡5 ¡ warp ¡6 ¡ warp ¡7 ¡ Ø Harmonized ¡execu5on ¡ Ø Symmetric ¡processing ¡
GASPP ¡Framework ¡ • Fast ¡user-‑space ¡packet ¡capturing ¡ • Modular ¡and ¡flexible ¡ • Efficient ¡packet ¡scheduling ¡mechanisms ¡ • TCP ¡processing ¡and ¡flow ¡management ¡support ¡
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