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 :(
- Setup the
input_validationexperiment and configurations:- In your desired directory,
git clone https://github.com/akrentsel/input-validation.git - In that directory, modify configuration files
log_config.yamlandexperiment_config.yaml; you will probably need to do this.- In particular, pay attention to the following in
experiment_config.yaml:telemetry_config/base_log_dirtelemetry_config/error_log_direxperiment_config/logging_config_filepath(set this to the path oflog_config.yaml)
- And to the following in
log_config.yaml:handlers/*/filename
- In particular, pay attention to the following in
- Using the same
pipbinary you will be running insudomode, runcd input-validation; {path to pip binary} install -r requirements.txt
- In your desired directory,
- Start ONOS controller:
- in one terminal, run
sudo docker run -t -p 8181:8181 -p 8101:8101 -p 5005:5005 -p 830:830 --name onos onosproject/onos; wait for a status message of the formUpdated node {IP address} state to READYbefore proceeding (usually that IP is 172.17.0.2); do not quit or exit this terminal, or use -d flag to start the container in detached mode - in another terminal, using the IP address seen in the above status message, run
ssh -p 8101 karaf@{IP address}, and use the default passwordkaraf; this should open an ONOS karaf CLI interface. - Remember that IP address; you will need it later to run the experiment.
- in one terminal, run
- Configure ONOS controller:
-
in the ONOS karaf CLI interface from the previous step, 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.fwdby 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)
-
Wait for the previous step to complete; then, run the following in that same CLI interface:
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 trueMake sure there are no messages of the form
... is not configured; if they appear, rerun these commands as many times as necessary. -
After this, can
logoutof the karaf interface.
-
- Check that IPv6 is disabled on the controller; if not:
- append the following to
/etc/sysctl.conf:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 - run
sudo sysctl -pto make changes take effect.
- append the following to
- Run the experiment:
cd ~/input-validation; sudo {path to python binary} experiment_main.py --config_path={your path to experiment config file} --ip={IP address from controller as seen earlier} --port=6653.- If needed, clear the directory where experiment outputs are stored, and reset the mininet environment with
sudo mn -c - If needed, e.g. due to
python not founderror, runsource ~/.bashrc - If python not installed, install
miniconda3
- If needed, clear the directory where experiment outputs are stored, and reset the mininet environment with
sudo apt-get install mininetsudo docker pull onosproject/onos- disable IPv6:
- append the following to
/etc/sysctl.conf:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 - run
sudo sysctl -pto make changes take effect.
- append the following to