from config.experiment_config_lib import ControllerConfig from sts.topology import MeshTopology from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig # Use POX as our controller start_cmd = "./pyretic.py -m p0 pyretic.examples.firewall_for_sts_no_close" controllers = [ ControllerConfig( start_cmd, cwd="../pyretic", kill_cmd= "ps aux | grep -e pox -e pyretic | grep -v simulator | cut -c 9-15 | xargs kill -9" ) ] topology_class = MeshTopology topology_params = "num_switches=3" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params) control_flow = Fuzzer( simulation_config, input_logger=InputLogger(), invariant_check_name="InvariantChecker.python_check_loops", check_interval=5, halt_on_violation=True)
command_line = ( '''./pox.py --verbose ''' '''sts.syncproto.pox_syncer --blocking=False ''' #'''openflow.mock_discovery forwarding.l2_multi ''' '''openflow.discovery forwarding.l2_multi ''' '''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ ControllerConfig(command_line, cwd="pox", sync="tcp:localhost:18899") ] topology_class = MeshTopology topology_params = "num_switches=2" dataplane_trace = "dataplane_traces/ping_pong_same_subnet.trace" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, dataplane_trace=dataplane_trace, multiplex_sockets=True) control_flow = Fuzzer( simulation_config, check_interval=20, #mock_link_discovery=True, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="check_for_loops_or_connectivity", steps=241, #random_seed=466448715 ) #control_flow = Interactive(simulation_config, input_logger=InputLogger())
# Allow configs to be specified as paths as well as module names if args.config.endswith('.py'): args.config = args.config[:-3].replace("/", ".") try: config = __import__(args.config, globals(), locals(), ["*"]) except ImportError: # try again, but prepend config module path config = __import__("config.%s" % args.config, globals(), locals(), ["*"]) # For controlling the simulation if hasattr(config, 'control_flow'): simulator = config.control_flow else: # We default to a Fuzzer simulator = Fuzzer(SimulationConfig()) # Set an interrupt handler def handle_int(signal, frame): print >> sys.stderr, "Caught signal %d, stopping sdndebug" % signal if (simulator.simulation_cfg.current_simulation is not None): simulator.simulation_cfg.current_simulation.clean_up() sys.exit(0) signal.signal(signal.SIGINT, handle_int) signal.signal(signal.SIGTERM, handle_int) # Start the simulation try: simulator.simulate() finally:
from config.experiment_config_lib import ControllerConfig from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig from sts.invariant_checker import InvariantChecker # Use POX as our controller command_line = ('''./pox.py openflow.spanning_tree openflow.discovery ''' '''forwarding.l2_pairs ''') controllers = [ControllerConfig(command_line, cwd="carp")] simulation_config = SimulationConfig(controller_configs=controllers) # Use a Fuzzer (already the default) control_flow = Fuzzer( simulation_config, fuzzer_params="experiments/config/fuzzer_params_heavy_failures.py", halt_on_violation=True, check_interval=20, input_logger=InputLogger(), invariant_check_name="check_for_loops_blackholes", initialization_rounds=150)
from config.experiment_config_lib import ControllerConfig from sts.topology import MeshTopology, BufferedPatchPanel from sts.control_flow import Interactive, Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig # Use POX as our controller start_cmd = "./pox.py --verbose openflow.of_01 --address=__address__ --port=__port__ openflow.discovery forwarding.l2_multi_syn_mem_corruption" controllers = [ ControllerConfig(start_cmd, cwd="pox", address="127.0.0.1", port=8888) ] topology_class = MeshTopology topology_params = "num_switches=4" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params) control_flow = Fuzzer( simulation_config, check_interval=1, #mock_link_discovery=True, fuzzer_params="experiments/syn_mem_corruption_3switch/fuzzer_params.py", halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="InvariantChecker.check_liveness", steps=4000, #random_seed=466448715 )
command_line = ( '''./pox.py --verbose --no-cli sts.syncproto.pox_syncer ''' '''openflow.discovery openflow.spanning_tree forwarding.l2_multi ''' '''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ ControllerConfig(command_line, port=6632, cwd="pox", sync="tcp:localhost:18901") ] topology_params = "num_pods=10" simulation_config = SimulationConfig(controller_configs=controllers, topology_params=topology_params, multiplex_sockets=True) timestamp_results = True # Use a Fuzzer (already the default) control_flow = Fuzzer( simulation_config, #fuzzer_params="exp/config/fuzzer_params_migration_and_switches.py", check_interval=20, halt_on_violation=True, single_hm_wait_rounds=30, initialization_rounds=70, steps=300, input_logger=InputLogger(), invariant_check_name="check_stale_entries")
'branch': backtick("git rev-parse --abbrev-ref HEAD", cwd=path), 'remote': backtick("git remote show origin", cwd=path), } # Use POX as our controller start_cmd = ( '''./pox.py --verbose --unthreaded-sh ''' '''sts.util.socket_mux.pox_monkeypatcher ''' #'''sts.syncproto.pox_syncer --blocking=False ''' '''openflow.discovery forwarding.topo_proactive ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ControllerConfig(start_cmd, cwd="dart_pox")] topology_class = FatTree topology_params = "num_pods=3" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, multiplex_sockets=True, topology_params=topology_params) control_flow = Fuzzer(simulation_config, check_interval=20, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="check_for_invalid_ports") raise RuntimeError( "Please add this parameter to Fuzzer: fuzzer_params='experiments/snapshot_proactive_pox/fuzzer_params.py'" )
simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, dataplane_trace=dataplane_trace, multiplex_sockets=True ) def my_funky_invariant_check(simulation): from sts.invariant_checker import InvariantChecker result = InvariantChecker.check_loops(simulation) if result: return result result = InvariantChecker.check_connectivity(simulation) if not result: print "Connectivity established - bailing out" import sys sys.exit(0) return [] control_flow = Fuzzer(simulation_config, check_interval=20, #mock_link_discovery=True, halt_on_violation=True, input_logger=InputLogger(), invariant_check=my_funky_invariant_check, steps=141, #random_seed=466448715 ) #control_flow = Interactive(simulation_config, input_logger=InputLogger())
from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig from sts.invariant_checker import InvariantChecker # Use POX as our controller start_cmd = ( '''./pox.py --verbose --no-cli sts.syncproto.pox_syncer --blocking=False''' '''samples.topo forwarding.l2_multi ''' '''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=../sts_socket_pipe''') controllers = [ ControllerConfig(start_cmd, address="sts_socket_pipe", cwd="pox", sync="tcp:localhost:18899") ] dataplane_trace = "dataplane_traces/ping_pong_fat_tree.trace" simulation_config = SimulationConfig(controller_configs=controllers, dataplane_trace=dataplane_trace, multiplex_sockets=True) # Use a Fuzzer (already the default) control_flow = Fuzzer(simulation_config, check_interval=1, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="InvariantChecker.check_liveness")
from sts.topology import MeshTopology from sts.control_flow import Fuzzer, Interactive from sts.input_traces.input_logger import InputLogger from sts.invariant_checker import InvariantChecker from sts.simulation_state import SimulationConfig # Use POX as our controller command_line = ('''./pox.py --verbose openflow.debug ''' #sts.syncproto.pox_syncer ''' '''forwarding.l2_multi ''' #'''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ControllerConfig(command_line, cwd="betta")] topology_class = MeshTopology topology_params = "num_switches=2" dataplane_trace = "dataplane_traces/ping_pong_same_subnet.trace" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, dataplane_trace=dataplane_trace, multiplex_sockets=False) control_flow = Fuzzer(simulation_config, check_interval=80, halt_on_violation=True, input_logger=InputLogger(), invariant_check=InvariantChecker.check_connectivity, steps=81, random_seed=1738290519) #control_flow = Interactive(simulation_config, input_logger=InputLogger())
from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig # Use POX as our controller start_cmd = ( '''./pox.py --verbose ''' #'''sts.syncproto.pox_syncer --interpose_on_logging=False --blocking=False ''' '''openflow.discovery forwarding.l2_multi_synthetic_link_failure_crash ''' '''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ControllerConfig(start_cmd, cwd="pox")] topology_class = MeshTopology topology_params = "num_switches=3" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, multiplex_sockets=True) control_flow = Fuzzer( simulation_config, check_interval=5, fuzzer_params= 'experiments/snapshot_demo_synthetic_link_failure/fuzzer_params.py', steps=2000, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="InvariantChecker.check_liveness")
# dataplane_trace=dataplane_trace, #multiplex_sockets=True ) def my_funky_invariant_check(simulation): from sts.invariant_checker import InvariantChecker result = InvariantChecker.check_loops(simulation) if result: return result result = InvariantChecker.python_check_connectivity(simulation) if not result: print "Connectivity established - bailing out" import sys sys.exit(0) return [] control_flow = Fuzzer( simulation_config, check_interval=20, #mock_link_discovery=True, halt_on_violation=True, input_logger=InputLogger(), invariant_check=my_funky_invariant_check, steps=999, fuzzer_params="exp/config/fuzzer_params_heavy_failures.py" #random_seed=466448715 ) #control_flow = Interactive(simulation_config, input_logger=InputLogger())
simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params) # dataplane_trace=dataplane_trace) #simulation_config = SimulationConfig(controller_configs=controllers, # dataplane_trace=dataplane_trace) def fast_die_invariant_check(simulation): from sts.invariant_checker import InvariantChecker result = InvariantChecker.check_loops(simulation) if result: return result result = InvariantChecker.python_check_connectivity(simulation) if not result: print "Connectivity established - bailing out" import sys sys.exit(0) return [] # Use a Fuzzer (already the default) control_flow = Fuzzer(simulation_config, input_logger=InputLogger(), check_interval=20, halt_on_violation=True, steps=300, invariant_check=fast_die_invariant_check)
from experiment_config_lib import ControllerConfig from sts.control_flow import Fuzzer from sts.simulation_state import SimulationConfig # Use POX as our controller #command_line = "./pox.py --verbose --no-cli openflow.of_01 --address=__address__ --port=__port__ sts.syncproto.pox_syncer samples.topo forwarding.l2_learning messenger.messenger samples.nommessenger" command_line = "./pox.py --verbose --no-cli openflow.of_01 --address=__address__ --port=__port__ sts.syncproto.pox_syncer samples.topo forwarding.l2_multi messenger.messenger samples.nommessenger" controllers = [ ControllerConfig(command_line, cwd="pox", sync="tcp:localhost:18899") ] dataplane_trace = "dataplane_traces/ping_pong_fat_tree.trace" simulation_config = SimulationConfig(controller_configs=controllers, dataplane_trace=dataplane_trace) control_flow = Fuzzer(simulation_config, check_interval=1)
from config.experiment_config_lib import ControllerConfig from sts.topology import MeshTopology from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig # Use POX as our controller command_line = ('''./pox.py --verbose ''' '''sts.syncproto.pox_syncer --blocking=False ''' '''openflow.discovery forwarding.l2_multi ''' '''sts.util.socket_mux.pox_monkeypatcher ''' '''openflow.of_01 --address=__address__ --port=__port__''') controllers = [ControllerConfig(command_line, cwd="pox", sync="tcp:localhost:18899")] topology_class = MeshTopology topology_params = "num_switches=2" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, multiplex_sockets=True) control_flow = Fuzzer(simulation_config, check_interval=20, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="check_for_loops_blackholes_or_connectivity")
from experiment_config_lib import ControllerConfig from sts.control_flow import Fuzzer from sts.input_traces.input_logger import InputLogger from sts.invariant_checker import InvariantChecker from sts.simulation_state import SimulationConfig # Use NOX as our controller command_line = "./nox_core -i ptcp:6633 routing" controllers = [ControllerConfig(command_line, cwd="nox_classic/build/src", address="127.0.0.1", port=6633)] dataplane_trace = "dataplane_traces/ping_pong_fat_tree.trace" simulation_config = SimulationConfig(controller_configs=controllers, dataplane_trace=dataplane_trace) # Use a Fuzzer (already the default) control_flow = Fuzzer(simulation_config, input_logger=InputLogger(), check_interval=80, invariant_check=InvariantChecker.check_connectivity)
from config.experiment_config_lib import ControllerConfig from sts.topology import MeshTopology from sts.control_flow import Fuzzer, Interactive from sts.input_traces.input_logger import InputLogger from sts.simulation_state import SimulationConfig # Work directory must be absolute path dummy_cmd = "sleep 1" # Use Floodlight as our controller controllers = [ ControllerConfig(dummy_cmd, cwd="experiments/scripts/bsc", address="10.192.5.196", port=6633, controller_type="bsc", label="c1"), ControllerConfig(dummy_cmd, cwd="experiments/scripts/bsc", address="10.192.5.197", port=6633, controller_type="bsc", label="c2")] topology_class = MeshTopology topology_params = "num_switches=3" simulation_config = SimulationConfig(controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, kill_controllers_on_exit=False ) control_flow = Fuzzer(simulation_config, check_interval=5, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="check_everything", steps=500, fuzzer_params="experiments/config/fuzzer_params_heavy_failures.py" )
# Use Floodlight as our controller additional_ports = find_ports(of=range(6633, 6833), rest=range(8080, 8280), jython=range(7655, 7855)) controllers = [ ControllerConfig(command_line, cwd="floodlight", port=additional_ports['of'], additional_ports=additional_ports, label="c1", config_template= "experiments/config/floodlightconfig.properties.template") ] topology_class = MeshTopology topology_params = "num_switches=3" simulation_config = SimulationConfig( controller_configs=controllers, topology_class=topology_class, topology_params=topology_params, ) control_flow = Fuzzer( simulation_config, check_interval=20, halt_on_violation=True, input_logger=InputLogger(), invariant_check_name="check_for_loops_or_connectivity", steps=999, fuzzer_params="experiments/config/fuzzer_params_heavy_failures.py")