Пример #1
0
 def load_ttf(self):
     '''
 loads topology transfer function
 '''
     f = TF(1)
     f.load_from_json("%s/topology.tf.json" % self.settings["input_path"])
     return f
Пример #2
0
 def load_ttf(self):
     '''
     loads topology transfer function
     '''
     f = TF(1)
     f.load_from_json("%s/topology.tf.json"%self.settings["input_path"])
     return f
Пример #3
0
    def load_ntf(self):
        '''
    load transfer functions into a emulated transfer function with @layer layers.
    '''
        if "remove_duplicates" in self.settings.keys() and \
          self.settings["remove_duplicates"]:
            emul_tf = emulated_tf(self.settings["num_layers"], True)
        else:
            emul_tf = emulated_tf(self.settings["num_layers"], False)

        emul_tf.set_fwd_engine_stage(self.settings["fwd_engine_layer"])

        emul_tf.set_multipliers(self.settings["switch_id_multiplier"], \
                                self.settings["port_type_multiplier"], \
                                self.settings["out_port_type_const"])

        for rtr_name in self.settings["rtr_names"]:
            f = TF(1)
            f.load_from_json("%s/%s.tf.json" %
                             (self.settings["input_path"], rtr_name))
            if "hash_table" in self.settings.keys():
                f.activate_hash_table(self.settings["hash_table"])
            emul_tf.append_tf(f)
        emul_tf.length = f.length
        return emul_tf
Пример #4
0
    def load_ntf(self):
        '''
        load transfer functions into a emulated transfer function with @layer layers.
        '''
        if "remove_duplicates" in self.settings.keys() and \
          self.settings["remove_duplicates"]:
            emul_tf = emulated_tf(self.settings["num_layers"],True)
        else:
            emul_tf = emulated_tf(self.settings["num_layers"],False)

        emul_tf.set_fwd_engine_stage(self.settings["fwd_engine_layer"])

        emul_tf.set_multipliers(self.settings["switch_id_multiplier"], \
                                self.settings["port_type_multiplier"], \
                                self.settings["out_port_type_const"])

        for rtr_name in self.settings["rtr_names"]:
            f = TF(1)
            f.load_from_json("%s/%s.tf.json"%(self.settings["input_path"],
                                                rtr_name))
            if "hash_table" in self.settings.keys():
                f.activate_hash_table(self.settings["hash_table"])
            emul_tf.append_tf(f)
        emul_tf.length = f.length
        return emul_tf
Пример #5
0
mapf = json.load(f)
inv_mapf = {}
for rtr in mapf:
  for port in mapf[rtr]:
    inv_mapf[int(mapf[rtr][port])] = "%s-%s"%(rtr,port)
    inv_mapf[int(mapf[rtr][port])+OUTPORT_CONST] = "%s-%s"%(rtr,port)
    inv_mapf[int(mapf[rtr][port])+INTER_CONST] = "^%s-%s"%(rtr,port)
  fwd_id = get_fwd_port_id(int(mapf[rtr][port]))
  inv_mapf[fwd_id] = "FWD-ENGINE"
  
tfs = {}   
files_in_dir = os.listdir(args.data_path)
for file_in_dir in files_in_dir:
  if file_in_dir.endswith(".tf.json"):
    tf = TF(1)
    tf.load_from_json("%s/%s"%(args.data_path,file_in_dir))
    tfs[file_in_dir[0:-8]] = tf

command = args.exe_path + "/" + args.network

if (args.in_header):
  header = make_header(args.in_header)
  command = command + " -h " + header.__str__(0)
 
src_id = mapf[args.source[0]][args.source[1]] 
if (args.one_hop):
  if args.destination:
    sys.exit("Error: you need to specify a destination using -d arg.")    
  command = command + " -o"
  if args.destination[1] == "^":
    dst_id = get_fwd_port_id(mapf[args.destination[0]].values()[0])
