Graph Library

概述

参考:

DPDK 的 Graph(图) Library 将数据处理功能抽象为 Node(节点),并将这些 Node links(链接) 在一起以创建一张大型的数据处理流程图,以实现可重用的/模块化的数据处理能力。一个 Node 中可以有一个或多个流量处理 Function(功能),一个 Node 处理完成后,交给下一个或几个其他 Node 继续处理流量数据

image.png|800

假如我们设计了如下一系列功能

  • decode
  • flow
  • reassemble
  • resource
  • control
  • asset
  • security
  • record
  • drop
  • ……略

可以将这些功能分散到多个 Node 中,每个 Node 又可以规划如何如何调用这些功能

    "node_m": [
      {
        "name": "sink",
        "next": [
          "flow"
        ]
      },
      ...... 
    ],
    "node_n": [
      {
        "name": "rx",
        "next": [
          "decode"
        ]
      },
      {
        "name": "decode",
        "next": [
          "traffic_filter"
        ]
      },
      {
        "name": "traffic_filter",
        "next": [
          "capture",
          "drop"
        ]
      },
      ...... 
    ],
    "node_o": [
      {
        "name": "rx",
        "next": [
          "decode"
        ]
      },
      {
        "name": "decode",
        "next": [
          "flow"
        ]
      },
      ...... 
    ],
    ......略

Graph 架构

Graph Library 的设计思想源自于开源项目 Vector Packet Processor(VPP)


最后修改 May 21, 2024: dpdk graph library (b3029d2b)