|
1 |
| -# Beba |
| 1 | +# BEBA Software Switch |
2 | 2 |
|
| 3 | +This is an implementation of the BEBA Software Switch based on the [CPqD OpenFlow 1.3 softswitch][ofss13]. |
3 | 4 |
|
4 |
| -This is an implementation of the Beba switch based on the OpenFlow 1.3 softswitch developed by CPdQ and available at https://github.com/CPqD/ofsoftswitch13. For any information about Beba please check the home page of the project at http://www.beba-project.eu/. |
| 5 | +[BEBA is a European H2020 project][beba] on SDN data plane programmability. Our goal is to devise a data plane abstraction and prototype implementations for future-proof network devices capable to be repurposed with middlebox-type functions well beyond static packet forwarding, with a focus on stateful processing and packet generation. |
5 | 6 |
|
| 7 | +A controller for this switch can be found at https://github.com/beba-eu/beba-ctrl |
6 | 8 |
|
7 |
| -# OpenFlow 1.3 Software Switch |
| 9 | +# Features in a nutshell |
8 | 10 |
|
9 |
| -This is an [OpenFlow 1.3][ofp13] compatible user-space software switch implementation. The code is based on the [Ericsson TrafficLab 1.1 softswitch |
10 |
| -implementation][ericssonsw11], with changes in the forwarding plane to support |
11 |
| -OpenFlow 1.3. |
| 11 | +The BEBA Switch is an OpenFlow 1.3 switch extended with support for: |
| 12 | +* Stateful packet forwarding based on the [OpenState API][openstate] |
| 13 | +* Packet generation based on the [InSP API][insp] |
12 | 14 |
|
13 |
| -The following components are available in this package: |
| 15 | +Moreover, BEBA targets software accelleration. We improve the CPqD softswitch troughput while retaining the simplicity of the original CPqD code base. |
| 16 | + |
| 17 | +# Getting Started |
| 18 | + |
| 19 | +Similarly to the CPqD softswitch, the following components are available in this package: |
14 | 20 | * `ofdatapath`: the switch implementation
|
15 | 21 | * `ofprotocol`: secure channel for connecting the switch to the controller
|
16 | 22 | * `oflib`: a library for converting to/from 1.3 wire format
|
17 | 23 | * `dpctl`: a tool for configuring the switch from the console
|
18 | 24 |
|
19 |
| -# Getting Started |
20 |
| - |
21 |
| -These instructions have been tested on Ubuntu 12.04. Other distributions or versions may need different steps. |
22 |
| - |
23 |
| -For Ubuntu 14.04, please check @castroflavio solution: |
24 |
| -[How to compile on Ubuntu 14.04][compileubuntu14] |
25 |
| - |
| 25 | +For more information on how to use these components please refer to the [original CPqD's documentation][ofss13] |
26 | 26 |
|
27 | 27 | ## Building
|
28 |
| -Run the following commands in the `ofsoftswitch13` directory to build and install everything: |
| 28 | + |
| 29 | +Run the following commands in the `beba-switch` directory to build and install everything: |
29 | 30 |
|
30 | 31 | $ ./boot.sh
|
31 | 32 | $ ./configure
|
32 | 33 | $ make
|
33 | 34 | $ sudo make install
|
34 | 35 |
|
35 | 36 | ## Running
|
36 |
| -1. Start the datapath: |
37 |
| - |
38 |
| - ``` |
39 |
| - $ sudo udatapath/ofdatapath --datapath-id=<dpid> --interfaces=<if-list> ptcp:<port> |
40 |
| - ``` |
41 |
| -
|
42 |
| - 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. |
43 |
| -
|
44 |
| -2. Start the secure channel, which will connect the datapath to the controller: |
45 |
| -
|
46 |
| - ``` |
47 |
| - $ secchan/ofprotocol tcp:<switch-host>:<switch-port> tcp:<ctrl-host>:<ctrl-port> |
48 |
| - ``` |
49 |
| -
|
50 |
| - 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. |
51 |
| -
|
52 |
| -## Configuring |
53 |
| -You can send requests to the switch using the `dpctl` utility. |
54 |
| -
|
55 |
| -* Check the flow statistics for table 0. |
56 |
| -
|
57 |
| - ``` |
58 |
| - $ utilities/dpctl tcp:<switch-host>:<switch-port> stats-flow table=0 |
59 |
| - ``` |
60 |
| -
|
61 |
| -* Install a flow to match IPv6 packets with extension headers hop by hop and destination and coming from port 1. |
62 |
| -
|
63 |
| - ``` |
64 |
| - $ 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 |
65 |
| - ``` |
66 |
| -
|
67 |
| -* Add a meter: |
68 |
| -
|
69 |
| - ``` |
70 |
| - $ utilities/dpctl tcp:<switch-host>:<switch-port> meter-mod cmd=add,meter=1 drop:rate=50 |
71 |
| - ``` |
72 |
| -
|
73 |
| -* Send flow to meter table |
74 |
| -
|
75 |
| - ``` |
76 |
| - $ utilities/dpctl tcp:<switch-host>:<switch-port> flow-mod table=0,cmd=add in_port=1 meter:1 |
77 |
| - ``` |
78 |
| -
|
79 |
| -For a complete list of commands and arguments, use the `--help` argument. |
80 |
| -
|
81 |
| -The `dpctl` utility has some limitations at the moment: |
82 |
| -* No support for OXM masks |
83 |
| -* No support for multipart messages |
84 |
| -* Some set_field action fields are not present |
85 | 37 |
|
| 38 | +Please refer to the [original CPqD's softswitch README][ofss13-readme] |
86 | 39 |
|
87 | 40 | # Contribute
|
88 | 41 | Please submit your bug reports, fixes and suggestions as pull requests on
|
89 | 42 | GitHub, or by contacting us directly.
|
90 | 43 |
|
91 | 44 | # License
|
92 |
| -OpenFlow 1.3 Software Switch is released under the BSD license (BSD-like for |
| 45 | +BEBA Software Switch is released under the BSD license (BSD-like for |
93 | 46 | code from the original Stanford switch).
|
94 | 47 |
|
95 |
| -# Acknowledgments |
96 |
| -
|
97 |
| -This project is supported by Ericsson Innovation Center in Brazil. |
98 |
| -Maintained by CPqD in technical collaboration with Ericsson Research. |
99 |
| -
|
100 |
| -**Contributions:** |
101 |
| -
|
102 |
| -Zoltán Lajos Kis, ofsoftswitch 1.1 implementation and guidance for OpenFlow spec related subjects. |
103 |
| -
|
104 |
| -Jean Tourrilhes, lots of critical memory bug fixes on table features. |
105 |
| -
|
106 |
| -Khai Nguyen Dinh and Thanh Le Dinh, contributions on meter features. |
107 |
| -
|
108 |
| -Rich Lane, added the right compiler linker. |
109 |
| -
|
110 |
| -yu-iwata, fixed flow deletion without matchin out_port. |
111 |
| -
|
112 |
| -Yuval Adler, bug fixes related to matching on vlan and ethertype. |
113 |
| -
|
114 |
| -Hiroyasu OHYAMA, correct URL of NetBee Library. |
115 |
| -
|
116 |
| -... |
117 |
| -
|
118 |
| -*"Your name here" -- please, let us* |
119 |
| -*know if we forgot to add your name to the list of contributors!* |
120 |
| -
|
121 |
| -# Contact |
122 |
| -E-mail: Eder Leao Fernandes (ederleaofernandes at gmail . com) |
123 |
| -
|
124 |
| -[ofp13]: https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.0.pdf |
125 |
| -[ericssonsw11]: https://github.com/TrafficLab/of11softswitch |
| 48 | +[beba]: http://www.beba-project.eu/ |
| 49 | +[openstate]: http://openstate-sdn.org/pub/openstate-ccr.pdf |
| 50 | +[insp]: http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper42.pdf |
| 51 | +[ofss13]: http://cpqd.github.io/ofsoftswitch13/ |
| 52 | +[ofss13-readme]: https://github.com/CPqD/ofsoftswitch13/blob/master/README.md |
126 | 53 | [compileubuntu14]: http://tocai.dia.uniroma3.it/compunet-wiki/index.php/Installing_and_setting_up_OpenFlow_tools
|
0 commit comments