def __init__(self, topo, soft_labels=None, ruleset_pkl=None): self.topo = topo self.switch_num = len(topo) self.soft_labels = soft_labels self.shortest_pathes = {label: {} for label in range(self.switch_num)} self.get_shortest_pathes() if ruleset_pkl is not None: self.ruleset = element.de_serialize(ruleset_pkl) self.install_num = {} self.predictor = None
def generate_real_traffic(self, filename, sw_list=None): # sw_list: senders # real pcap/pkl -> syn traffic self.traffic = traffic.Traffic() if filename.find('.pcap') != -1: real_traffic = traffic.Traffic(filename) elif filename.find('.pkl') != -1: real_traffic = element.de_serialize(filename) else: raise NameError('Error. Not a valid input file format. Return') return real_pkts = real_traffic.pkts syn_pkts = self.traffic_mapping(real_pkts, sw_list) self.traffic.add_pkts(syn_pkts) return
def generate_ruleset_from_traffic(self, traffic_pkl, mask=24, rate=0, maxdep=setting.INF): traffic = element.de_serialize(traffic_pkl) from random import random for pkt in traffic.pkts: if pkt.dstip in self.rules: continue dice = random() if dice <= rate: dstprefix = element.int2ip(element.get_ip_range(pkt.dstip, mask)[0]) self.rules[pkt.dstip] = (24, dstprefix) self.ruleset.add((24, dstprefix)) else: self.rules[pkt.dstip] = (32, pkt.dstip) self.ruleset.add((32, pkt.dstip)) self.get_depset(maxdep) return
def generate_log_traffic(self, pkl_file): # traffic pkl -> traffic self.traffic = element.de_serialize(pkl_file) return