Exemple #1
0
    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="-")
Exemple #2
0
    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")
Exemple #3
0
    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)
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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)
Exemple #7
0
    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")