Example #1
0
    def reset(self):
        #print("Resetting sender!")
        self.rate = self.starting_rate
        self.bytes_in_flight = 0
        self.min_latency = None
        self.reset_obs()
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)
        self.estRTT = 1000000 / 1e6  # SynInterval in emulation
        self.RTTVar = self.estRTT / 2  # RTT variance

        self.got_data = False
        self.min_rtt = 10
        self.max_tput = 0
        self.start_stage = True
        self.lat_diff = 0
        self.recv_rate = 0
        self.send_rate = 0
        self.latest_rtt = 0

        self.tot_sent = 0  # no. of packets
        self.tot_acked = 0  # no. of packets
        self.tot_lost = 0  # no. of packets
        self.cur_avg_latency = 0.0
        self.first_ack_ts = None
        self.last_ack_ts = None

        self.bin_bytes_sent = {}
        self.bin_bytes_acked = {}
        self.lat_ts = []
        self.lats = []
Example #2
0
    def __init__(self, rate, path, dest, features, cwnd=25, history_len=10):
        self.id = Sender._get_next_id()
        self.starting_rate = rate
        self.rate = rate
        self.sent = 0
        self.acked = 0
        self.lost = 0
        self.bytes_in_flight = 0
        self.min_latency = None
        self.rtt_samples = []
        self.prev_rtt_samples = self.rtt_samples
        self.sample_time = []
        self.net = None
        self.path = path
        self.dest = dest
        self.history_len = history_len
        self.features = features
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)
        self.cwnd = cwnd
        self.use_cwnd = False
        self.rto = -1
        self.first_pkt_ack_time = None
        self.last_pkt_ack_time = None
        self.first_pkt_send_time = None
        self.last_pkt_send_time = None

        self.got_data = False  # flag used to track whether data is received in a monitor interval
Example #3
0
    def __init__(self,
                 history_len=arg_or_default("--history-len", default=10),
                 features=arg_or_default("--input-features",
                                         default="sent latency inflation," +
                                         "latency ratio," + "send ratio")):
        self.viewer = None
        self.rand = None

        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setblocking(1)
        self.sock.bind(("localhost", 9787))

        self.conn = None
        self.conn_addr = None
        self.features = features.split(",")
        self.history_len = history_len
        self.history = sender_obs.SenderHistory(history_len, self.features, 0)
        self.rate = STARTING_RATE

        single_obs_min_vec = sender_obs.get_min_obs_vector(self.features)
        single_obs_max_vec = sender_obs.get_max_obs_vector(self.features)
        self.observation_space = spaces.Box(np.tile(single_obs_min_vec,
                                                    self.history_len),
                                            np.tile(single_obs_max_vec,
                                                    self.history_len),
                                            dtype=np.float32)
        self.action_space = spaces.Box(np.array([-1e12]),
                                       np.array([1e12]),
                                       dtype=np.float32)

        self.steps_taken = 0
        self.reward_sum = 0.0
        self.reward_ewma = 0.0
Example #4
0
 def reset(self):
     #print("Resetting sender!")
     self.rate = self.starting_rate
     self.bytes_in_flight = 0
     self.min_latency = None
     self.reset_obs()
     self.history = sender_obs.SenderHistory(self.history_len,
                                             self.features, self.id)
