Topic OfSoftSwitch13 - MeshSr/ONetSwitch GitHub Wiki
###CPqD ofsoftswitch13
CPqD ofsoftswitch13 is an OpenFlow 1.3 compatible user-space software switch implementation. The code is based on the Ericsson TrafficLab 1.1 softswitch implementation, with changes in the forwarding plane to support OpenFlow 1.3.
The following components are available in this package:
-
ofdatapath
: the switch implementation -
ofprotocol
: secure channel for connecting the switch to the controller -
oflib
: a library for converting to/from 1.3 wire format -
dpctl
: a tool for configuring the switch from the console
###ONetSwitch ofs-sw
OpenFlow switch software running software flow tables ONLY.
ofs-sw is derived from one commit of CPqD ofsoftswitch13, with very few changes.
Find the executable binaries here for direct use.
####ofs-sw diff. from CPqD version
- Copy header files from dependencies to
include
/include/boost
/include/pcap
/include/xercesc
/include/nb*.h
- Change the source
-
/lib/netdev.c
add assertion on IFF_RUNNING flag, to check if the NIC is ESTABLISHED.
-
###ONetSwitch ofs-hw
** OpenFlow switch software supporting ONetSwitch hardware flow tables. **
ofs-hw is a dedicated version for ONetSwitch's FPGA-implemented OpenFlow switch. Since the original ofsoftswitch13 is software-minded, especially within the match engine, there is lots of work to do for software adaptation and hardware flow table abstraction.
Find the executable binaries here for direct use.
By now, Sep 2015, some tidy work and re-org to do for the ofs-hw code.
####ofs-hw diff. from ofs-sw
- Add new enum value for type 'HW FT'
-
/include/openflow/openflow.h
enum ofp_multipart_types OFPMP_FLOW_HW0/1
-
- New files
/oflib/add_entry.c
/oflib/hw_table_define.h
/oflib/reg_defines_openflow_switch.h
- Changed files
/oflib/ofl-actions-unpack.c
/oflib/ofl-messages*
/oflib/ofl-structs-unpack.c
/oflib/oxm-match*
/udatapath/datapath.c
/udatapath/dp_*.c
/udatapath/flow_*c
/udatapath/match_std.c
/udatapath/meter_*.c
/udatapath/packet*
/udatapath/pipeline.c
/udatapath/udatapath.c
###Dependent libraries
- libicuuc - ICU common library. International Components for Unicode.
- libicudata - ICU data library.
- netbee - packet sniffing and filtering, packet decoding, and traffic classification
- libpcap - a portable C/C++ library for network traffic capture
- libpcre - Perl Compatible Regular Expressions
- libxerces - XML parsers
- libboost
###Build the ofs-sw/ofs-hw
- Copy lib.so to one folder, no sub folder.
mkdir runlib
find <git-repos>/common-bin/lib -name "lib*" -type f | xargs -i cp {} ./runlib/.
- Configure then make with cross-compilation, sourcing the folder contains all the dependent libs.
./boot.sh
./configure --build=i686-pc-linux --host=arm-xilinx-linux-gnueabi --target=i686-linux
make LIBS="-lnbee -lnbprotodb -lnbnetvm -lnbpflcompiler -lnbsockutils -lpcap -lpcre -lxerces-c -licuuc -licudata -lpthread -L./runlib"