GithubHelp home page GithubHelp logo

ljerezchaves / ofswitch13 Goto Github PK

View Code? Open in Web Editor NEW
24.0 2.0 16.0 9.01 MB

OFSwitch13: OpenFlow 1.3 module for ns-3.

Home Page: http://www.lrc.ic.unicamp.br/ofswitch13/

License: GNU General Public License v2.0

C++ 98.38% CMake 1.62%
openflow ns-3 network-simulator sdn sdn-switch sdn-controller

ofswitch13's People

Contributors

ljerezchaves avatar pasquimp avatar vitorme avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ofswitch13's Issues

External controller ONOS connection error...

Hello, I am using the ofswitch13 module for my research.
But, when I simulate the external controller example, it does connect the onos, but the ping fails every time.
I think link doesn't form between the hosts, switches, and switches and switches.
Can you please solve the problem, please?

Endereços IPs do Helper

Originally reported by Luciano Chaves (Bitbucket: ljerezchaves, GitHub: ljerezchaves)


Como o helper está forçando o endereçamento dos switches e do controlador na rede 10.100.150.0/24, se num determinado cenário tivermos dois controladores, então o esquema atual falha por conflitos de endereço. A estratégia aqui é definir o endereço da rede como um atributo, permitindo que o usuário possa configurá-lo como quiser.


NS3 + ONOS Integration + BRITE Integration

Originally reported by Akin Soysal (Bitbucket: akinsoysal, GitHub: akinsoysal)


Hello,

I have some bugfixes and some enhancements.

We are working on enhancing the ONOS SDN controller. Instead of Mininet I tried your ofswitch13 module. It took me sometime but I finally did manage to get it properly working by enhancing the code which I obtained after going through the step by step instructions under:

http://www.lrc.ic.unicamp.br/ofswitch13/ofswitch13.pdf

  • 1 bug in ONOS was that it was returning a preset prefix for the MAC address although the given MAC address in NS3 was 00:00:00:00:01. ONOS was giving xx:xx:xx:00:00:01.
  • One enhancement was that with ONOS we were sending PACKET_OUT messages piggybacked to the openflow message.
  • Then we wanted to work with bigger topologies, so I integrated BRITE topology helper within NS3 and also added some other examples.
  • Next, I realized that although topology discovery of ONOS was fine with small topologies, with bigger topologies I was getting errors. The problem was that many switches were communicating with the ONOS controller through the same local bridge and when a tcp packet was segmented, ONOS could send another switch's packet in between and this would cause problems during packet parsing. So instead of keeping packet parsing elements as static members, I changed them to local variables so that the segmented packets would not be confused among switches.

I have added a lot of working examples under scratch/.

Best Regards,
Akın


Wrong processed packages in SDN switches using an external SDN controller

Dear @ljerezchaves,

I would like to use your implementation in NS3 for some research in 5G network slicing. In order to achieve this i would like to use an external SDN controller (ONOS is my prefered choice) but i found a critical bug.

I observed using wireshark that OpenFlow LLDP package that was received in the SDN controller (OFPT_PACKET_IN) was truncated previously by the ofswitch13 switches, affecting to the last part of the Data field of the OpenFlow 1.3 package.

It's true that with floodlight controller works, because i imagine that the fields that need to build the topology are correct (since the truncation happens at the end of the package) but ONOS needs this last part of the package and using a simple topology like this:

  • 2 hosts
  • 4 switches

ONOS goes crazy (because the received message indicates for example that Port Description is Port\330g in stead of Port 2).

Below I attached a wireshark capture form ONOS and Floodlight controllers to see clearly what i'm talking about.

Any idea?

Thanks,
Rubén.

wireshark_captures_onos_floodlight.zip

Porting to ns 3.36

Hi!
Are there some general directions on how to port this module to ns 3.36 ?

Can't change NSC-linux2.6.26 kernel attribute if Openflow module is enabled in NS3.

Originally reported by Ahmed Abdelsalam (Bitbucket: aabdelsalam, GitHub: aabdelsalam)


I am using nsc-0.5.3 with ns-3-dev 3.23 to test different tcp versions. I used the simple example "tcp-nsc-lfn" from examples/tcp to ensure the functionality of nsc. First I noticed that, if I run this script directly from the examples folder, it runs properly and allows me to change the tcp version using
Config::Set ("/NodeList/*/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_congestion_control", StringValue (tcpver)). However, when I run the same script from the scratch folder it doesn't accept the "net.ipv4.tcp_congestion_control" attribute with one of the following error messages ( the error messages alternate each run).

printk[0]: 0.000000) <4>nsc_convert_syserr_to_nscerr: Unhandled error number -1
msg="setting net.ipv4.tcp_congestion_control to hybla failed (retval -1 stack linux2.6.26", file=../src/internet/model/nsc-sysctl.cc, line=151
terminate called without an active exception

