Skip to content

Commit

Permalink
Replace <unfriendly> with fair2
Browse files Browse the repository at this point in the history
  • Loading branch information
bastian-src committed Jul 29, 2024
1 parent 8b11909 commit 80d83fb
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 121 deletions.
152 changes: 66 additions & 86 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,22 @@ pub enum TransmissionType {

Reno,

CubicFriendly,
CubicUnfriendly,

L2BFriendlyFair0Init,
L2BFriendlyFair0Upper,
L2BFriendlyFair0InitAndUpper,
L2BFriendlyFair0Direct,

L2BFriendlyFair1Init,
L2BFriendlyFair1Upper,
L2BFriendlyFair1InitAndUpper,
L2BFriendlyFair1Direct,

L2BUnfriendlyFair0Init,
L2BUnfriendlyFair0Upper,
L2BUnfriendlyFair0InitAndUpper,
L2BUnfriendlyFair0Direct,

L2BUnfriendlyFair1Init,
L2BUnfriendlyFair1Upper,
L2BUnfriendlyFair1InitAndUpper,
L2BUnfriendlyFair1Direct,
Cubic,

L2BFair0Init,
L2BFair0Upper,
L2BFair0InitAndUpper,
L2BFair0Direct,

L2BFair1Init,
L2BFair1Upper,
L2BFair1InitAndUpper,
L2BFair1Direct,

L2BFair2Init,
L2BFair2Upper,
L2BFair2InitAndUpper,
L2BFair2Direct,
}

impl TransmissionType {
Expand All @@ -58,65 +52,52 @@ impl TransmissionType {

TransmissionType::Reno,

TransmissionType::CubicFriendly,
TransmissionType::CubicUnfriendly,
TransmissionType::Cubic,

TransmissionType::L2BFriendlyFair0Init,
TransmissionType::L2BFriendlyFair0Upper,
TransmissionType::L2BFriendlyFair0InitAndUpper,
TransmissionType::L2BFriendlyFair0Direct,
TransmissionType::L2BFair0Init,
TransmissionType::L2BFair0Upper,
TransmissionType::L2BFair0InitAndUpper,
TransmissionType::L2BFair0Direct,

TransmissionType::L2BFriendlyFair1Init,
TransmissionType::L2BFriendlyFair1Upper,
TransmissionType::L2BFriendlyFair1InitAndUpper,
TransmissionType::L2BFriendlyFair1Direct,
TransmissionType::L2BFair1Init,
TransmissionType::L2BFair1Upper,
TransmissionType::L2BFair1InitAndUpper,
TransmissionType::L2BFair1Direct,

TransmissionType::L2BUnfriendlyFair0Init,
TransmissionType::L2BUnfriendlyFair0Upper,
TransmissionType::L2BUnfriendlyFair0InitAndUpper,
TransmissionType::L2BUnfriendlyFair0Direct,

TransmissionType::L2BUnfriendlyFair1Init,
TransmissionType::L2BUnfriendlyFair1Upper,
TransmissionType::L2BUnfriendlyFair1InitAndUpper,
TransmissionType::L2BUnfriendlyFair1Direct,
TransmissionType::L2BFair2Init,
TransmissionType::L2BFair2Upper,
TransmissionType::L2BFair2InitAndUpper,
TransmissionType::L2BFair2Direct,
]
}

pub fn is_l2b(&self) -> bool {
!matches!(self,
TransmissionType::Reno |
TransmissionType::Bbr |
TransmissionType::CubicFriendly |
TransmissionType::CubicUnfriendly)
TransmissionType::Cubic)
}

