Skip to content

An application plartform form my research into stochastic sampling optimality.

Notifications You must be signed in to change notification settings

ottersome/MicroFlowEstimation

Repository files navigation

Introduction

This is a repository to test a few algorithms to detect best sampling rate on a network for decision making. This is part of my graduate research thesis. As the testbench I will use OpenFlow, Mininet. References to software, tutorials, guides and paper I used will (not exhaustively) be listed below.

Description

Project is based in mininet + openVSwitch + Ryu Controller. Mininet is in charge of simulating the namespaces, openVSwitch receives rules for forwarding flows, Ryu Controller handles the communication between the logic layer and the forwarding layer. This is to say, the controller will observe the (possible multiple) switches in the network and will communicate with them new rules according to whatever criteria our logic sets.

More Specifically

(This might be incorrect as I change the topology and its surrounding environment quite frequently)

Topology is circular see (./py_utils/topologies/thick.py). When a hosts sends a packet to controller it will immediately bind its mac address to its r ingress port. That way we can form a static map of where the mac addresses come from. With a map in place the controller can communicate with the switches the rules to set in terms of ethernet/mac addresses. Additionally, every rule will have appended to it a sub-rule to send statistics to collector at a specified rate.

(Comment: I am not sure yet whether to make the collector be the same as the controller)

🏃How to Run

Traffic Generation

  1. Export path to your OpenVSwitch executables:

    export PATH=$PATH:/path/to/your/openvswitch/executables
    
  2. Run openVSwitch

    sudo ovs-ctl start
    

    You can see this page to understand how to run it.

  3. Run our ryu application: ryu-manager controller13.py

    You can install ryu via pip install ryu

  4. Make sure your config is correct. See ./controller_params.conf

  5. Run the traffic_generation.py python script to generate your traffic.

  6. 💫Retrieve your generated traffic.

For Sampling:

Make sure you have installed:

  1. pip install hyperloglog
  2. Run ./pcap_sampler.py with arguments denoting where the traffic capture file is

TODOS

  • Create Basic Topologies
  • Setup Ryu Controller
    • Request Features
    • Learn Topology
    • Forward to Collector
  • Setup Traffic
    • Setup simple Scapy Traffic (skip for now)
    • Setup Self-Similar Traffic
    • Confirm Self-Similar Statistics
  • Implement Time Sampling
  • Create a dpctl.c modification to allow for sampling in the time domain.

Dependencies

  1. [openVSwitch]
  2. [ryu]
  3. [mininet]
  4. [sourcesonoff]
  5. [wireshark]
  6. [scapy]

References:

About

An application plartform form my research into stochastic sampling optimality.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages