1 of 8

DTS RPC Proposal

Owen Hilyard

2 of 8

Current Approach

3 of 8

Proposed Approach

4 of 8

Implementation

5 of 8

Python Standard Library XMLRPC

Benefits

  • Only requires python on the DUT at runtime
  • Would integrate very well with DTS’s current python code
  • Little to no work to add a new function to DTS once exposed via bindings
  • May be possible to automate RPC server generation from DPDK source

Costs

  • Python bindings to a DPDK wrapper would be required
  • Possibly not as fast as other approaches
  • GIL handling could be difficult

6 of 8

gRPC with C++/Rust RPC server and Python Client

Benefits

  • RPC server has zero overhead interactions with C
  • Statically typed interface
  • C++ wouldn’t need bindings

Costs

  • Apache License
  • gRPC does not support C, so another language is required
  • Rust might need bindings (meson has experimental support for this)
  • Everyone would need to learn the gRPC DSL (protobuf), which is not very hard

7 of 8

Client and Server in C/C++/Rust, exposing a Python module

Benefits

  • RPC server has zero overhead interactions with C
  • May not need any external tools
  • Interactions are either cross-language or across the network, not both
  • Rust can easily create a python module via PyO3
  • Use of any RPC library/framework

Costs

  • Rust might bindings to DPDK wrapper
  • Compilation on DUT and Tester

8 of 8

What about Testpmd?