Skip to content

yanet-platform/yanet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YANET — software forwarding traffic

YANET

YANET is an open-source extensible framework for software forwarding traffic based on DPDK.

Introduction

The main objective of our solution is to be fault-tolerant and high-performance traffic processor. This is achieved due to the absence of context switching, no data race, constant complexity of algorithms, lockless.

Features

  • IPv4/IPv6 routing
  • ECMP with weight
  • MPLS encapsulation
  • Dot1q ethernet encapsulation
  • IPFW compatible ruleset with extensions
  • Stateful firewall
  • Layer-4 load balancer
  • IPIP tunnel
  • NAT64 stateless/stateful
  • Telemetry via telegraf
  • Over 200Gbps network bandwidth
  • Advanced autotests

Quick Start

You can build YANET in docker container and run it in QEMU. See DEMO.

Or build on bare metal. See documentation.

Running Autotests

Pull docker image:

docker pull yanetplatform/builder

Add alias for run commands on docker:

alias yanet-builder="docker run --rm -it -v /run/yanet:/run/yanet -v \$PWD:/project yanetplatform/builder"
(for Mac: alias yanet-builder="docker run --platform linux/amd64 --rm -it -v /run/yanet:/run/yanet -v \$PWD:/project yanetplatform/builder")

Once setup build_autotest directory:

yanet-builder meson setup -Dtarget=autotest build_autotest

Compile:

yanet-builder meson compile -C build_autotest

Run autotest with all units in autotest/units/001_one_port:

yanet-builder ./autotest/yanet-autotest-run.py --prefix=build_autotest autotest/units/001_one_port

Or run one unit:

yanet-builder ./autotest/yanet-autotest-run.py --prefix=build_autotest autotest/units/001_one_port autotest/units/001_one_port/019_acl_decap_route

For more information about the autotests run:

yanet-builder ./autotest/yanet-autotest-run.py -h

Running Unit Tests

To run the unit tests for the project, follow these steps:

Setup the build directory for unittest targeting:

meson setup -Dtarget=unittest build_unittest

Next, compile the project within the setup build directory:

meson compile -C build_unittest

After compilation, run all the unit tests with:

meson test -C build_unittest
  • To view more detailed output, you can run the tests with -v flag:
meson test -C build_unittest -v

Dependencies

License

Apache License, Version 2.0

Contributing

We are glad to welcome new contributors! See the CONTRIBUTING file for details.