Giter VIP home page Giter VIP logo

nimbus's Introduction

CCP Algorithm: Nimbus

This repository provides a CCP implementation of the Nimbus elasticity detection algorithm described here. The elasticity detector is not a congestion control scheme in itself, but rather a mechanism for detecting whether the competing cross traffic on a bottleneck link is elastic or inelastic and switching between congestion control schemes to compete appropriately.

To get started using this algorithm with CCP, please see our guide.

This implementation uses TCP Cubic when it detects that any of the background traffic is elastic, and a custom delay control rule otherwise. However, Nimbus is agnostic to the underlying CC algorithms and could be used with any other loss-based and delay-based scheme, respectively.

Please see the paper for more details. If you have any questions, please contact us at [email protected].

nimbus's People

Contributors

akshayknarayan avatar fcangialosi avatar prateshg avatar

Stargazers

Jing Chen avatar Yash Kothari avatar Karl Marx avatar  avatar Lu Yan avatar  avatar Shen Zhu avatar  avatar

Watchers

James Cloos avatar  avatar  avatar Deepti Raghavan avatar paper2code - bot avatar

nimbus's Issues

Error building

Hello, I am getting the following error when doing a build...

user@ubuntu:~/nimbus$ cargo build --verbose
       Fresh version_check v0.1.5                                               
       Fresh unicode-xid v0.1.0                                                 
       Fresh unicode-width v0.1.5                                               
       Fresh lazy_static v1.3.0                                                 
       Fresh cfg-if v0.1.7                                                      
       Fresh ansi_term v0.11.0                                                  
       Fresh bitflags v0.9.1                                                    
       Fresh same-file v1.0.4                                                   
       Fresh rand_core v0.4.0                                                   
       Fresh strsim v0.7.0                                                      
       Fresh vec_map v0.8.1                                                     
       Fresh void v1.0.2                                                        
       Fresh bitflags v1.0.4                                                    
       Fresh take_mut v0.2.2                                                    
       Fresh proc-macro2 v0.3.8                                                 
       Fresh textwrap v0.10.0                                                   
       Fresh thread_local v0.3.6                                                
       Fresh walkdir v2.2.7                                                     
       Fresh rand_core v0.3.1                                                   
       Fresh num-traits v0.2.6                                                  
       Fresh libc v0.2.51                                                       
       Fresh byteorder v1.3.1                                                   
       Fresh slog v2.4.1                                                        
       Fresh quote v0.5.2                                                       
       Fresh memchr v2.2.0                                                      
       Fresh num-integer v0.1.39                                                
       Fresh num-complex v0.2.1                                                 
       Fresh dirs v1.0.5                                                        
       Fresh time v0.1.42                                                       
       Fresh iovec v0.1.2                                                       
       Fresh atty v0.2.11                                                       
       Fresh isatty v0.1.9                                                      
       Fresh nix v0.9.0                                                         
       Fresh rand v0.5.6                                                        
       Fresh slog-async v2.3.0                                                  
       Fresh syn v0.13.11                                                       
       Fresh nom v4.2.3                                                         
       Fresh num-bigint v0.2.2                                                  
       Fresh num-iter v0.1.37                                                   
       Fresh term v0.5.2                                                        
       Fresh chrono v0.4.6                                                      
       Fresh bytes v0.4.12                                                      
       Fresh clap v2.32.0                                                       
       Fresh num-rational v0.2.1                                                
       Fresh slog-term v2.4.0                                                   
       Fresh num v0.2.0                                                         
   Compiling portus v0.3.3                                                      
       Fresh rustfft v1.0.1                                                     
     Running `rustc --crate-name portus /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs --color always --crate-type lib --emit=dep-info,link -C debuginfo=2 -C metadata=23eb8efe2dc608a9 -C extra-filename=-23eb8efe2dc608a9 --out-dir /home/user/nimbus/target/debug/deps -L dependency=/home/user/nimbus/target/debug/deps --extern bytes=/home/user/nimbus/target/debug/deps/libbytes-ef216373e4948ce5.rlib --extern clap=/home/user/nimbus/target/debug/deps/libclap-9e50cbe664ea8615.rlib --extern libc=/home/user/nimbus/target/debug/deps/liblibc-f5fcf377cfdf96bd.rlib --extern nix=/home/user/nimbus/target/debug/deps/libnix-4524506247529624.rlib --extern nom=/home/user/nimbus/target/debug/deps/libnom-3ef7625a7de8ddef.rlib --extern quote=/home/user/nimbus/target/debug/deps/libquote-65cbc4c1a72c0f05.rlib --extern slog=/home/user/nimbus/target/debug/deps/libslog-8339c20fbb16f786.rlib --extern slog_async=/home/user/nimbus/target/debug/deps/libslog_async-1ae5eb61fa969a17.rlib --extern slog_term=/home/user/nimbus/target/debug/deps/libslog_term-fb8fd740b28d29f0.rlib --extern syn=/home/user/nimbus/target/debug/deps/libsyn-729cd22ceb501831.rlib --extern time=/home/user/nimbus/target/debug/deps/libtime-c0db48d86ed81730.rlib --extern walkdir=/home/user/nimbus/target/debug/deps/libwalkdir-3e914a7d3ce437b5.rlib --cap-lints allow`
error[E0554]: #![feature] may not be used on the stable release channel         
  --> /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs:60:1
   |                                                                            
60 | #![feature(box_patterns)]                                                  
   | ^^^^^^^^^^^^^^^^^^^^^^^^^                                                  
                                                                                
error[E0554]: #![feature] may not be used on the stable release channel         
  --> /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs:61:1
   |                                                                            
