Skip to content

ironcore-dev/dpservice

Dataplane Service

REUSE status GitHub License PRs Welcome

Overview

Dataplane Service in short form dp-service 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 dp-service 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 dp-service 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 used.

  • 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 limited IPv6 overlay support.

  • Virtual IP support for the virtual network interfaces.

  • Loadbalancer support.

  • 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