Example #5
0
    def __init__(self, rate, path, dest, features, cwnd=25, history_len=10,
                 delta_scale=1):
        self.id = Sender._get_next_id()
        self.delta_scale = delta_scale
        self.starting_rate = rate
        self.rate = rate
        self.sent = 0
        self.acked = 0
        self.lost = 0
        self.bytes_in_flight = 0
        self.min_latency = None
        self.rtt_samples = []
        self.rtt_samples_ts = []
        self.queue_delay_samples = []
        self.prev_rtt_samples = self.rtt_samples
        self.sample_time = []
        self.net = None
        self.path = path
        self.dest = dest
        self.history_len = history_len
        self.features = features
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)
        self.cwnd = cwnd
        self.use_cwnd = False
        self.rto = -1
        self.ssthresh = 0
        self.pkt_loss_wait_time = -1
        # self.estRTT = 1000000 / 1e6  # SynInterval in emulation
        # self.RTTVar = self.estRTT / 2  # RTT variance
        self.estRTT = None  # SynInterval in emulation
        self.RTTVar = None  # RTT variance
        self.got_data = False

        self.min_rtt = 10
        self.max_tput = 0
        self.start_stage = True
        self.lat_diff = 0
        self.recv_rate = 0
        self.send_rate = 0
        self.latest_rtt = 0

        # variables to track accross the connection session
        self.tot_sent = 0 # no. of packets
        self.tot_acked = 0 # no. of packets
        self.tot_lost = 0 # no. of packets
        self.cur_avg_latency = 0.0
        self.first_ack_ts = None
        self.last_ack_ts = None
        self.first_sent_ts = None
        self.last_sent_ts = None

        # variables to track binwise measurements
        self.bin_bytes_sent = {}
        self.bin_bytes_acked = {}
        self.lat_ts = []
        self.lats = []
        self.bin_size = 500 # ms
Example #6
0
 def reset(self):
     self.history = sender_obs.SenderHistory(self.history_len,
                                             self.features, 0)
     self.reward_ewma *= 0.99
     self.reward_ewma += 0.01 * self.reward_sum
     print("Reward: %0.2f, Ewma Reward: %0.2f" %
           (self.reward_sum, self.reward_ewma))
     self.reward_sum = 0.0
     self.steps_taken = 0
     self.set_rate(STARTING_RATE)
     return self.history.as_array()
Example #7
0
    def reset(self):
        self.pacing_rate = self.starting_rate
        self.bytes_in_flight = 0
        self.min_latency = None
        self.reset_obs()
        sender_obs._conn_min_latencies = {}
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.sender_id)
        self.estRTT = 1000000 / 1e6  # SynInterval in emulation
        self.RTTVar = self.estRTT / 2  # RTT variance

        self.got_data = False
        self.prev_rtt_samples = []
Example #8
0
 def __init__(self, pacing_rate: float, features: List[str],
              history_len: int, sender_id: int, dest: int, trace: Trace):
     super().__init__(sender_id, dest)
     self.starting_rate = pacing_rate
     self.pacing_rate = pacing_rate
     self.history_len = history_len
     self.features = features
     sender_obs._conn_min_latencies = {}
     self.history = sender_obs.SenderHistory(self.history_len,
                                             self.features, self.sender_id)
     self.trace = trace
     self.got_data = False
     self.cwnd = 0
     self.prev_rtt_samples = []
Example #9
0
    def __init__(self, flow_id):
        global RESET_RATE_MIN
        global RESET_RATE_MAX
        args = parse_args()

        self.id = flow_id

        self.rate = random.uniform(RESET_RATE_MIN, RESET_RATE_MAX)
        self.history_len = args.history_len
        self.features = args.input_features
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)
        self.save_dir = args.save_dir
        self.log_writer = csv.writer(open(
            os.path.join(self.save_dir, 'aurora_emulation_log.csv'), 'w', 1),
                                     lineterminator='\n')
        self.log_writer.writerow([
            'timestamp', "target_send_rate", "send_rate", 'recv_rate',
            'latency', 'loss', 'reward', "action", "bytes_sent", "bytes_acked",
            'bytes_lost', 'send_start_time', "send_end_time",
            'recv_start_time', 'recv_end_time', 'latency_increase',
            "sent_latency_inflation", 'latency_ratio', 'send_ratio',
            'recv_ratio', 'packet_size', "min_rtt", 'rtt_samples'
        ])
        self.got_data = False

        # self.agent = loaded_agent.LoadedModelAgent(args.model_path)
        self.aurora = Aurora(seed=20,
                             log_dir="",
                             timesteps_per_actorbatch=10,
                             pretrained_model_path=args.model_path,
                             delta_scale=DELTA_SCALE)

        PccGymDriver.flow_lookup[flow_id] = self

        self.t_start = time.time()
        # dummpy inference here to load model
        # _ = self.agent.act(self.history.as_array())
        _ = self.aurora.model.predict(self.history.as_array(),
                                      deterministic=True)

        self.mi_pushed = False

        self.idx = 1
