Giter Club home page Giter Club logo

rofl-datapath's Introduction

What it is

The Revised OpenFlow Library (ROFL) helps you adding OpenFlow support to your software to build control applications, controller frameworks and/or datapath elements.

ROFL-datapath contains an OpenFlow pipeline (v1.0, 1.2 and 1.3) and a Hardware Abstraction Layer(HAL) libraries for building datapaths, written in C.

Requirements

  • A modern GNU build-system (autoconf, automake, libtool, ...)
  • pkg-config
  • GNU/Linux and libc development headers (linux-libc-dev and libc6-dev package 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.

How to build

Install the dependencies and run:

sh# ./autogen.sh  
sh# cd build  
sh# ../configure  
sh# make  
sh# make install  

Optionally you can 'make check' for consistency checks.

Optional ../configure parameters

--enable-debug: compile with debug symbols (-g) and debug output (warning, it may affect performance)  
--enable-verbose: increase the level of debug (useless without --enable-debug)  
--disable-silent-rules: enable verbose compilation mode (AM_SILENT_RULES disabled)
    
--with-pipeline-lockess: use lockless pipeline (packet processing API)
--with-pipeline-platform-funcs-inlined: inline platform functions (packet processing API)

Doxygen documentation

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

Known issues

  • Certain GCC 4.8.X family versions are buggy and don't properly compile ROFL with -O3 optimizations. Please use GCC 4.8.3 or higher, or another version family.

FAQ

Some distributions, in particular Red Hat based, do not include by default /usr/local/lib on the search path of ldconfig, not allowing to link against -lrofl and -lrofl_pipeline. In this case, you might have to add /usr/local/lib/ into /etc/ld.so.conf and re-run ldconfig.

More information, documentation and support

You can have a look on:

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

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

Authorship

(c) Copyright BISDN GmbH 2013

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

And others.

Build Status

rofl-datapath's People

Contributors

akoepsel avatar msune avatar richardclegg avatar toanju avatar vicalro avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rofl-datapath's Issues

l2hash ma: segfault during l2hash_ht_add_bucket()

First reported here:

bisdn/xdpd#71

Starting program: /home/sdn/xdpd-debug/build/src/xdpd/xdpd -c example.cfg -e coremask=0x7
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff42a0700 (LWP 9059)]
[New Thread 0x7ffff3a9f700 (LWP 9060)]
[New Thread 0x7ffff2a6e700 (LWP 9061)]
[New Thread 0x7ffff226d700 (LWP 9062)]
[New Thread 0x7ffef0bff700 (LWP 9063)]
[New Thread 0x7ffeebfff700 (LWP 9064)]
[New Thread 0x7ffeeb7fe700 (LWP 9065)]
[New Thread 0x7ffeeaffd700 (LWP 9066)]

Program received signal SIGSEGV, Segmentation fault.
0x0000000000b71db3 in l2hash_ht_add_bucket (ht=0x23a56a8, hash=65535, bucket=0x29ef910)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/l2hash/of1x_l2hash_ma.c:77
77              if(it->entry->priority <= priority)
#0  0x0000000000b71db3 in l2hash_ht_add_bucket (ht=0x23a56a8, hash=65535, bucket=0x29ef910)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/l2hash/of1x_l2hash_ma.c:77
#1  0x0000000000b7218e in of1x_add_hook_l2hash (entry=0x29efa60)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/l2hash/of1x_l2hash_ma.c:209
#2  0x0000000000b72c38 in of1x_add_flow_entry_table_imp (table=0x20a5290, entry=0x29efa60, check_overlap=false, reset_counts=false, ma_hook_ptr=0xb71f2d <of1x_add_hook_l2hash>)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/loop/of1x_loop_ma.c:250
#3  0x0000000000b73085 in __of1x_add_flow_entry_loop (table=0x20a5290, entry=0x29efa60, check_overlap=false, reset_counts=false, ma_hook_ptr=0xb71f2d <of1x_add_hook_l2hash>)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/loop/of1x_loop_ma.c:396
#4  0x0000000000b722d3 in of1x_add_flow_entry_l2hash (table=0x20a5290, entry=0x29efa60, check_overlap=false, reset_counts=false)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/matching_algorithms/l2hash/of1x_l2hash_ma.c:258
#5  0x0000000000b6e205 in of1x_add_flow_entry_table (pipeline=0x20a5250, table_id=0, entry=0x7fffffffdb38, check_overlap=false, reset_counts=false)
    at /home/sdn/xdpd-debug/build/../libs/rofl-datapath/src/rofl/datapath/pipeline/openflow/openflow1x/pipeline/of1x_flow_table.c:475
#6  0x0000000000a75e41 in hal_driver_of1x_process_flow_mod_add (dpid=256, table_id=0 '\000', flow_entry=0x7fffffffdb38, buffer_id=4294967295, check_overlap=false, reset_counts=false)
    at ../../../../../../../../../src/xdpd/drivers/gnu_linux_dpdk/src/hal-imp/openflow/openflow1x/of1x_driver.cc:343
#7  0x0000000000b3301c in xdpd::of13_endpoint::flow_mod_add (this=0x26a5840, ctl=..., msg=...) at ../../../../../src/xdpd/openflow/openflow13/of13_endpoint.cc:191
#8  0x0000000000b32c2f in xdpd::of13_endpoint::handle_flow_mod (this=0x26a5840, ctl=..., auxid=..., msg=...) at ../../../../../src/xdpd/openflow/openflow13/of13_endpoint.cc:143
#9  0x0000000000c68876 in rofl::crofctl::flow_mod_rcvd (this=0x26a67a0, auxid=..., msg=0x7ffed8002790) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofctl.cc:1940
#10 0x0000000000c5fbd1 in rofl::crofctl::recv_message (this=0x26a67a0, chan=..., auxid=..., msg=0x7ffed8002790) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofctl.cc:243
#11 0x0000000000c3e7bb in rofl::crofchan::recv_message (this=0x26a6968, conn=..., msg=0x7ffed8002790) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofchan.h:427
#12 0x0000000000c45e8d in rofl::crofconn::send_message_to_env (this=0x26a79e0, msg=0x7ffed8002790) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofconn.cc:786
#13 0x0000000000c464bd in rofl::crofconn::handle_messages (this=0x26a79e0) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofconn.cc:897
#14 0x0000000000c4e0e8 in rofl::crofconn::handle_event (this=0x26a79e0, ev=...) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/crofconn.h:441
#15 0x0000000000b7f61e in rofl::ciosrv::__handle_event (this=0x26a79e8) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/ciosrv.cc:84
#16 0x0000000000b809dc in rofl::cioloop::run_on_events (this=0x26a5db0) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/ciosrv.cc:300
#17 0x0000000000b7fac5 in rofl::cioloop::run_loop (this=0x26a5db0) at /home/sdn/xdpd-debug/build/../libs/rofl-common/src/rofl/common/ciosrv.cc:166
#18 0x0000000000a5f12c in rofl::cioloop::run (this=0x26a5db0) at /home/sdn/xdpd-debug/build/..//libs/rofl-common/src/rofl/common/ciosrv.h:235
#19 0x0000000000a5cbb8 in xdpd::system_manager::init (argc=5, argv=0x7fffffffe568) at ../../../../src/xdpd/management/system_manager.cc:250
#20 0x0000000000a04684 in main (argc=5, argv=0x7fffffffe568) at ../../../src/xdpd/xdpd.cc:25

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.