Giter Club home page Giter Club logo

ofp's Introduction

OpenFastPath general info Build Status

Intent and purpose:

The intent of this project is to enable accelerated routing/forwarding for IPv4 and IPv6, tunneling and termination for a variety of protocols. Unsupported functionality is provided by the host OS networking stack (slowpath).

OpenFastPath functionality is provided as a library to Fast Path applications that use ODP run to completion execution model and framework. DPDK is supported through the ODP-DPDK layer.

Termination of protocols with POSIX interface for legacy applications is also supported.

See project technical overview for more details about OpenFastPath architecture and main features.

Directory structure

./docs/ - This is where you can find more detailed documentation
./example/ - Example applications that use the project library
./include/api/ - Public interface headers used by an application.
./include/ - Internal interface headers that are used in OFP library.
./scripts/ - Auxiliary scripts.
./src/ - .c files with OFP library implementation.
./src/cli/ - Command Line Interface implementation.
./test/cunit/ - CUnit testcases implementation

Coding Style:

Project code uses Linux kernel style that is verified through checkpatch.pl

Licensing:

Project uses BSD 3-CLause License as default license. One should not use code that is licensed under any GPL type.

Mailing list

We have a mailing list, reached via the address: [email protected]

Open IP Fast Path getting started

Build environment preparation:

This project is currently verified on a generic 32/64bit x86 Linux machine.

The following packages are mandatory for accessing and building ODP and OFP:

git aclocal libtool automake build-essential pkg-config

The following packages are optional:

libssl-dev doxygen asciidoc valgrind libcunit1 libcunit1-doc libcunit1-dev libconfig-dev

The usage of libconfig-dev package is enabled by default and can be disabled by --disable-libconfig configure option.

Download and build OpenDataPlane (ODP) library:

git clone https://git.linaro.org/lng/odp.git
cd odp
git checkout v1.19.0.2
./bootstrap
./configure --prefix=<INSTALL ODP TO THIS DIR>
make
make install

(make install may require root permissions)

Instructions for building OFP on top of ODP-DPDK and ODP-ThunderX can be found from OFP User Guide (docs/ofp-user-guide.adoc).

Compiling and building OFP:

git clone https://github.com/OpenFastPath/ofp
cd ofp
./bootstrap
./configure --prefix=<INSTALL OFP TO THIS DIR> --with-odp=<ODP INSTALLATION DIR>
make
make install 

OFP example applications:

OpenFastPath project contains a number of example applications described in example/README file. See OFP User Guide (docs/ofp-user-guide.adoc) for more details about designing and executing OFP applications.

Tools

Code coverage:

Generate code coverage report from unit tests by passing --coverage during building, and use lcov to view the results:

./configure <typical-ofp-flags> CFLAGS='-g -O0 --coverage' \
  LDFLAGS='--coverage'
make check

cd test/cunit

lcov --directory . --directory ../../src --capture --output-file \
  coverage.info

genhtml coverage.info --output-directory out

view out/index.html

ofp's People

Contributors

jereleppanen avatar sovu avatar jannepeltonen avatar oh2ncp avatar brbrooks avatar roxell avatar matiaselo avatar bogdanpricope avatar viktortikkanen avatar radulescuvalentin avatar abuibrahim avatar vankoven avatar jvillanyi avatar ulfbragnell avatar semihalf-berestovskyy-andriy avatar nysan avatar fboudra avatar nikhila-linaro avatar ajeecai avatar ragr2 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.