pub fn path(&self) -> &str {
match self {
TransmissionType::Bbr => "/bbr",
TransmissionType::Reno => "/reno",
TransmissionType::CubicFriendly => "/cubic/friendly",
TransmissionType::CubicUnfriendly => "/cubic/unfriendly",

TransmissionType::L2BFriendlyFair0Init => "/l2b/friendly/fair0/init",
TransmissionType::L2BFriendlyFair0Upper => "/l2b/friendly/fair0/upper",
TransmissionType::L2BFriendlyFair0InitAndUpper => "/l2b/friendly/fair0/init_and_upper",
TransmissionType::L2BFriendlyFair0Direct => "/l2b/friendly/fair0/direct",

TransmissionType::L2BFriendlyFair1Init => "/l2b/friendly/fair1/init",
TransmissionType::L2BFriendlyFair1Upper => "/l2b/friendly/fair1/upper",
TransmissionType::L2BFriendlyFair1InitAndUpper => "/l2b/friendly/fair1/init_and_upper",
TransmissionType::L2BFriendlyFair1Direct => "/l2b/friendly/fair1/direct",

TransmissionType::L2BUnfriendlyFair0Init => "/l2b/unfriendly/fair0/init",
TransmissionType::L2BUnfriendlyFair0Upper => "/l2b/unfriendly/fair0/upper",
TransmissionType::L2BUnfriendlyFair0InitAndUpper => "/l2b/unfriendly/fair0/init_and_upper",
TransmissionType::L2BUnfriendlyFair0Direct => "/l2b/unfriendly/fair0/direct",

TransmissionType::L2BUnfriendlyFair1Init => "/l2b/unfriendly/fair1/init",
TransmissionType::L2BUnfriendlyFair1Upper => "/l2b/unfriendly/fair1/upper",
TransmissionType::L2BUnfriendlyFair1InitAndUpper => "/l2b/unfriendly/fair1/init_and_upper",
TransmissionType::L2BUnfriendlyFair1Direct => "/l2b/unfriendly/fair1/direct",
TransmissionType::Cubic=> "/cubic",

TransmissionType::L2BFair0Init => "/l2b/fair0/init",
TransmissionType::L2BFair0Upper => "/l2b/fair0/upper",
TransmissionType::L2BFair0InitAndUpper => "/l2b/fair0/init_and_upper",
TransmissionType::L2BFair0Direct => "/l2b/fair0/direct",

TransmissionType::L2BFair1Init => "/l2b/fair1/init",
TransmissionType::L2BFair1Upper => "/l2b/fair1/upper",
TransmissionType::L2BFair1InitAndUpper => "/l2b/fair1/init_and_upper",
TransmissionType::L2BFair1Direct => "/l2b/fair1/direct",

TransmissionType::L2BFair2Init => "/l2b/fair2/init",
TransmissionType::L2BFair2Upper => "/l2b/fair2/upper",
TransmissionType::L2BFair2InitAndUpper => "/l2b/fair2/init_and_upper",
TransmissionType::L2BFair2Direct => "/l2b/fair2/direct",
}
}

