def __init__(self, id, config_file, policy_file, logger): # participant id self.id = id self.logger = logger # used to signal termination self.run = True self.prefix_lock = {} # Initialize participant params self.cfg = PConfig(config_file, self.id) # load policies self.policies = self.load_policies(policy_file) # The port 0 MAC is used for tagging outbound rules as belonging to us self.port0_mac = self.cfg.port0_mac self.nexthop_2_part = self.cfg.get_nexthop_2_part() # VNHs related params self.num_VNHs_in_use = 0 self.VNH_2_vmac = {} self.vmac_2_VNH = {} self.FEC_list = {} self.prefix_2_FEC = {} self.prefix_2_VNH_nrfp = {} #SWIFT Backup equivalence class self.BEC_list = {((-1, -1, -1), (-1, -1, -1)): {'id': 1, 'as_path': None, 'backup_nbs': None, 'as_path_vmac': None}} self.prefix_2_BEC = {} self.BECid_FECid_2_VNH = {} self.prefix_2_BEC_nrfp = {} self.max_depth = self.cfg.Swift_vmac["max_depth"] self.nexthops_nb_bits = self.cfg.Swift_vmac["nexthops_nb_bits"] self.Swift_flow_rule_timeout = self.cfg.Swift_vmac["hard timeout"] self.vnh_2_BFEC = {} #swift tag dic mapping ip to mac self.tag_dict = {} self.prefix_2_FEC_nrfp = {} self.prefix_2_BEC_nrfp = {} # Superset related params if self.cfg.isSupersetsMode(): self.supersets = SuperSets(self, self.cfg.vmac_options) # Keep track of flow rules pushed self.dp_pushed = [] # Keep track of flow rules which are scheduled to be pushed self.dp_queued = []
def __init__(self, pid, config_file, policy_file, rib_file, logger, asn_2_id, prefrns): # participant id self.id = pid # print ID for logging self.route_id = 0 self.end_time = 0 self.logger = logger # used to signal termination self.run = True self.prefix_lock = {} # Initialize participant params self.cfg = PConfig(config_file, self.id) # Vmac encoding mode # self.cfg.vmac_mode = config_file["vmac_mode"] # Dataplane mode---multi table or multi switch # self.cfg.dp_mode = config_file["dp_mode"] # ExaBGP Peering Instance self.bgp_instance = self.cfg.get_bgp_instance() self.bgp_instance.init(asn_2_id, prefrns, rib_file) self.policies = self.load_policies(policy_file) # The port 0 MAC is used for tagging outbound rules as belonging to us self.port0_mac = self.cfg.port0_mac self.nexthop_2_part = self.cfg.get_nexthop_2_part() # VNHs related params self.num_VNHs_in_use = 0 self.VNH_2_prefix = {} self.prefix_2_VNH = {} # Superset related params if self.cfg.isSupersetsMode(): self.supersets = SuperSets(self, self.cfg.vmac_options) else: # TODO: create similar class and variables for MDS self.mds = None # Keep track of flow rules pushed self.dp_pushed = [] # Keep track of flow rules which are scheduled to be pushed self.dp_queued = []