def dummy(cls, conf, net, dest, sender): ''' The class method used for creating a dummy Packet. ''' payload = random_string(conf["packet"]["packet_size"]) rand_route = net.select_random_route() rand_route = rand_route + [dest] return cls(conf=conf, route=rand_route, payload=payload, sender=sender, dest=dest, type="DUMMY", msg_id="-")
def ack(cls, conf, net, dest, sender, packet_id, msg_id): ''' The class method used for creating an ack Packet. ''' payload = random_string(conf["packet"]["packet_size"]) rand_route = net.select_random_route() rand_route = rand_route + [dest] return cls(conf=conf, route=rand_route, payload=payload, sender=sender, dest=dest, packet_id=packet_id, msg_id=msg_id, type="ACK")
def __init__(self, conf, route, payload, sender, dest, type, packet_id = None, msg_id="DUMMY", order=1, num=1, message=None): self.conf = conf self.id = packet_id or random_string(32) self.route = route self.payload = payload self.real_sender = sender self.dest = dest self.msg_id = msg_id self.message = message self.fragments = num self.type = type self.pool_logs = [] # State self.dropped = False self.current_node = -1 self.times_transmitted = 0 self.ACK_Received = False self.time_queued = None self.time_sent = None self.time_delivered = None # Measurements self.sender_estimates = numpy.array([0.0, 0.0, 0.0]) #Other, A, B self.sender_estimates[self.real_sender.label] = 1.0 self.probability_mass = numpy.zeros(self.conf["misc"]["num_target_packets"]) if self.type=="REAL": self.message.reconstruct.add(self.id)
def random(cls, conf, net, sender, dest): ''' This class method creates a random message, with random payload. ''' size = random.randint(conf["message"]["min_msg_size"], conf["message"]["max_msg_size"]) payload = random_string(size) m = cls(conf=conf, net=net, payload=payload, real_sender=sender, dest=dest) return m
def __init__(self, env, conf, net=None, label=0, loggers=None, id=None): self.env = env self.conf = conf self.id = id or random_string(self.conf["misc"]["id_len"]) self.net = net self.pkts_received = 0 self.pkts_sent = 0 self.avg_delay = 0.0 if self.conf["mixnodes"][ "avg_delay"] == 0.0 else float(self.conf["mixnodes"]["avg_delay"]) # State self.pool = {} self.inter_pkts = 0 #ctr which count how many new packets arrived since the last time a packet left self.probability_mass = None self.sender_estimates = None self.pool = {} self.mixlogging = False self.loggers = loggers if loggers else None (self.packet_logger, self.message_logger, self.entropy_logger) = self.loggers #State self.alive = True self.rate_sending = 1.0 / float(self.conf["clients"]["rate_sending"]) self.rate_generating = float( self.conf["clients"]["sim_add_buffer"] ) # this specifies how often we put a real message into a buffer self.cover_traffic = self.conf["clients"]["cover_traffic"] self.cover_traffic_rate = 1.0 / float( self.conf["clients"]["cover_traffic_rate"]) self.verbose = False self.pkt_buffer_out = [] self.pkt_buffer_out_not_ack = {} self.label = label self.send_dummy_ACK = self.conf["clients"]["dummies_acks"] self.send_ACK = self.conf["clients"]["ACK"] self.num_received_packets = 0 self.msg_buffer_in = {} self.start_logs = False self.batch_num = 0 self.free_to_batch = True
def __init__(self, conf, net, payload, dest, real_sender, id=None): self.conf = conf self.id = id or random_string(self.conf["misc"]["id_len"]) self.payload = payload self.real_sender = real_sender self.time_queued = None # The first packet to be added in the queue (sender updates this) self.time_sent = None # The first packet to leave the client (sender updates this) self.time_delivered = None # The last packet to arrive (The recipient of msg will fill this in) self.transit_time = None self.reconstruct = set() # The IDs we need to reconstruct. # State on reception self.complete_receiving = False # Packets self.pkts = self.split_into_packets(net, dest)
def dummy_ack(cls, conf, net, dest, sender): payload = random_string(conf["packet"]["ack_packet_size"]) rand_route = net.select_random_route() rand_route = rand_route + [dest] return cls(conf=conf, route=rand_route, payload=payload, sender=sender, dest=dest, type="DUMMY_ACK", msg_id="DUMMY_ACK")