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.
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.
(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)
-
Export path to your OpenVSwitch executables:
export PATH=$PATH:/path/to/your/openvswitch/executables
-
Run openVSwitch
sudo ovs-ctl start
You can see this page to understand how to run it.
-
Run our ryu application:
ryu-manager controller13.py
You can install ryu via
pip install ryu
-
Make sure your config is correct. See
./controller_params.conf
-
Run the
traffic_generation.py
python script to generate your traffic. -
💫Retrieve your generated traffic.
Make sure you have installed:
pip install hyperloglog
- Run
./pcap_sampler.py
with arguments denoting where the traffic capture file is
- 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.
- [openVSwitch]
- [ryu]
- [mininet]
- [sourcesonoff]
- [wireshark]
- [scapy]