61 | #![feature(test)]                                                          
   | ^^^^^^^^^^^^^^^^^                                                          
                                                                                
error[E0554]: #![feature] may not be used on the stable release channel         
  --> /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs:62:1
   |                                                                            
62 | #![feature(never_type)]                                                    
   | ^^^^^^^^^^^^^^^^^^^^^^^                                                    
                                                                                
error[E0554]: #![feature] may not be used on the stable release channel         
  --> /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs:63:1
   |                                                                            
63 | #![feature(integer_atomics)]                                               
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                               
                                                                                
error: aborting due to 4 previous errors                                        
                                                                                
For more information about this error, try `rustc --explain E0554`.             
error: Could not compile `portus`.                                              

Caused by:
  process didn't exit successfully: `rustc --crate-name portus /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/portus-0.3.3/src/lib.rs --color always --crate-type lib --emit=dep-info,link -C debuginfo=2 -C metadata=23eb8efe2dc608a9 -C extra-filename=-23eb8efe2dc608a9 --out-dir /home/user/nimbus/target/debug/deps -L dependency=/home/user/nimbus/target/debug/deps --extern bytes=/home/user/nimbus/target/debug/deps/libbytes-ef216373e4948ce5.rlib --extern clap=/home/user/nimbus/target/debug/deps/libclap-9e50cbe664ea8615.rlib --extern libc=/home/user/nimbus/target/debug/deps/liblibc-f5fcf377cfdf96bd.rlib --extern nix=/home/user/nimbus/target/debug/deps/libnix-4524506247529624.rlib --extern nom=/home/user/nimbus/target/debug/deps/libnom-3ef7625a7de8ddef.rlib --extern quote=/home/user/nimbus/target/debug/deps/libquote-65cbc4c1a72c0f05.rlib --extern slog=/home/user/nimbus/target/debug/deps/libslog-8339c20fbb16f786.rlib --extern slog_async=/home/user/nimbus/target/debug/deps/libslog_async-1ae5eb61fa969a17.rlib --extern slog_term=/home/user/nimbus/target/debug/deps/libslog_term-fb8fd740b28d29f0.rlib --extern syn=/home/user/nimbus/target/debug/deps/libsyn-729cd22ceb501831.rlib --extern time=/home/user/nimbus/target/debug/deps/libtime-c0db48d86ed81730.rlib --extern walkdir=/home/user/nimbus/target/debug/deps/libwalkdir-3e914a7d3ce437b5.rlib --cap-lints allow` (exit code: 1)

I had this problem when I was in 'make'

cargo +nightly build
Compiling rustfft v1.0.1
error[E0277]: the trait bound &{float}: Float is not satisfied
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/rustfft-1.0.1/src/lib.rs:38:36
|
38 | .map(|phase| Complex::from_polar(&1.0, &phase))
| ^^^^^^^^^^^^^^^^^^^ the trait Float is not implemented for &{float}
|
= help: the following other types implement trait Float:
f32
f64
note: required by a bound in Complex::<T>::from_polar
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/num-complex-0.4.2/src/lib.rs:168:9
|
168 | impl<T: Float> Complex {
| ^^^^^ required by this bound in Complex::<T>::from_polar

error[E0308]: mismatched types
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/rustfft-1.0.1/src/lib.rs:39:69
|
39 | .map(|c| Complex {re: FromPrimitive::from_f32(c.re).unwrap(),
| ----------------------- ^^^^ expected f32, found &f32
| |
| arguments to this function are incorrect
|
note: associated function defined here
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/src/cast.rs:505:8
|
505 | fn from_f32(n: f32) -> Option {
| ^^^^^^^^
help: consider dereferencing the borrow
|
39 | .map(|c| Complex {re: FromPrimitive::from_f32(*c.re).unwrap(),
| +

error[E0308]: mismatched types
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/rustfft-1.0.1/src/lib.rs:40:69
|
40 | ... im: FromPrimitive::from_f32(c.im).unwrap()})
| ----------------------- ^^^^ expected f32, found &f32
| |
| arguments to this function are incorrect
|
note: associated function defined here
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/src/cast.rs:505:8
|
505 | fn from_f32(n: f32) -> Option {
| ^^^^^^^^
help: consider dereferencing the borrow
|
40 | im: FromPrimitive::from_f32(*c.im).unwrap()})
| +

error[E0277]: the trait bound &_: Float is not satisfied
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/rustfft-1.0.1/src/lib.rs:137:27
|
137 | let twiddle = Complex::from_polar(&One::one(), &angle);
| ^^^^^^^^^^^^^^^^^^^ the trait Float is not implemented for &_
|
= help: the following other types implement trait Float:
f32
f64
note: required by a bound in Complex::<T>::from_polar
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/num-complex-0.4.2/src/lib.rs:168:9
|
168 | impl<T: Float> Complex {
| ^^^^^ required by this bound in Complex::<T>::from_polar

error[E0369]: cannot multiply Complex<&T> by Complex<T>
--> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/rustfft-1.0.1/src/lib.rs:138:33
|
138 | sum = sum + twiddle * x;
| ------- ^ - Complex
| |
| Complex<&T>
|
help: consider introducing a where clause, but there might be an alternative better way to express this requirement
|
130 | pub fn dft<T: Float>(signal: &[Complex], spectrum: &mut [Complex]) where Complex<&T>: Mul<Complex> {
| ++++++++++++++++++++++++++++++++++

Some errors have detailed explanations: E0277, E0308, E0369.
For more information about an error, try rustc --explain E0277.
error: could not compile rustfft due to 5 previous errors
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 101

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.