Skip to content

Commit

Permalink
Tidied Up The Code
Browse files Browse the repository at this point in the history
Modified README.md
Changed topology.ini to FatTree Architecture described in Readme/Tutorial
  • Loading branch information
christopher.metter committed Sep 4, 2014
1 parent be88a06 commit 70d2633
Show file tree
Hide file tree
Showing 61 changed files with 8,933 additions and 8,685 deletions.
485 changes: 243 additions & 242 deletions .gitignore

Large diffs are not rendered by default.

47 changes: 31 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,62 @@
#OFCProbe

![OFCProbe](http://www3.informatik.uni-wuerzburg.de/research/ngn/ofcprobe/ofcprobe-logo.png)

We present the platform-independent and flexible OpenFlow Controller Analysis Tool OFCProbe on this website. It features
a scalable and modular architecture that allows a granular and deep analysis of the controllers behaviors and
characteristics. OpenFlow controllers can be pushed to their limit and the bottle-necks can be investigated.
The tool allows the emulation of virtual switches that each provide sophisticated statistics about the controller
behavior.

## Building OFCProbe
## Table of Contents
- [Building](#building)
- [Tutorial](#tut)
- [Requirements](#req)
- [Demo](#demo)
- [Preperations](#prep)
- [Simulation Sequence](#simseq)
- [Topology Testing](#topotest)
- [Random IAT Values after Distribution](#radomdistri)
- [Statistics Content](#statcontent)
- [More Information](#infos)

## <a name="building"></a>Building OFCProbe

- Download and install Maven
- make sure that your maven setup allows new repositories
- Make sure that your Maven setup allows new repositories
- Execute `mvn package` to download dependencies and compile OFCProbe.
- The result can be found in `target/ofcprobe-*-one-jar.jar`.


## Tutorial
## <a name="tut"></a>Tutorial

###Requirements:
### <a name="req"></a>Requirements:

- Java
- Java 7
- OpenFlow Controller
- Preferably a Linux System (Shell Scripts + Screen Usage in Scripts provided)
- Passwordless SSH-Connection between OF Controller Host and OFCProbe Host for User openflow
- Optional: SNMP Server on Controller Host (for CPU and RAM Utilization of OF Controller Host)
- Build it as described above or download [OFCProbe](https://github.com/lsinfo3/ofcprobe/releases)

###Demo:
### <a name="demo"></a>Demo:

- Optional: Change Controller IP/Port in demo.ini (default: localhost:6633)
- To Start a sample Setup execute `java -jar target/ofcprobe-*-one-jar.jar demo.ini`

###Preperations:
### <a name="prep"></a>Preperations:

see [PREPERATIONS.md](https://github.com/lsinfo3/ofcprobe/blob/master/PREPERATIONS.md)
see [PREPERATIONS](https://github.com/lsinfo3/ofcprobe/blob/master/PREPERATIONS.md)

###Simulation Sequence
### <a name="simseq"></a>Simulation Sequence

see [BEST_EFFORT.md](https://github.com/lsinfo3/ofcprobe/blob/master/BEST_EFFORT.md)
see [BEST_EFFORT](https://github.com/lsinfo3/ofcprobe/blob/master/BEST_EFFORT.md)


### Topology Testing
### <a name="topotest"></a>Topology Testing

see [TOPOLOGY_EMU.md](https://github.com/lsinfo3/ofcprobe/blob/master/TOPOLOGY_EMU.md)
see [TOPOLOGY_EMU](https://github.com/lsinfo3/ofcprobe/blob/master/TOPOLOGY_EMU.md)

####Random IAT Values after Distribution
#### <a name="randomdistri"></a>Random IAT Values after Distribution

Example for NormalDistribution, mean = 10, stdev=5:

Expand All @@ -59,6 +71,9 @@ Individual Settings for Switches
* Check ofSwitch.ini and change it


### Statistics Content
### <a name="statcontent"></a>Statistics Content

see [STATISTICS_CONTENT](https://github.com/lsinfo3/ofcprobe/blob/master/STATISTICS_CONTENT.md)

see [STATISTICS_CONTENT.md](https://github.com/lsinfo3/ofcprobe/blob/master/STATISTICS_CONTENT.md)
### <a name="infos"></a>More Infos
see [OFCProbe@LS3](http://www3.informatik.uni-wuerzburg.de/research/ngn/ofcprobe/ofcprobe_instructions)
14 changes: 7 additions & 7 deletions config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
#Used OpenFlow Version for this Simulation; int[1]
config.openflow_version = 1
#Number of emulated Switches - can be overwritten via commandLine option #2; will automatically be overwritten, if graphml-file is used; int [1,inf]
config.switchCount = 15
config.switchCount = 20
#Number of Threads to use for the ofSwitches; int [1, inf]
config.threadCount = 8
config.threadCount = 4
#Controller Address; ip address
config.controllerAddress = 192.168.178.5
#config.controllerAddress = localhost
config.controllerAddress = localhost
#Controller Port; int [1,inf]
config.controllerPort = 6633
#DPID of the first emulated Switch; int [1,inf]
Expand Down Expand Up @@ -49,11 +48,11 @@ trafficGenConfig.scenario = TCPSYN/PCAP
#Flag of the ARPing - only available when 'config.hasTopology = true'; [true/false]
trafficGenConfig.arpEnabled = true
#In each interation the ofSwitches queues should be filled to this value; int[1,inf]
trafficGenConfig.fillThreshold = 15
trafficGenConfig.fillThreshold = 500
#Type of InterArrivalTime of PacketGeneration Events; [0=static,1=random after Distribution]
trafficGenConfig.iatType = 0
#InterArrivalTime of PacketGenration Events in ms; int[1,inf]
trafficGenConfig.IAT = 1000
trafficGenConfig.IAT = 100
#Number of Generationloops for each PacketGeneration Event, standard is 1; int[1,inf]
trafficGenConfig.countPerEvent = 1
#always use the same Payload instead of a random generated payload; [true/false]
Expand All @@ -76,5 +75,6 @@ trafficGenConfig.iatDistributionParamter2 = 1

###StatisticModules Specific Configuration Options
#Used Statistic Modules for this Simulation,seperated by ","(comma); currently Supported: [PPS,RTT,CPU,RAM,TSL,QLM]
statsConfig.modules=PPS,RTT,CPU,RAM,TSL,QLM
#CPU and RAM need SNMP Server on Controller Host
statsConfig.modules=PPS,RTT,TSL,QLM
#statsConfig.modules=PPS,CPU,RAM,TSL,QLM
3 changes: 1 addition & 2 deletions demo.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ config.switchCount = 25
#Number of Threads to use for the ofSwitches; int [1, inf]
config.threadCount = 4
#Controller Address; ip address
#config.controllerAddress = localhost
config.controllerAddress = 192.168.178.5
config.controllerAddress = localhost
#Controller Port; int [1,inf]
config.controllerPort = 6633
#DPID of the first emulated Switch; int [1,inf]
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.uni-wuerzburg.info3</groupId>
<artifactId>ofcprobe</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0.3</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
Expand Down
87 changes: 40 additions & 47 deletions src/main/java/de/uniwuerzburg/info3/ofcprobe/util/OFMatsch.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2014 Christopher Metter
*
* This program is free software: you can redistribute it and/or modify
Expand All @@ -16,48 +16,49 @@
*/
package de.uniwuerzburg.info3.ofcprobe.util;


import org.openflow.protocol.OFMatch;

/**
* MetaOFMatch which overrides OFMatch.equals()
*
* @author Christopher Metter([email protected])
*
*/
public class OFMatsch extends OFMatch{
public class OFMatsch extends OFMatch {

/**
*
*/
private static final long serialVersionUID = 1L;

/**
* Constructor
*/
public OFMatsch() {
super();
}

/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Constructor from match
*
* @param match the Match to scan
*/
public OFMatsch(OFMatch match) {
fromMatch(match);
}

/**
* Constructor
*/
public OFMatsch() {
super();
}

/**
* Constructor from match
* @param match the Match to scan
*/
public OFMatsch(OFMatch match) {
fromMatch(match);
}

/**
* Read Settings from match
* @param match the match
*/
public void fromMatch(OFMatch match) {
this.fromString(match.toString());
}

public boolean equals(Object obj){

// System.err.println("IM NOT SERIOUS ANYMORE!");
if (this == obj) {
/**
* Read Settings from match
*
* @param match the match
*/
public void fromMatch(OFMatch match) {
this.fromString(match.toString());
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
Expand All @@ -67,20 +68,12 @@ public boolean equals(Object obj){
return false;
}
OFMatch other = (OFMatch) obj;
if(!Util.equalsFlow(this, other)) {
System.err.println(this.toString() + ";" + other.toString() + "; false");

if (!Util.equalsFlow(this, other)) {
System.err.println(this.toString() + ";" + other.toString() + "; false");
}

return Util.equalsFlow(this, other);

}

// public int hashCode() {
// System.err.println("some1 was once serious");
// return 42; //gnihih
// }



}
}
Loading

0 comments on commit 70d2633

Please sign in to comment.