All Projects → CPqD → Ofsoftswitch13

CPqD / Ofsoftswitch13

OpenFlow 1.3 switch.

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Ofsoftswitch13

netbox-joined-inventory
Netbox_joined_inventory is a python script that gathers data from a Netbox source-of-truth and stores them as Ansible inventory, group_vars and host_vars files.
Stars: ✭ 21 (-92.02%)
Mutual labels:  sdn
SDN-Datacenter
Making a software defined datacenter. Which includes various virtual networks with mutiple network functions deployed on it. This includes SDN network deployed on real hardware.
Stars: ✭ 28 (-89.35%)
Mutual labels:  sdn
nconnect
Securely connect to remote machines without the need of any server, public IP address, or publicly exposed ports.
Stars: ✭ 38 (-85.55%)
Mutual labels:  sdn
zero-ui
ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.
Stars: ✭ 432 (+64.26%)
Mutual labels:  sdn
husarnet
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.
Stars: ✭ 128 (-51.33%)
Mutual labels:  sdn
kytos
Kytos SDN Platform is the fastest way to deploy an SDN Network. With this you can deploy a basic OpenFlow controller or your own controller. Kytos was designed to be easy to install, use, develop and share Network Apps (NApps). Kytos is incredibly powerful and easy, its modular design makes Kytos a lightweight SDN Platform.
Stars: ✭ 43 (-83.65%)
Mutual labels:  sdn
sdn-loadbalancing
To perform load balancing on fat tree topology using SDN Controller i.e. Floodlight and OpenDaylight.
Stars: ✭ 89 (-66.16%)
Mutual labels:  sdn
Vedetta
OpenBSD Router Boilerplate
Stars: ✭ 260 (-1.14%)
Mutual labels:  sdn
sdn-nfv-papers
This is a paper list about Resource Allocation in Network Functions Virtualization (NFV) and Software-Defined Networking (SDN).
Stars: ✭ 40 (-84.79%)
Mutual labels:  sdn
TupleNet
TupleNet is a lightweight tool for building virtual-networking
Stars: ✭ 26 (-90.11%)
Mutual labels:  sdn
SOL
SOL: SDN optimization layer. A framework for writing network optimization problems more easily.
Stars: ✭ 22 (-91.63%)
Mutual labels:  sdn
katana-slice manager
5G Network E2E Slice Manager
Stars: ✭ 61 (-76.81%)
Mutual labels:  sdn
fog05
End-to-End Compute, Storage and Networking Virtualisation.
Stars: ✭ 50 (-80.99%)
Mutual labels:  sdn
pathman-sr
Pathman SR is an open-source app to compute paths and deploy routes in Segment Routing-enabled network.
Stars: ✭ 79 (-69.96%)
Mutual labels:  sdn
meetups
Repository to gather all presentations and info from all Taiwan Cloud Native meetups.
Stars: ✭ 96 (-63.5%)
Mutual labels:  sdn
pilot
Simple web-based SDN controller for family and friends
Stars: ✭ 33 (-87.45%)
Mutual labels:  sdn
flowmanager
An SDN application that gives its user the ability to control flows in an OpenFlow network without coding.
Stars: ✭ 60 (-77.19%)
Mutual labels:  sdn
Learning Sdn
SDN 學習及實作範例。(因個人職涯關係,已不再維護,請見諒。)
Stars: ✭ 262 (-0.38%)
Mutual labels:  sdn
sfc app
Service Function Chaining Application for Ryu SDN controller
Stars: ✭ 25 (-90.49%)
Mutual labels:  sdn
multipath
Multipath routing with Ryu and Pyretic SDN Controllers
Stars: ✭ 56 (-78.71%)
Mutual labels:  sdn

Basic OpenFlow Software Switch (BOFUSS)

This 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.

A paper that describes the basic architecture, selected use cases and a few benchmarks is available on Arxiv.

If you use the switch for academic purpuses, please consider the use of this citation.

