Openflow/SDN networks gives a remote controller the ability to manage the behavior of network devices i.e. configurations. They can forward instruction sets to dynamically change network configuration. But there is always some room for bugs and failures in your SDN controller application. What i am getting is that i had to painstakingly dig through logs to find the one or two inputs that lead my controller software to break. What are the best testing practices for controller code i.e. traffic simulator, stress testing etc
Veryx PktBlaster is excellent for with following features
1.Simulating mix of OpenFlow switch versions
2.Throughput, Latency Measurement for both Fixed Load and Varying Load
and plenty more Features
Reference: http://sdn.veryxtech.com
there is a company called Ixia who provides Ethernet testing SW and HW. They have a comprehensive portfolio to test OpenFlow/SDN. They are also the chair of Openflow industry body.
http://www.ixiacom.com/solutions/sdn-openflow/index.php
Why not use Mininet for testing your controller/application. You can direct Mininet to not use its own controller and instead use the controller/application running on localhost..
You can use remote controllers with mininet.
For example,
Start a VM, start flood light controller
After the floodlight is up and running, you can go to your browser and type in a URL as follows http://192.168.110.2:8080/ui/index.html (Replace 192.168.110.2 with the proper inet address).
Start a VM, start mininet with following topology
sudo mn --topo linear,2 --controller=remote,ip=ip_floodlight_controller,port=6633
So now you can emulate any topology in mininet and test controller for bugs and failures.
In summary, you can use any other controller with mininet, emulate any topology in mininet and test your controller for bugs and failures in different scenarios.
Try the below link that contains a tutorial named as OpenFlowTutorial.
http://archive.openflow.org/wk/index.php/OpenFlow_Tutorial
It is one of the best tutorials for SDNs implementation.
It explains about setting up mininet,wireshark(for monitoring),which controller APIs are available, how to implement a controller and so on.
Related
Long story short - I need to use networking between projects to have separate billing for them.
I'd like to reach all the VMs in different projects from a single point that I will use for provisioning systems (let's call it coordinator node).
It looks like VPC network peering is a perfect solution to this. But unfortunately one of the existing networks is "legacy". Here's what google docs state about legacy networks.
About legacy networks
Note: Legacy networks are not recommended. Many newer GCP features are not supported in legacy networks.
OK, naturally the question arises: how do you migrate out of legacy network? Documentation does not address this topic. Is it not possible?
I have a bunch of VMs, and I'd be able to shutdown them one by one:
shutdown
change something
restart
unfortunately it does not seem possible to change network even when VM is down?
EDIT:
it has been suggested to recreate VMs keeping the same disks. I would still need a way to bridge legacy network with new VPC network to make migration fluent. Any thoughts on how to do that using GCE toolset?
One possible solution - for each VM in the legacy network:
Get VM parameters (API get method)
Delete VM without deleting PD (persistent disk)
Create VM in the new VPC network using parameters from step 1 (and existing persistent disk)
This way stop-change-start is not so different from delete-recreate-with-changes. It's possible to write a script to fully automate this (migration of a whole network). I wouldn't be surprised if someone already did that.
UDPATE
https://github.com/googleinterns/vm-network-migration tool automates the above process, plus it supports migration of a whole Instance Group or Load Balancer, etc. Check it out.
I have build custom network topology in mininet 105 switches connected with each other by speficied logic, and every switch has a node connected with that.
the problem is when i ping s2 --> s94 packet reaches to the destination but when i invoke ping from h2 --> h94 it shows total packet loss.
can anyone guide me why is that? its important since i have to generate traffic over network.
i am using Mininet Vm http://mininet.org/download/
For Mininet 2.0.0, the default controller for the mn command is ovs-controller (which can be installed automatically in Ubuntu.) Unfortunately ovs-controller only supports up to 16 switches. If you want to use more than 16 switches, you should use a controller that supports more than 16 switches .
Solution: Try POX controller!
GITHUB download link
Documentation
Use a pox controller. In the controller terminal,
$cd pox
$./pox.py openflow.discovery forwarding.l2_learning
Now try a pingall
If the topology contains loops I'm not sure if pox will do the job. Previously had a similar issue when I basically needed STP or similar. The Onos controller can do this for you.
What could be mentioned here is that switches in mininet are running in the host net namespace (as apposed to hosts that are running in their own namespaces). So pinging from s2 is likely to give you weird results anyway. If you for example would do s2 ifconfig you would see all interfaces of all switches. My point is, testing connectivity by using the switches can be misleading.
Also, as the other posts tell you, you obviously need a OF controller.
What is the difference between "SDN Platform" and "SDN Controller Platform"? These two indicate the same things? Could someone please explain this to me?
There is not much literal difference between these terms, and usually they are referred interchangeably. SDN Controller Platform is actually the controller software that takes care of entire network manageability.
The controller is said as a platform, as this gives the programmer the flexibility to add specific modules (for e.g., a routing module which takes care of routing only multicast packets using some very different routing algorithm) and run them on the controller. A controller when used without any specific modules, essentially sends all packets to everywhere (well, it depends on the controller implementation also). The controller is a platform where you are expected to do stuff and make your network behave the way you want.
And sometimes SDN Platform is used for SDN Infrastructure which includes topology, switches, one or more controllers and so on. Essentially describing the whole network infrastructure.
What you need to know is SDN components, like controller, switches, protocols etc.
I dont see a exact difference between two terminologies you have mentioned .
Briefing SDN Platform simply denotes the seperation of Data plane and Control Plane . I know this can be confusing . But think it this way when you seperate the brain of a switch and put it in another layer ..
Generally SDN consists three layers (from top)
1)Applications -- Consists of Network Applications eg: FW,IPsec etc..
NB API --- no defined Standard yet
2)Control --- consists of Controller
SB API --- This is where OPENFLOW is used
3)Infrastructure --- consists of network devices eg:Switches
The Control Layer connects these two layes using NB API and SB API's
SDN simply gives advantage to network admin to configure multiple network devices .
Using a SDN Controller they can configure multiple network devices at a single place
Hope this helps :D
From software perspective, the term 'platform' emphasises on how a software would be used as the enabler for other applications.
A SDN contoller can be any application which pushes policies to the underlying network. SDN platform on the other hand, should provide extended tools, APIs and hooks to facilitate running 3rd party applications on top of it.
SDN is one of the best open-source platform for developing the projects. SDN platform is just nothing but the networking platform which provides us with numerous benefits to work on topologies. It gives a option to the user to install any controller of their choice and work on it.
SDN Controller platform is the SDN that provides a base platform for different number of controllers onto it. They work on API. SDN Controller platform architecture differs for the different controllers.
I'm currently building a network monitoring system that will notify me if any interface errors or network issues. after building it we would like to be able to test if it works before implementing it to our network, so need a way of simulating network interface errors on a switch or networking device?
I was thinking about cutting ethernet cables or terminating them wrong, but ideally I need soemthing that can create loads of different types of interface errors
any help would be much appreciated
Sean
You could download Nagios which is a powerful, enterprise-class host, service, application, and network monitoring program. Designed to be fast, flexible, and rock-solid stable. Nagios runs on *NIX hosts and can monitor Windows, Linux/Unix/BSD, Netware, and network devices.
you can download other network monitoring systems from sourceforge they have many different network tools written in different languages most of them are open source. you can take notes of their
design and maybe add to the application you building.
if you want to test your application the best thing to do is to tested on real environment, I believe their might be one or two Virtual Lab.
But Ideally I would tested on real interfaces
One of the ways to simulate network failures would be to dynamically change the firewall settings. You can make packets drop, hosts, disappear, etc. This doesn't require any physical damage to anything :)
I'm working as a student-intern in a govt organization to complete my major-project at college.
My task is to simulate a dynamic-routing protocol for ad-hoc networks. As I've good programming experience in C++ thus I've chosen OMNET++ network simulator.
It was easy to adapt to the working environment and I could play around with the samples provide in OMNET IDE.
Problem Statement:
Now, I need to start working on my task i.e. [ http://www.mediafire.com/?s5ajo8gavhcf6sr ] pls have a look at the paper.
Could someone please give me a few general instructions on building an adhoc network model in omnet and then apply a routing protocol to it.
I would really appreciate if you could just read the abstract of that paper and provide me deeper insights if possible.
Unfortunately your uploaded file is deleted.
So I would suggest to use the INETMANET framework for simulating adhoc network.
There are Manet routing protocols like AODV
You have there Wifi b,g and also 802.15.4 link layers
And there are modules for the whole TCP/IP stack.