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 = []
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
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
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)
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
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()
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 = []
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 = []
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
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
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
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()
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()
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)
def reset_history(self): self.history = sender_obs.SenderHistory(self.history_len, self.features, self.id) self.got_data = False