@article{fernandes2020road,
  title={The road to BOFUSS: The basic OpenFlow userspace software switch},
  author={Fernandes, Eder Le{\~a}o and Rojas, Elisa and Alvarez-Horcajo, Joaquin and Kis, Zolt{\`a}n Lajos and Sanvito, Davide and Bonelli, Nicola and Cascone, Carmelo and Rothenberg, Christian Esteve},
  journal={Journal of Network and Computer Applications},
  pages={102685},
  year={2020},
  publisher={Elsevier}
}

Please read the FAQ before posting an issue

Check the Wiki for some resources that could possibly help you to modify the switch.

UPDATE: A new experimental branch with contributions from the BEBA EU Project is available with lots of performance improvements and OpenFlow extensions. If you want to try the code checkout to the BEBA-EU branch.

$ git checkout remotes/origin/BEBA-EU

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

Getting Started

These instructions have been tested on Ubuntu 16.04. Other distributions or versions may need different steps.

Before building

The switch makes use of the NetBee library to parse packets, so we need to install it first.

  1. Install the following packages:

    $ sudo apt-get install cmake libpcap-dev libxerces-c3.1 libxerces-c-dev libpcre3 libpcre3-dev flex bison pkg-config autoconf libtool libboost-dev
    
  2. Clone and build netbee

    $ git clone https://github.com/netgroup-polito/netbee.git
    $ cd netbee/src
    $ cmake .
    $ make
    
  3. Add the shared libraries built in /nbeesrc/bin/ to your /usr/local/lib directory

    $ sudo cp ../bin/libn*.so /usr/local/lib
    
  4. Run ldconfig

    $ sudo ldconfig
    
  5. Put the contens of folder nbeesrc/include in the /usr/include

    $ sudo cp -R ../include/* /usr/include/
    

Building

Run the following commands in the ofsoftswitch13 directory to build and install everything:

$ ./boot.sh
$ ./configure
$ make
$ sudo make install

Running

  1. Start the datapath:

    $ sudo udatapath/ofdatapath --datapath-id=<dpid> --interfaces=<if-list> ptcp:<port>
    

    This will start the datapath, with the given datapath ID, using the interaces listed. It will open a passive TCP connection on the given port. For a complete list of options, use the --help argument.

  2. Start the secure channel, which will connect the datapath to the controller:

    $ secchan/ofprotocol tcp:<switch-host>:<switch-port> tcp:<ctrl-host>:<ctrl-port>
    

    This will open TCP connections to both the switch and the controller, relaying OpenFlow protocol messages between them. For a complete list of options, use the --help argument.

Configuring

You can send requests to the switch using the dpctl utility.

  • Check the flow statistics for table 0.

    $ utilities/dpctl tcp:<switch-host>:<switch-port> stats-flow table=0
    
  • Install a flow to match IPv6 packets with extension headers hop by hop and destination and coming from port 1.

    $ utilities/dpctl tcp:<switch-host>:<switch-port> flow-mod table=0,cmd=add in_port=1,eth_type=0x86dd,ext_hdr=hop+dest apply:output=2
    
  • Add a meter:

    $ utilities/dpctl tcp:<switch-host>:<switch-port> meter-mod cmd=add,meter=1 drop:rate=50
    
  • Send flow to meter table

    $ utilities/dpctl tcp:<switch-host>:<switch-port> flow-mod table=0,cmd=add in_port=1 meter:1
    

For a complete list of commands and arguments, use the --help argument. Also, check the wiki for Flow Mod examples

Contribute

Please submit your bug reports, fixes and suggestions as pull requests on GitHub, or by contacting us directly.

License

OpenFlow 1.3 Software Switch is released under the BSD license (BSD-like for code from the original Stanford switch).

Acknowledgments

This project was supported by Ericsson Innovation Center in Brazil. Formerly maintained by CPqD in technical collaboration with Ericsson Research.

List of Contributors

Contact

E-mail: Eder Leao Fernandes (ederleaofernandes at gmail . com)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].