OR
msg="Attribute name=net.ipv4.tcp_congestion_control does not exist for this object: tid=ns3::Ns3NscStack<linux2.6.26>", file=../src/core/model/object-base.cc, line=198

After a lot of digging and investigations, I can confirm that there is a conflict caused by the enabled modules "Openflow" and "OFSwitch13". Unlike, "Scratch Folder" the examples are built against specific modules instead of all_modules, thus the script can run normally from examples.

I interested to analyze different tcp variants available on the linux kernel on NSC stacks with the presence of openflow switch.
my system is NS-3.23 on Ubuntu 14.04, x64 / gcc-4.8/4.9/5.3. python 2.7


Packet Tags

Originally reported by Luciano Chaves (Bitbucket: ljerezchaves, GitHub: ljerezchaves)


Com a implementação atual do OpenFlow, os pacotes internos do ns3 são destruídos ao entrar no switch e reconstruídos ao serem enviados por alguma porta de saída. Isso faz com que as tags associadas ao pacote (e acredito também, aos bytes) se percam. Por conta disso, o FlowMonitor não consegue funcionar corretamente.


SIGSEGV at OFSwitch13Device

Hello,
I'm experiencing some issues when running large scale and long simulations using ofswitch13.
After a while the program receives a segmentation fault at OFSwitch13Device::BufferPacketRetrieve. In shorter simulations the module appears to work without problems, so I was not yet able to identify what is the cause of the problem. Or if this occurs in time consuming simulations (multiple hours), due to large amounts of traffic or when dealing with multiple data streams at the same time.

I've attached a gdb output showing the issue.
gdboutput.txt

install ofswitch13-5.2.0 into NS3.36.1 error

I have install ofswitch13, the version 5.2.0 into ubuntu18.04TLS and NS3.36.1 following the step in the manul, but it is off(missing dependency).
error

error2

how can solve this problem?

actions set_field pack error

When the controller sends a Packet_Out with a SetField Action, the buffer_id and other fields would be set to zero, when packing the packet to be sent.
On further debugging, I found that the problem is on function ofl_msg_pack_packet_out line: 227 ( https://github.com/ljerezchaves/ofsoftswitch13/blob/625f01384522579db8f1c361209319530d53774a/sources/oflib/ofl-messages-pack.c#L227 )
the pointer to buf is never updated while packing an action, which overwrites the packet_out fields.

Patching ns-3.37 error

I attempt to patch the ns-3.37 modules as per the instructions in the docs. This is done from the ns-3.37 base directory.
However, the files cannot be found.

patch -p1 < contrib/ofswitch13/utils/ofswitch13-3_37.patch

can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/build-support/custom-modules/ns3-configtable.cmake b/build-support/custom-modules/ns3-configtable.cmake
|index 3b972d8fe..3d2ec356a 100644
|--- a/build-support/custom-modules/ns3-configtable.cmake
|+++ b/build-support/custom-modules/ns3-configtable.cmake
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 19
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/src/csma/model/csma-net-device.cc b/src/csma/model/csma-net-device.cc
|index 9180e6c14..48932222d 100644
|--- a/src/csma/model/csma-net-device.cc
|+++ b/src/csma/model/csma-net-device.cc
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 72
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/src/csma/model/csma-net-device.h b/src/csma/model/csma-net-device.h
|index 4c7af46c8..ca24e0d87 100644
|--- a/src/csma/model/csma-net-device.h
|+++ b/src/csma/model/csma-net-device.h
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 103
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/src/virtual-net-device/model/virtual-net-device.cc b/src/virtual-net-device/model/virtual-net-device.cc
|index 6b19ef1d7..b6122ac71 100644
|--- a/src/virtual-net-device/model/virtual-net-device.cc
|+++ b/src/virtual-net-device/model/virtual-net-device.cc
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 149
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/src/virtual-net-device/model/virtual-net-device.h b/src/virtual-net-device/model/virtual-net-device.h
|index 66718596a..c0eb0c468 100644
|--- a/src/virtual-net-device/model/virtual-net-device.h
|+++ b/src/virtual-net-device/model/virtual-net-device.h
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
2 out of 2 hunks ignored

Compatibilidade de tempo

Originally reported by Luciano Chaves (Bitbucket: ljerezchaves, GitHub: ljerezchaves)


Como o ofsoftswitch13 é implementado usando funções de tempo real do kernel, e o ns3 usa um tempo de simulação independente, não há compatibilidade nos campos "time" das estruturas. Isso impede, por exemplo, o timeout de regras nas tabelas. É preciso encontrar uma estratégia para solucionar este problema.


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.