cpqd / nox13oflib Goto Github PK
View Code? Open in Web Editor NEWNOX Zaku with OF 1.3 support
License: Other
NOX Zaku with OF 1.3 support
License: Other
NOX 1.3 Oflib ------------- Attention! ----------- The controller is still under development and needs changes to support all OpenFlow 1.3 features and also to conform with previous messages that were modified in the new version. Despite the fact that an easier API is available, still it's possible to send new messages using the the oflib, present on this NOX version. The controller connects to the datapath without problems and an example application What is missing so far? - Multiple connections support - Some messages changed in OpenFlow 1.3 (e.g ofp_features_request do not carry port stats anymore). We need to look better how this affects the controller (This may mean lots of redesigning...). Important!! OpenFlow 1.3 changed the default behavior of the tables on a Table-Miss. Now packets are dropped and not of sent to the controller like it was on previous versions. So, if it isn't what you want to your application, install a flow with low priority to define your default. This is an OpenFlow 1.3 [1] compatible version of the NOX controller. The code is based on Nicira's NOX Zaku controller [2], with OpenFlow proecessing being replaced with Oflib from the OpenFlow 1.3 Software Switch [3]. The controller only supports C++ applications (no Python). [1] https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.0.pdf [2] http://noxrepo.org/cgi-bin/gitweb.cgi?p=nox;a=tree;h=8479a2d595e960d0953c4517b3a54be8fbc316b6;hb=8479a2d595e960d0953c4517b3a54be8fbc316b6 [3] https://github.com/CPqD/ofsoftswitch13.git Pre-requisites --------------- NOX dependencies are listed in this page https://github.com/noxrepo/nox-classic/wiki/Dependencies The code was compiled and tested under an Ubuntu 11.10. To compile it in a later version you should downgrade almost every dependency, so we recommend, while the code isn't updated, to use an older system version. Getting Started --------------- To build, run the following commands in the of11softswitch directory: ./boot.sh mkdir build cd build ../configure --with-python=no make To start the controller, run the following commands: cd build/src ./nox-core -i ptcp:<port> [applications] This will start the controller, listening on the given port for switch connetions. For a complete list of options, use the --help argument. Contribute ---------- Please submit your bug reports, fixes and suggestions as pull requests on github, or by contacting us directly. License ------- NOX code is released under the GNU General Public license. Oflib itself is released under the BSD license. References ---------- [1] OpenFlow: http://www.openflow.org/ [2] ONF: http://www.opennetworkingfoundation.org/ Contact ------- E-mail: Eder Leão Fernandes([email protected]) Repo: https://github.com/CPqD/nox13oflib.git
Please pay attention that this function needs to be changed accordingly:
void ofl_structs_match_put_masked(struct ofl_match *match, uint32_t header, T value, T mask){
struct ofl_match_tlv *m = (struct ofl_match_tlv *) malloc(sizeof (struct ofl_match_tlv));
int len = ((header) & 0xff);
m->header = header & 0xffffff00; /* This line is missing !!! */
/*set the masked bit */
m->header |= 1 << 8;
/* multiply the header len by 2 */
m->header |= ((header & 0xff) << 1); /* bug bug bug -> should be & instead of && */
m->value = (uint8_t*) malloc(len*2);
memcpy(m->value, &value, len);
memcpy(m->value + len, &mask, len);
hmap_insert(&match->match_fields,&m->hmap_node, hash_int(header, 0));
match->header.length += len * 2 + 4;
}
Hello everyone,
I installed nox13oflib, ofsoftswitch13 and MiniNet and I could emulate a SDN with OpenFlow 1.3. I am doing research on SDN and IPv6 and before continuing with this investigation, I want to ask if I installed these tools effectively can make an emulation of SDN with IPv6, at least let me know if nox13oflib and ofsoftswitch properly support IPv6 o What would you recommend me?
I understand that on MiniNet you do not have the necessary information, but I tried to seek help MiniNet-discuss mailing list and I have not received any response.
If indeed nox13oflib and ofsoftswitch allow use IPv6 then I have another question. Is it possible to change the routing parameters of controller for IPv6 header fields that I choose? How could I do this?
Thank you very much for your help.
The controller tries to send messages on FLOOD port that is an optional one and is NOT supported by OpenFlow-only switches. If a controller wants to use this port it should first make sure that the switch supports it. It can also use the ALL port that every OpenFlow-enabled switch is required to implement. See the OpenFlow 1.3.0 specification ch. 4.5.
Hi is there any reason why Add_Field("icmp_type", icmp_type) wouldn't work? icmp_type here set to 15 ..
Hi all,
I connect the nox with two softswitch running on separate PC and I'm tryng the discovery application.
To do that I insert a rule in the two datapath that switches all traffic in the Control port.
When all applications are running (datapath, ofprotocol and nox), the discovery application doesn't work.
Using wireshark, I see that LLDP packet created by the discovery application are formatted and sent inside the data link of the softswitch, the datapath redirects the received LLDP traffic, but the application does not receive the LLDP message (it receives PACKET_IN event with no payload).
For completeness, I am using on PCs Fedora Core 15, 64 bit version (X86_64).
Thanks in advance for the reply.
I am writing an application with NOX. But I failed to send a flow-mod message with the dst_ip and a specified mask through NOX API all the time.
If I only set the IP field without any mask like this:
Flow *f = new Flow();
uint8_t ip_dst[4] = {10,0,0,1};
f->Add_Field("eth_type", 0x0800);
f->Add_Field("ipv4_dst", ip_dst);
it works well. The rule will be inserted into the switches successfully
But if I add a mask for the dst_ip like this:
Flow *f = new Flow();
uint8_t ip_dst[4] = {10,0,0,1};
uint8_t mask[4] = {255,255,255,0};
f->Add_Field("eth_type", 0x0800);
f->Add_Field("ipv4_dst", ip_dst, mask);
Nothing happened in the flow table
I wander if I have used the Add_Field function in the right way
Thanks in advance.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.