Coder Social home page Coder Social logo

secsecsec / xdpd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bisdn/xdpd

0.0 1.0 0.0 5.36 MB

OpenFlow switch (multi-platform) - The OpenFlow eXtensible DataPath daemon,an SDN datapath framework written in C/C++

Home Page: http://www.xdpd.org

License: Other

Makefile 1.05% Shell 0.03% M4 2.35% C++ 43.98% C 51.32% Objective-C 0.17% Python 1.11%

xdpd's Introduction

What it is

"The OpenFlow eXtensible DataPath daemon (xDPd) is a multi-platform, multi OF version, open-source datapath built focusing on performance and extensibility."

xDPd can also be considered a framework for building OpenFlow datapath elements, as it is designed to be easily extended with the support of new forwarding devices.

Supported platforms (drivers)

Shipped with all xDPd instances:

  • GNU/Linux amd64/x86 user-space with MMAP suppport (gnu-linux). open-source
  • GNU/Linux Intel's DPDK accelerated driver (gnu-linux-dpdk). open-source
  • NetFGPA-10G (netfpga10g). open-source.

Also available:

  • Broadcom Triumph2 (bcm).
  • Octeon network processors (octeon).
  • Other: refer to the wiki page for more details

You may want to have a look to the particular README pages of each platform by inspecting:

src/xdpd/drivers/{platform_name}/README

Requirements

  • A modern GNU build-system (autoconf, automake, libtool, ...)
  • GNU/Linux and libc development headers (linux-libc-dev and libc6-dev package in Debian/Ubuntu systems)
  • libconfig C++ lib (libconfig++-dev in Debian/Ubuntu systems)
  • openssl (rofl-common, libssl-dev in Debian/Ubuntu systems)
  • [optional] if you want to run automatic tests (make check), libcunit and libcppunit are required (in libcunit1-dev and libcppunit-dev packages in Debian-like systems).
  • [optional] Doxygen to generate the documentation.

[1] https://github.com/bisdn/rofl-common [2] https://github.com/bisdn/rofl-datapath

How to build

Install the dependencies and run:

sh# ./autogen.sh
sh# mkdir -p build
sh# cd build  
sh# ../configure  
sh# make  
sh# make install

Optionally you can make check for consistency checks. For other platforms different than gnu-linux, please make sure --with-hw-support=platform-name is specified, and that the appropriate README is read (e.g. src/xdpd/drivers/example/README).

How to run it

The default management plugin is config. Read README-conf-file for more information.

Copy the example.cfg:

sh# cd build/src/xdpd  
sh# cp ../../../src/xdpd/management/plugins/config/example.cfg .  

Now edit the configuration. Make sure ports attached to the Logical Switch Instance (LSI) exist in the system.

sh# vi example.cfg  

Run xdpd:

sh# ./xdpd -c example.cfg

Troubleshooting

What to do if something doesn't work...

  1. Check the controller <-> LSI OF channel. Launch xDPd with debug level 8 for maximum OF control channel output. Check the very basics (addresses, ports and OF versions).
  2. To troubleshoot problems with flowmod/groupmod check the OF control channel to see if the messages are correctly interpreted by the endpoint.
  3. If they are correct, you can check whether they have been installed in the datapath by either using a controller or using the REST plugin + CLI (remember you have to compile in the support for REST); e.g. xcli -c "show list dp0 table 0 flows".

If this is not enough, you can always compile xDPd with debug (warning: it affects performance) to see the output of the fast-path. To do so:

cd <path_to_xdpd_folder>
cd build
../configure --enable-debug     # add extra parameters...
make clean-libs                 # Clean the compiled libraries (compile them with debug)
make clean                      # Clean xDPd code
make -j2

And then launch xdpd with debug level 7 or more:

./xdpd -c config_file.cfg -d 8

If you think this there is a bug, please report it to the issue tracker / mailing list.

Optional ../configure parameters

--with-hw-support=platform-name: Compiles support for the platform-name (platform driver). Default is gnu-linux.   
--with-plugins="plugin1...pluginN": Compile with plugin1..pluginN enabled. Default is --with-plugins="config" plugin.  
--enable-debug: Compile with debug symbols (-g) and debug output, -O0 (warning, it may affect performance).  
--disable-silent-rules: Enable verbose compilation mode (AM_SILENT_RULES disabled)   

Doxygen documentation

You can have a look on:

http://www.xdpd.org/doc/

Documentation can be compiled via make doc. Documentation is generated in build/doc/ folder

RYU certification for gnu-linux/gnu-linux-dpdk: check doc/gnu-linux-ryu.cert

Known issues

  • Certain GCC 4.8.X family versions are buggy and don't properly compile xDPd with -O3 optimizations. Please use GCC 4.8.3 or higher, or another version family. E.g. for gcc-4.7:

    CC=gcc-4.7 CXX=g++-4.7 ../configure

More information, documentation and support

http://www.xdpd.org https://github.com/bisdn/xdpd

For getting support or participate in the discussions, join the mailing list [email protected] at https://lists.xdpd.org/mailman

Authorship

(c) Copyright BISDN GmbH 2013

Marc Sune<marc.sune (at) bisdn.de>
Andreas Koepsel<andreas.koepsel (at) bisdn.de>
Victor Alvarez<victor.alvarez (at) bisdn.de>
Tobias Jungel<tobias.jungel (at) bisdn.de>

And others

xdpd's People

Contributors

akoepsel avatar vicalro avatar msune avatar toanju avatar tytussielach avatar ivanocerrato avatar butjar avatar richardclegg avatar hwoesner avatar dfritzsche avatar

Watchers

James Cloos 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.