No description
  • C 45.9%
  • Go 23.8%
  • Python 18.3%
  • C++ 9%
  • Shell 1.1%
  • Other 1.9%
Find a file
2025-03-25 15:26:53 +01:00
.github Compile DPDK on ubuntu 22.04 2025-01-24 17:52:03 +01:00
.reuse Correct licensing information 2024-10-21 20:00:25 +02:00
cli change error rendering 2025-03-25 14:57:00 +01:00
code_check Make project REUSE compliant 2023-12-04 17:02:12 +01:00
config/default Implement a gRPC health service 2025-03-25 15:26:53 +01:00
docs Support DP_FILE_PREFIX environment variable for dpservice-dump and dpservice-inspect 2025-03-18 13:40:49 +01:00
go/dpservice-go change error rendering 2025-03-25 14:57:00 +01:00
hack Remove pf1-proxy 2025-01-15 17:15:54 +01:00
include Implement a gRPC health service 2025-03-25 15:26:53 +01:00
LICENSES Make project REUSE compliant 2023-12-04 17:02:12 +01:00
proto Implement a gRPC health service 2025-03-25 15:26:53 +01:00
src Implement a gRPC health service 2025-03-25 15:26:53 +01:00
test change error rendering 2025-03-25 14:57:00 +01:00
tools Support DP_FILE_PREFIX environment variable for dpservice-dump and dpservice-inspect 2025-03-18 13:40:49 +01:00
.editorconfig use dpdk graph framework 2021-11-01 19:03:56 +01:00
.gitignore Improvement according to reality tests 2024-09-11 13:41:15 +02:00
CODEOWNERS Add CODEOWNERS to project 2023-12-11 16:48:38 +01:00
Dockerfile Remove pf1-proxy 2025-01-15 17:15:54 +01:00
LICENSE Initial commit 2021-10-20 13:32:30 +02:00
meson.build Remove pf1-proxy 2025-01-15 17:15:54 +01:00
meson_options.txt Remove pf1-proxy 2025-01-15 17:15:54 +01:00
README.md Reorganize licence files and delete unnecessary ones 2024-06-12 16:36:44 +02:00

Dataplane Service

REUSE status GitHub License PRs Welcome

Overview

Dataplane Service in short form dpservice is a L3 virtual router with basic L2 capabilites and with IP in IPv6 tunneling for the uplink traffic. It uses SRIOV based Virtual Functions as its virtual ports. A virtual machine or a bare metal machine (In case dpservice running directly on SmartNIC) can be plugged to SRIOV VFs.

  • It can operate in offloaded and non-offloaded mode.

    • Offload mode means first packet of each flow flowing over dpservice will be handled in software and then the flow will be offloaded to the hardware. (Using DPDK rte_flow)
    • Non-offloaded mode handles the whole traffic in software using PMD drivers and dedicated CPU cores.
  • Uses DPDK Graph Framework for the data plane.

  • rte_flow offloading between the Virtual Machines(VMs) on a single hypervisor and ip in ipv6 decap/encap offloading between hypervisors.

  • GRPC support to add virtual network interfaces and routes. There is a C++ based GRPC test client (CLI) which can connect to the GRPC server. See the examples under docs.

  • There is also a golang based GRPC client which is easier to use.

  • A kubernetes controller abstraction on top of the provided GRPC interface is availiable as well. It is called metalnet.

  • DHCPv4, DHCPv6, Neighbour Discovery, ARP protocols supported (Sub-set implementations.).

  • IPv4 and IPv6 overlay support.

  • Virtual IP support for the virtual network interfaces.

  • Loadbalancer support with maglev hashing.

  • Horizantally scalable NAT Gateway support.

  • Automated test support with pytest and scapy.

Installation, using and developing

For more details please refer to documentation folder docs

Contributing

We`d love to get a feedback from you. Please report bugs, suggestions or post question by opening a Github issue

License

Apache License 2.0