Example #10
0
 def __init__(self, rate, path, dest, features, cwnd=25, history_len=10):
     self.id = Sender._get_next_id()
     self.starting_rate = rate
     self.rate = rate
     self.sent = 0
     self.acked = 0
     self.lost = 0
     self.bytes_in_flight = 0
     self.min_latency = None
     self.rtt_samples = []
     self.sample_time = []
     self.net = None
     self.path = path
     self.dest = dest
     self.history_len = history_len
     self.features = features
     self.history = sender_obs.SenderHistory(self.history_len,
                                             self.features, self.id)
     self.cwnd = cwnd
Example #11
0
    def __init__(self, flow_id):
        global RESET_RATE_MIN
        global RESET_RATE_MAX

        self.id = flow_id

        self.rate = random.uniform(RESET_RATE_MIN, RESET_RATE_MAX)
        self.history_len = arg_or_default("--history-len", 10)
        self.features = arg_or_default("--input-features",
                                       default="sent latency inflation," +
                                       "latency ratio," +
                                       "send ratio").split(",")
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)
        self.got_data = False

        self.agent = loaded_agent.LoadedModelAgent(MODEL_PATH)

        PccGymDriver.flow_lookup[flow_id] = self
Example #12
0
    def reset(self):
        self.pacing_rate = self.starting_rate
        self.bytes_in_flight = 0
        self.min_latency = None
        self.reset_obs()
        sender_obs._conn_min_latencies = {}
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.sender_id)
        self.estRTT = 1000000 / 1e6  # SynInterval in emulation
        self.RTTVar = self.estRTT / 2  # RTT variance

        self.got_data = False
        self.prev_rtt_samples = []
        self.delivered = 0
        self.next_round_delivered = 0
        self.round_start = False
        self.round_count = 0
        self.cwnd = TCP_INIT_CWND
        self.btlbw_filter.reset()
Example #13
0
    def __init__(self, path, dest, features, history_len=10, solution=None):
        self.id = Sender._get_next_id()
        self.sent = 0
        self.acked = 0
        self.lost = 0
        self.bytes_in_flight = 0
        self.min_latency = None
        self.rtt_samples = []
        self.sample_time = []
        self.net = None
        self.path = path
        self.dest = dest
        self.history_len = history_len
        self.features = features
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.id)

        self.solution = solution
        ret = check_solution_format(self.solution.make_decision(0))
        self.rate = ret["send_rate"] if "send_rate" in ret else float("inf")
        self.USE_CWND = self.solution.USE_CWND if hasattr(
            self.solution, "USE_CWND") else True
        # Not use this if USE_CWND=FALSE
        self.cwnd = ret["cwnd"] if "cwnd" in ret else 25
        self.starting_rate = self.rate
        self.pacing_rate = ret[
            "pacing_rate"] if "pacing_rate" in ret else float("inf")
        self.cur_time = 0

        self.application = None
        # for cut the packet numbers that can't be sended due to cwnd in log
        self.wait_for_push_packets = []
        self.extra = {}
        # for player
        self.wait_for_select_packets = []
        self.in_event_nums = 0
        # record packet's decision order
        self.decision_order = 0
        # dict for packet needing to retransmission
        self.retrans_dict = dict()
Example #14
0
    def __init__(self, pacing_rate: float, features: List[str],
                 history_len: int, sender_id: int, dest: int, trace: Trace):
        super().__init__(sender_id, dest)
        self.starting_rate = pacing_rate
        self.pacing_rate = pacing_rate
        self.pacing_rate = pacing_rate
        self.history_len = history_len
        self.features = features
        sender_obs._conn_min_latencies = {}
        self.history = sender_obs.SenderHistory(self.history_len,
                                                self.features, self.sender_id)
        self.trace = trace
        self.got_data = False
        self.cwnd = TCP_INIT_CWND
        self.min_latency = None
        self.prev_rtt_samples = []
        self.round_start = False
        self.round_count = 0
        self.next_round_delivered = 0
        self.delivered = 0

        self.btlbw_filter = AuroraBtlBwFilter(BTLBW_FILTER_LEN)
Example #15
0
 def reset_history(self):
     self.history = sender_obs.SenderHistory(self.history_len,
                                             self.features, self.id)
     self.got_data = False