1个不稳定版本
0.1.0 | 2021年2月1日 |
---|
#16 在 #constrained
每月35次下载
用于 remux
19KB
298 行
受限连接
模拟受限网络连接。
可用于对建立在面向流连接(例如TCP)之上的网络逻辑进行基准测试。通过指定其带宽以及往返时间(延迟)来创建连接。连接将延迟每个字节的块,并允许最多 带宽-延迟积 字节数在 线上 强制背压。
let msg = vec![0; 10 * 1024 * 1024];
let msg_clone = msg.clone();
let start = Instant::now();
let mut pool = futures::executor::LocalPool::new();
let bandwidth = 1_000_000_000;
let rtt = Duration::from_micros(100);
let (mut a, mut b) = Connection::new_constrained(bandwidth, rtt);
pool.spawner().spawn_obj(async move {
a.write_all(&msg_clone).await.unwrap();
}.boxed().into()).unwrap();
pool.run_until(async {
let mut received_msg = Vec::new();
b.read_to_end(&mut received_msg).await.unwrap();
assert_eq!(msg, received_msg);
});
let duration = start.elapsed();
println!(
"Bandwidth {} KiB/s, RTT {:.5} s, Payload length {} KiB, duration {:.5} s",
bandwidth / 1024, rtt.as_secs_f64(), msg.len() / 1024, duration.as_secs_f64(),
);
目前,由于库未进行适当的优化,您无法模拟高速网络。运行 examples/accuracy.rs
二进制文件以获取详细信息。
$ cargo run --example accuracy --release
Name Bandwidth RTT Payload Duration Acurracy
Satellite Network 500 KiB/s 0.90000 s 10240 KiB 164.49 s 1.00 %
Residential DSL 1953 KiB/s 0.05000 s 10240 KiB 42.97 s 1.02 %
Mobile HSDPA 5859 KiB/s 0.10000 s 10240 KiB 14.19 s 1.01 %
Residential ADSL2+ 19531 KiB/s 0.05000 s 10240 KiB 4.33 s 1.03 %
Residential Cable Internet 195312 KiB/s 0.02000 s 10240 KiB 0.46 s 1.07 %
GBit LAN 976562 KiB/s 0.00010 s 10240 KiB 0.26 s 3.16 %
High Speed Terrestiral Net 976562 KiB/s 0.00100 s 10240 KiB 0.13 s 1.56 %
Ultra High Speed LAN 97656250 KiB/s 0.00003 s 10240 KiB 0.01 s 16.08 %
许可证:Apache-2.0 OR MIT
依赖项
~1MB
~16K SLoC