Skip to content

Commit

Permalink
Add explicit transmission duration to api endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
bastian-src committed Jul 24, 2024
1 parent 7160a32 commit a083559
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 14 deletions.
3 changes: 2 additions & 1 deletion src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ pub struct ClientArgs {
pub logger: Arc<Mutex<Logger>>,
pub client_metrics: Option<Arc<Mutex<ClientMetrics>>>,
pub transmission_type: TransmissionType,
pub transmission_duration_ms: u64,
pub set_initial_cwnd: Option<DynamicValue<u32>>,
pub set_upper_bound_cwnd: Option<DynamicValue<u32>>,
pub set_direct_cwnd: Option<DynamicValue<u32>>,
Expand Down Expand Up @@ -325,7 +326,7 @@ pub fn handle_client(mut client_args: ClientArgs) -> Result<()> {
let set_initial_cwnd = client_args.set_initial_cwnd;
let set_direct_cwnd = client_args.set_direct_cwnd;
let logging_interval_us = client_args.args.logging_interval_us;
let transmission_duration_ms = client_args.args.transmission_duration_ms;
let transmission_duration_ms = client_args.transmission_duration_ms;
let logger: &mut Arc<Mutex<Logger>> = &mut client_args.logger;
let socket_file_descriptor: i32 = stream.as_raw_fd();

Expand Down
48 changes: 42 additions & 6 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ fn start_server(args: &FlattenedArguments, main_vars: &mut MainVariables) -> Res
set_initial_cwnd: None,
set_upper_bound_cwnd: None,
set_direct_cwnd: None,
transmission_duration_ms: args.default_transmission_duration_ms,
};
evaluate_client_args(args, &mut client_args);
thread::spawn(move || {
Expand Down Expand Up @@ -119,28 +120,63 @@ fn evaluate_client_args(args: &FlattenedArguments, client_args: &mut ClientArgs)
if req.parse(&buffer[..bytes_read]).is_ok() {
let path = req.path.unwrap_or("/");
match path {
"/bbr" => {
"/10s/bbr" => {
client_args.transmission_type = TransmissionType::Bbr;
client_args.transmission_duration_ms = 10000;
},
"/cubic" => {
"/10s/cubic" => {
client_args.transmission_type = TransmissionType::Cubic;
client_args.transmission_duration_ms = 10000;
},
"/pbe/init" => {
"/10s/pbe/fair0/init" => {
client_args.transmission_type = TransmissionType::PbeInit;
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 10000;
},
"/pbe/upper" => {
"/10s/pbe/fair0/upper" => {
client_args.transmission_type = TransmissionType::PbeUpper;
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 10000;
},
"/pbe/init_and_upper" => {
"/10s/pbe/fair0/init_and_upper" => {
client_args.transmission_type = TransmissionType::PbeInitAndUpper;
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 10000;
},
"/pbe/direct" => {
"/10s/pbe/fair0/direct" => {
client_args.transmission_type = TransmissionType::PbeDirect;
client_args.set_direct_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 10000;
},
"/60s/bbr" => {
client_args.transmission_type = TransmissionType::Bbr;
client_args.transmission_duration_ms = 60000;
},
"/60s/cubic" => {
client_args.transmission_type = TransmissionType::Cubic;
client_args.transmission_duration_ms = 60000;
},
"/60s/pbe/fair0/init" => {
client_args.transmission_type = TransmissionType::PbeInit;
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 60000;
},
"/60s/pbe/fair0/upper" => {
client_args.transmission_type = TransmissionType::PbeUpper;
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 60000;
},
"/60s/pbe/fair0/init_and_upper" => {
client_args.transmission_type = TransmissionType::PbeInitAndUpper;
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 60000;
},
"/60s/pbe/fair0/direct" => {
client_args.transmission_type = TransmissionType::PbeDirect;
client_args.set_direct_cwnd = Some(DynamicValue::Dynamic);
client_args.transmission_duration_ms = 60000;
},
_ => {}
}
Expand Down
14 changes: 7 additions & 7 deletions src/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ pub struct Arguments {

/// Lenght of the transmission in ms
#[clap(short, long)]
pub transmission_duration_ms: Option<u64>,
pub default_transmission_duration_ms: Option<u64>,

/// Logging interval
#[clap(short, long)]
Expand All @@ -62,7 +62,7 @@ pub struct FlattenedArguments {
pub initial_cwnd: Option<u32>,
pub direct_cwnd: Option<u32>,
pub upper_bound_cwnd: Option<u32>,
pub transmission_duration_ms: u64,
pub default_transmission_duration_ms: u64,
pub logging_interval_us: u64,
pub external_interface: bool,
pub external_interface_addr: String,
Expand All @@ -76,7 +76,7 @@ impl default::Default for Arguments {
initial_cwnd: DEFAULT_INITIAL_CWND,
direct_cwnd: DEFAULT_DIRECT_CWND,
upper_bound_cwnd: DEFAULT_UPPER_BOUND_CWND,
transmission_duration_ms: DEFAULT_TRANSMISSION_DURATION_MS,
default_transmission_duration_ms: DEFAULT_TRANSMISSION_DURATION_MS,
logging_interval_us: DEFAULT_LOGGING_INTERVAL_US,
external_interface: DEFAULT_EXTERNAL_INTERFACE,
external_interface_addr: Some(DEFAULT_EXTERNAL_INTERFACE_ADDR.to_string()),
Expand Down Expand Up @@ -115,9 +115,9 @@ impl Arguments {
self.initial_cwnd = self.initial_cwnd.or(config_file.initial_cwnd);
self.direct_cwnd = self.direct_cwnd.or(config_file.direct_cwnd);
self.upper_bound_cwnd = self.upper_bound_cwnd.or(config_file.upper_bound_cwnd);
self.transmission_duration_ms = self
.transmission_duration_ms
.or(config_file.transmission_duration_ms);
self.default_transmission_duration_ms = self
.default_transmission_duration_ms
.or(config_file.default_transmission_duration_ms);
self.logging_interval_us = self.logging_interval_us.or(config_file.logging_interval_us);
self.external_interface = self.external_interface.or(config_file.external_interface);
self.external_interface_addr = self
Expand Down Expand Up @@ -159,7 +159,7 @@ impl FlattenedArguments {
initial_cwnd: args.initial_cwnd,
direct_cwnd: args.direct_cwnd,
upper_bound_cwnd: args.upper_bound_cwnd,
transmission_duration_ms: args.transmission_duration_ms.unwrap(),
default_transmission_duration_ms: args.default_transmission_duration_ms.unwrap(),
logging_interval_us: args.logging_interval_us.unwrap(),
external_interface: args.external_interface.unwrap(),
external_interface_addr: args.external_interface_addr.unwrap(),
Expand Down

0 comments on commit a083559

Please sign in to comment.