Codebase for exploring feasibility of input validation.
☐ Check if you can run paint
☐ Potato
☐ Decent
☐ Fast
☐ Rich boi
☑ Ask NASA if they have a spare computer :(
- Follow Mininet VM installation instructions here (as option 1)
- In particular, the VM setup notes are important to follow.
- Personal preference: VMWare as virtualization system; Ubuntu 20.04 as the Mininet VM image version.
- Configure the VM to have much more processors and memory (trust me, you will need this)
- my settings: 2 processors, 8 cores per processor; 16GB of memory.
- Also, enlarge the VM disk size (e.g. to 32 GB); not sure if this is needed but it may be.
- you may need to enlarge the partition within the Mininet VM by using Gparted in a Xterm-forwarding-enabled SSH session.
- Install Miniconda in the Mininet VM, making sure to select the option to modify PATH (or .bashrc, I can't remember)
- Now, install the ONOS controller in the Mininet VM.
- Install the dependencies needed for ONOS installation
- or else, ONOS won't build properly!
- Then, build ONOS from source.
- (note: ONOS does have pre-built images, but I couldn't get them to run in the VM. So, we build from source instead!)
- Install the dependencies needed for ONOS installation
- In Mininet VM, clone this repo and install requirements:
cd ~ git clone https://github.com/akrentsel/input-validation.git cd input-validation pip install -r requirements.txt
- Modify configuration files
log_config.yaml
andexperiment_config.yaml
as needed - Start ONOS controller:
- SSH into mininet VM, open CLI window and run
cd ~/onos; bazel run onos-local debug
; wait for a status message of the formUpdated node 127.0.0.1 state to READY
before proceeding. - SSH into in mininet VM, open another CLI window and
cd ~/onos; ./tools/test/bin/onos localhost
; this should open an ONOS CLI interface.
- SSH into mininet VM, open CLI window and run
- Configure ONOS controller, open its topology GUI view, and enable openflow/routing applications:
-
In mininet VM CLI, run
ifconfig -a
to get the IP address for host-only interface; in browser of choice (can be on host computer), go to<ip address>:8181
and login with credentials: username=onos
, password=rocks
; the network topology can be viewed in a GUI by going to theTopology
tab in the dropdown menu. -
In the ONOS CLI interface, run the following:
app activate org.onosproject.openflow app activate org.onosproject.ofagent app activate org.onosproject.reactive-routing app activate org.onosproject.fibinstaller app activate org.onosproject.fwd
by doing this, we activate the following applications:
org.onosproject.openflow
(needed for processing OpenFlow messages)org.onosproject.ofagent
(i'm not sure what this does)org.onosproject.reactive-routing
(needed for using IP-based flow routing)org.onosproject.fibinstaller
(i'm not sure what this does)org.onosproject.fwd
(needed for installing flow tables / flow programming)
-
In the ONOS CLI interface from 2.(2), run the following:
cfg set org.onosproject.fwd.ReactiveForwarding ipv6Forwarding true cfg set org.onosproject.fwd.ReactiveForwarding matchIcmpFields true cfg set org.onosproject.fwd.ReactiveForwarding matchIpv4Address true cfg set org.onosproject.fwd.ReactiveForwarding matchIpv4Dscp true cfg set org.onosproject.fwd.ReactiveForwarding matchIpv6Address true cfg set org.onosproject.fwd.ReactiveForwarding matchIpv6FlowLabel true cfg set org.onosproject.fwd.ReactiveForwarding matchTcpUdpPorts true
Make sure there are no messages of the form
... is not configured
; if they appear, rerun these commands as many times as necessary.
-
- Run the experiment:
cd ~/input-validation; sudo python experiment_main.py
.- If needed, clear the directory where experiment outputs are stored, and reset the mininet environment with
sudo mn -c
- If needed, clear the directory where experiment outputs are stored, and reset the mininet environment with