Expand Down Expand Up @@ -166,7 +147,7 @@ fn start_server(args: &FlattenedArguments, main_vars: &mut MainVariables) -> Res
stream,
logger: Arc::clone(&logger),
client_metrics: main_vars.client_metrics.clone(),
transmission_type: TransmissionType::CubicFriendly,
transmission_type: TransmissionType::Cubic,
set_initial_cwnd: None,
set_upper_bound_cwnd: None,
set_direct_cwnd: None,
Expand Down Expand Up @@ -231,33 +212,32 @@ fn evaluate_client_args(logger: Arc<Mutex<Logger>>, args: &FlattenedArguments, c
if let Some(algo_item) = TransmissionType::from_path(path_algo) {
client_args.transmission_type = algo_item.clone();
match algo_item {
TransmissionType::Bbr => {},
TransmissionType::Reno => {},
TransmissionType::CubicFriendly => {},
TransmissionType::CubicUnfriendly => {},
TransmissionType::L2BFriendlyFair0Init |
TransmissionType::L2BFriendlyFair1Init |
TransmissionType::L2BUnfriendlyFair0Init |
TransmissionType::L2BUnfriendlyFair1Init => {
TransmissionType::Bbr |
TransmissionType::Reno |
TransmissionType::Cubic => {},

TransmissionType::L2BFair0Init |
TransmissionType::L2BFair1Init |
TransmissionType::L2BFair2Init => {
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
}
TransmissionType::L2BFriendlyFair0Upper |
TransmissionType::L2BFriendlyFair1Upper |
TransmissionType::L2BUnfriendlyFair0Upper |
TransmissionType::L2BUnfriendlyFair1Upper => {

TransmissionType::L2BFair0Upper |
TransmissionType::L2BFair1Upper |
TransmissionType::L2BFair2Upper => {
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
}
TransmissionType::L2BFriendlyFair0InitAndUpper |
TransmissionType::L2BFriendlyFair1InitAndUpper |
TransmissionType::L2BUnfriendlyFair0InitAndUpper |
TransmissionType::L2BUnfriendlyFair1InitAndUpper => {

TransmissionType::L2BFair0InitAndUpper |
TransmissionType::L2BFair1InitAndUpper |
TransmissionType::L2BFair2InitAndUpper => {
client_args.set_initial_cwnd = Some(DynamicValue::Dynamic);
client_args.set_upper_bound_cwnd = Some(DynamicValue::Dynamic);
}
TransmissionType::L2BFriendlyFair0Direct |
TransmissionType::L2BFriendlyFair1Direct |
TransmissionType::L2BUnfriendlyFair0Direct |
TransmissionType::L2BUnfriendlyFair1Direct => {

TransmissionType::L2BFair0Direct |
TransmissionType::L2BFair1Direct |
TransmissionType::L2BFair2Direct => {
client_args.set_direct_cwnd = Some(DynamicValue::Dynamic);
}
}
Expand Down
39 changes: 4 additions & 35 deletions src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ pub const THREAD_SLEEP_FINISH_MS: u64 = 1000;
pub const CONSTANT_BIT_TO_BYTE: u64 = 8;
pub const CONSTANT_US_TO_MS: u64 = 3000;

#[allow(dead_code)]
/// Use this in combination with proc_set_u8() to adapt the tcp_friendliness behavior of CUBIC
pub const PROC_PATH_TCP_CUBIC_TCP_FRIENDLINESS: &str = "/sys/module/tcp_cubic/parameters/tcp_friendliness";


Expand Down Expand Up @@ -234,44 +236,10 @@ pub fn sockopt_prepare_transmission(
_ => "cubic",
};
sockopt_set_cc(socket_file_descriptor, cc_name)?;

/* Set TCP Friendliness */
let tcp_friendliness_option: Option<&str> = match transmission_type {
TransmissionType::Bbr |
TransmissionType::Reno => {
None
}
TransmissionType::CubicFriendly |
TransmissionType::L2BFriendlyFair0Init |
TransmissionType::L2BFriendlyFair0Upper |
TransmissionType::L2BFriendlyFair0InitAndUpper |
TransmissionType::L2BFriendlyFair0Direct |
TransmissionType::L2BFriendlyFair1Init |
TransmissionType::L2BFriendlyFair1Upper |
TransmissionType::L2BFriendlyFair1InitAndUpper |
TransmissionType::L2BFriendlyFair1Direct => {
Some("1")
}
TransmissionType::CubicUnfriendly |
TransmissionType::L2BUnfriendlyFair0Init |
TransmissionType::L2BUnfriendlyFair0Upper |
TransmissionType::L2BUnfriendlyFair0InitAndUpper |
TransmissionType::L2BUnfriendlyFair0Direct |
TransmissionType::L2BUnfriendlyFair1Init |
TransmissionType::L2BUnfriendlyFair1Upper |
TransmissionType::L2BUnfriendlyFair1InitAndUpper |
TransmissionType::L2BUnfriendlyFair1Direct => {
Some("0")
}
};
if let Some(tcp_friendliness) = tcp_friendliness_option {
if proc_get(PROC_PATH_TCP_CUBIC_TCP_FRIENDLINESS)? != tcp_friendliness {
proc_set_u8(PROC_PATH_TCP_CUBIC_TCP_FRIENDLINESS, tcp_friendliness)?;
}
}
Ok(())
}

#[allow(dead_code)]
pub fn proc_set_u8(
path: &str,
value: &str,
Expand All @@ -282,6 +250,7 @@ pub fn proc_set_u8(
Ok(())
}

#[allow(dead_code)]
pub fn proc_get(
path: &str,
) -> Result<String> {
Expand Down

0 comments on commit 80d83fb

Please sign in to comment.