mirror of https://github.com/dswd/vpncloud.git
Merge branch 'master' into threading
This commit is contained in:
commit
6c69c115aa
|
@ -6,6 +6,8 @@ RUN yum install -y libstdc++-*.i686 \
|
||||||
&& yum install -y glibc-*.i686 \
|
&& yum install -y glibc-*.i686 \
|
||||||
&& yum install -y libgcc.i686
|
&& yum install -y libgcc.i686
|
||||||
|
|
||||||
|
RUN ln -s /usr/bin/gcc /usr/bin/i686-linux-gnu-gcc
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
ENTRYPOINT /entrypoint.sh
|
ENTRYPOINT /entrypoint.sh
|
||||||
|
|
|
@ -21,7 +21,7 @@ rustup target add armv5te-unknown-linux-musleabi
|
||||||
rustup target add armv7-unknown-linux-musleabihf
|
rustup target add armv7-unknown-linux-musleabihf
|
||||||
rustup target add aarch64-unknown-linux-musl
|
rustup target add aarch64-unknown-linux-musl
|
||||||
|
|
||||||
curl https://github.com/upx/upx/releases/download/v${UPX_VERSION}/upx-${UPX_VERSION}-amd64_linux.tar.xz -Lf | tar -xJ --strip-components=1 -C /opt/rust/cargo/bin
|
curl https://github.com/upx/upx/releases/download/v${UPX_VERSION}/upx-${UPX_VERSION}-amd64_linux.tar.xz -Lf | tar -xJ --strip-components=1 -C /usr/bin
|
||||||
|
|
||||||
mkdir dist
|
mkdir dist
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
This project follows [semantic versioning](http://semver.org).
|
This project follows [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
### UNRELEASED
|
### v2.3.0 (2021-12-23)
|
||||||
|
|
||||||
- [added] Added build for armv5te (thanks to xek)
|
- [added] Added build for armv5te (thanks to xek)
|
||||||
- [added] Option to specify advertised addresses
|
- [added] Option to specify advertised addresses
|
||||||
|
@ -10,6 +10,7 @@ This project follows [semantic versioning](http://semver.org).
|
||||||
- [changed] Changed Rust version to 1.57.0
|
- [changed] Changed Rust version to 1.57.0
|
||||||
- [changed] Updated dependencies
|
- [changed] Updated dependencies
|
||||||
- [fixed] Fixed problem with IPv4 addresses in listen option
|
- [fixed] Fixed problem with IPv4 addresses in listen option
|
||||||
|
- [fixed] Fixed periodic broadcast messages in switch mode
|
||||||
|
|
||||||
### v2.2.0 (2021-04-06)
|
### v2.2.0 (2021-04-06)
|
||||||
|
|
||||||
|
|
|
@ -587,9 +587,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num_cpus"
|
name = "num_cpus"
|
||||||
version = "1.13.0"
|
version = "1.13.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
|
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hermit-abi",
|
"hermit-abi",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1005,9 +1005,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.82"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59"
|
checksum = "23a1dfb999630e338648c83e91c59a4e9fb7620f520c3194b6b89e276f2f1959"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -1203,7 +1203,7 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vpncloud"
|
name = "vpncloud"
|
||||||
version = "2.2.0"
|
version = "2.3.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "vpncloud"
|
name = "vpncloud"
|
||||||
version = "2.2.0"
|
version = "2.3.0"
|
||||||
authors = ["Dennis Schwerdel <schwerdel@googlemail.com>"]
|
authors = ["Dennis Schwerdel <schwerdel@googlemail.com>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
|
|
|
@ -1,3 +1,15 @@
|
||||||
|
vpncloud (2.3.0) stable; urgency=medium
|
||||||
|
|
||||||
|
* [added] Added build for armv5te (thanks to xek)
|
||||||
|
* [added] Option to specify advertised addresses
|
||||||
|
* [added] Peers now learn their own address from peers
|
||||||
|
* [changed] Changed Rust version to 1.57.0
|
||||||
|
* [changed] Updated dependencies
|
||||||
|
* [fixed] Fixed problem with IPv4 addresses in listen option
|
||||||
|
* [fixed] Fixed periodic broadcast messages in switch mode
|
||||||
|
|
||||||
|
-- Dennis Schwerdel <schwerdel+vpncloud@googlemail.com> Thu, 23 Dec 2021 20:41:00 +0100
|
||||||
|
|
||||||
vpncloud (2.2.0) stable; urgency=medium
|
vpncloud (2.2.0) stable; urgency=medium
|
||||||
|
|
||||||
* [added] Service target file (thanks to mnhauke)
|
* [added] Service target file (thanks to mnhauke)
|
||||||
|
|
|
@ -20,6 +20,8 @@ RUN yum install -y libstdc++-*.i686 \
|
||||||
&& yum install -y glibc-*.i686 \
|
&& yum install -y glibc-*.i686 \
|
||||||
&& yum install -y libgcc.i686
|
&& yum install -y libgcc.i686
|
||||||
|
|
||||||
|
RUN ln -s /usr/bin/gcc /usr/bin/i686-linux-gnu-gcc
|
||||||
|
|
||||||
RUN useradd -ms /bin/bash user
|
RUN useradd -ms /bin/bash user
|
||||||
USER user
|
USER user
|
||||||
WORKDIR /home/user
|
WORKDIR /home/user
|
||||||
|
|
|
@ -293,7 +293,7 @@ runcmd:
|
||||||
MinCount=self.node_count,
|
MinCount=self.node_count,
|
||||||
NetworkInterfaces=[
|
NetworkInterfaces=[
|
||||||
{
|
{
|
||||||
'SubnetId': self.subnet.id,
|
'SubnetId': self.subnet,
|
||||||
'DeviceIndex': 0,
|
'DeviceIndex': 0,
|
||||||
'AssociatePublicIpAddress': True,
|
'AssociatePublicIpAddress': True,
|
||||||
'Groups': [sg.group_id]
|
'Groups': [sg.group_id]
|
||||||
|
@ -301,7 +301,7 @@ runcmd:
|
||||||
],
|
],
|
||||||
Placement=placement,
|
Placement=placement,
|
||||||
UserData=userdata,
|
UserData=userdata,
|
||||||
KeyName='vpncloud-perf-test-keypair'
|
KeyName=key_pair.name
|
||||||
)
|
)
|
||||||
for instance in self.instances:
|
for instance in self.instances:
|
||||||
self.track_resource(instance)
|
self.track_resource(instance)
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"region": "eu-central-1",
|
||||||
|
"instance_type": "m5.large",
|
||||||
|
"ami": "ami-099ccc441b2ef41ec",
|
||||||
|
"version": "2.3.0",
|
||||||
|
"duration": 622.5463161468506
|
||||||
|
},
|
||||||
|
"native": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 9529265000.0,
|
||||||
|
"cpu_sender": 11.32918,
|
||||||
|
"cpu_receiver": 61.870429
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.046,
|
||||||
|
"rtt_max": 0.225,
|
||||||
|
"rtt_avg": 0.053,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.047,
|
||||||
|
"rtt_max": 10.98,
|
||||||
|
"rtt_avg": 0.054,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.048,
|
||||||
|
"rtt_max": 0.175,
|
||||||
|
"rtt_avg": 0.056,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plain": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 6388312000.0,
|
||||||
|
"cpu_sender": 16.955082,
|
||||||
|
"cpu_receiver": 72.705695
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.076,
|
||||||
|
"rtt_max": 11.973,
|
||||||
|
"rtt_avg": 0.09,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.08,
|
||||||
|
"rtt_max": 10.95,
|
||||||
|
"rtt_avg": 0.094,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.081,
|
||||||
|
"rtt_max": 1.638,
|
||||||
|
"rtt_avg": 0.095,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes256": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 3801851000.0,
|
||||||
|
"cpu_sender": 5.826756,
|
||||||
|
"cpu_receiver": 61.612033
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.075,
|
||||||
|
"rtt_max": 0.9,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_max": 0.275,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.08,
|
||||||
|
"rtt_max": 1.015,
|
||||||
|
"rtt_avg": 0.093,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"aes128": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 3880325000.0,
|
||||||
|
"cpu_sender": 6.219277,
|
||||||
|
"cpu_receiver": 62.125445
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.077,
|
||||||
|
"rtt_max": 11.656,
|
||||||
|
"rtt_avg": 0.09,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.08,
|
||||||
|
"rtt_max": 0.211,
|
||||||
|
"rtt_avg": 0.095,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.082,
|
||||||
|
"rtt_max": 1.398,
|
||||||
|
"rtt_avg": 0.095,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chacha20": {
|
||||||
|
"iperf": {
|
||||||
|
"throughput": 3126447000.0,
|
||||||
|
"cpu_sender": 5.113819,
|
||||||
|
"cpu_receiver": 58.58095
|
||||||
|
},
|
||||||
|
"ping_100": {
|
||||||
|
"rtt_min": 0.079,
|
||||||
|
"rtt_max": 0.271,
|
||||||
|
"rtt_avg": 0.091,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_500": {
|
||||||
|
"rtt_min": 0.083,
|
||||||
|
"rtt_max": 0.272,
|
||||||
|
"rtt_avg": 0.098,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
},
|
||||||
|
"ping_1000": {
|
||||||
|
"rtt_min": 0.087,
|
||||||
|
"rtt_max": 1.615,
|
||||||
|
"rtt_avg": 0.101,
|
||||||
|
"pkt_loss": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"results": {
|
||||||
|
"throughput_mbits": {
|
||||||
|
"native": 9529.265,
|
||||||
|
"plain": 6388.312,
|
||||||
|
"aes256": 3801.851,
|
||||||
|
"aes128": 3880.325,
|
||||||
|
"chacha20": 3126.447
|
||||||
|
},
|
||||||
|
"latency_us": {
|
||||||
|
"plain": {
|
||||||
|
"100": 18.5,
|
||||||
|
"500": 20.0,
|
||||||
|
"1000": 19.5
|
||||||
|
},
|
||||||
|
"aes256": {
|
||||||
|
"100": 20.0,
|
||||||
|
"500": 18.5,
|
||||||
|
"1000": 18.5
|
||||||
|
},
|
||||||
|
"aes128": {
|
||||||
|
"100": 18.5,
|
||||||
|
"500": 20.5,
|
||||||
|
"1000": 19.5
|
||||||
|
},
|
||||||
|
"chacha20": {
|
||||||
|
"100": 19.0,
|
||||||
|
"500": 22.000000000000004,
|
||||||
|
"1000": 22.500000000000004
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,14 +8,14 @@ from datetime import date
|
||||||
# Note: this script will run for ~8 minutes and incur costs of about $ 0.02
|
# Note: this script will run for ~8 minutes and incur costs of about $ 0.02
|
||||||
|
|
||||||
FILE = "../../target/release/vpncloud"
|
FILE = "../../target/release/vpncloud"
|
||||||
VERSION = "2.2.0"
|
VERSION = "2.3.0"
|
||||||
REGION = "eu-central-1"
|
REGION = "eu-central-1"
|
||||||
|
|
||||||
env = EC2Environment(
|
env = EC2Environment(
|
||||||
region = REGION,
|
region = REGION,
|
||||||
node_count = 2,
|
node_count = 2,
|
||||||
instance_type = "m5.large",
|
instance_type = "m5.large",
|
||||||
use_spot = True,
|
use_spot = False,
|
||||||
max_price = "0.08", # USD per hour per VM
|
max_price = "0.08", # USD per hour per VM
|
||||||
vpncloud_version = VERSION,
|
vpncloud_version = VERSION,
|
||||||
vpncloud_file = FILE,
|
vpncloud_file = FILE,
|
||||||
|
|
12
src/table.rs
12
src/table.rs
|
@ -48,6 +48,7 @@ impl<TS: TimeSource> ClaimTable<TS> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_claims(&mut self, peer: SocketAddr, mut claims: RangeList) {
|
pub fn set_claims(&mut self, peer: SocketAddr, mut claims: RangeList) {
|
||||||
|
let mut removed_claim = false;
|
||||||
for entry in &mut self.claims {
|
for entry in &mut self.claims {
|
||||||
if entry.peer == peer {
|
if entry.peer == peer {
|
||||||
let pos = claims.iter().position(|r| r == &entry.claim);
|
let pos = claims.iter().position(|r| r == &entry.claim);
|
||||||
|
@ -58,16 +59,19 @@ impl<TS: TimeSource> ClaimTable<TS> {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
entry.timeout = 0
|
entry.timeout = 0;
|
||||||
|
removed_claim = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for claim in claims {
|
for claim in claims {
|
||||||
self.claims.push(ClaimEntry { peer, claim, timeout: TS::now() + self.claim_timeout as Time })
|
self.claims.push(ClaimEntry { peer, claim, timeout: TS::now() + self.claim_timeout as Time })
|
||||||
}
|
}
|
||||||
for entry in self.cache.values_mut() {
|
if removed_claim {
|
||||||
if entry.peer == peer {
|
for entry in self.cache.values_mut() {
|
||||||
entry.timeout = 0
|
if entry.peer == peer {
|
||||||
|
entry.timeout = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.housekeep()
|
self.housekeep()
|
||||||
|
|
Loading…
Reference in New Issue