Пример #6
0
mapf = json.load(f)
mapf_extended = copy.deepcopy(mapf)
inv_mapf = {}
for rtr in mapf:
    for port in mapf[rtr]:
        inv_mapf[int(mapf[rtr][port])] = "%s-%s"%(rtr,port)
        inv_mapf[int(mapf[rtr][port])+OUTPORT_CONST] = "%s-%s"%(rtr,port)
        inv_mapf[int(mapf[rtr][port])+INTER_CONST] = "^%s-%s"%(rtr,port)
        mapf_extended[rtr]["^%s"%port] = mapf[rtr][port] + INTER_CONST
    fwd_id = get_fwd_port_id(int(mapf[rtr][port]))
    inv_mapf[fwd_id] = "FWD-ENGINE"
    mapf_extended[rtr]["^"] = fwd_id


f = TF(1)
f.load_from_json("%s/%s.tf.json"%(args.data_path,args.rtr_name))
print "Modifying transfer function of router ",args.rtr_name

if args.view:
    stage = args.view[0]
    i = 1
    for rule in f.rules:
        if stage == get_stage(rule):
            print i,":",get_openflow_rule(rule,inv_mapf)
        i = i + 1;
if args.rm:
    indices = args.rm[0].split(",")
    indices = [int(i) for i in indices]
    indices.sort(reverse=True)
    for index in indices:
        f.remove_rule(index-1)
Пример #7
0
mapf = json.load(f)
inv_mapf = {}
for rtr in mapf:
  for port in mapf[rtr]:
    inv_mapf[int(mapf[rtr][port])] = "%s-%s"%(rtr,port)
    inv_mapf[int(mapf[rtr][port])+OUTPORT_CONST] = "%s-%s"%(rtr,port)
    inv_mapf[int(mapf[rtr][port])+INTER_CONST] = "^%s-%s"%(rtr,port)
  fwd_id = get_fwd_port_id(int(mapf[rtr][port]))
  inv_mapf[fwd_id] = "FWD-ENGINE"
  
tfs = {}   
files_in_dir = os.listdir(args.data_path)
for file_in_dir in files_in_dir:
  if file_in_dir.endswith(".tf.json"):
    tf = TF(1)
    tf.load_from_json("%s/%s"%(args.data_path,file_in_dir))
    tfs[file_in_dir[0:-8]] = tf

command = args.exe_path + "/" + args.network

if (args.loop):
  command = command + " -loop"
  
if (args.in_header):
  header = make_header(args.in_header)
  command = command + " -h " + header.__str__(0)
 
src_id = mapf[args.source[0]][args.source[1]] 
if (args.one_hop):
  if not args.destination:
    sys.exit("Error: you need to specify a destination using -d argument.")    
Пример #8
0
f = open("%s/%s" % (args.data_path, args.map_file), 'r')
mapf = json.load(f)
mapf_extended = copy.deepcopy(mapf)
inv_mapf = {}
for rtr in mapf:
    for port in mapf[rtr]:
        inv_mapf[int(mapf[rtr][port])] = "%s-%s" % (rtr, port)
        inv_mapf[int(mapf[rtr][port]) + OUTPORT_CONST] = "%s-%s" % (rtr, port)
        inv_mapf[int(mapf[rtr][port]) + INTER_CONST] = "^%s-%s" % (rtr, port)
        mapf_extended[rtr]["^%s" % port] = mapf[rtr][port] + INTER_CONST
    fwd_id = get_fwd_port_id(int(mapf[rtr][port]))
    inv_mapf[fwd_id] = "FWD-ENGINE"
    mapf_extended[rtr]["^"] = fwd_id

f = TF(1)
f.load_from_json("%s/%s.tf.json" % (args.data_path, args.rtr_name))
print "Modifying transfer function of router ", args.rtr_name

if args.view:
    stage = args.view[0]
    i = 1
    for rule in f.rules:
        if stage == get_stage(rule):
            print i, ":", get_openflow_rule(rule, inv_mapf)
        i = i + 1
if args.rm:
    indices = args.rm[0].split(",")
    indices = [int(i) for i in indices]
    indices.sort(reverse=True)
    for index in indices:
        f.remove_rule(index - 1)