From a26aada833cc46a7259cf0a1c12f55f873204d00 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Thu, 16 Mar 2023 12:20:50 -0700 Subject: [PATCH 001/101] WIP readme with thoughts --- perf-dashboard/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 perf-dashboard/README.md diff --git a/perf-dashboard/README.md b/perf-dashboard/README.md new file mode 100644 index 000000000..209bf2118 --- /dev/null +++ b/perf-dashboard/README.md @@ -0,0 +1,26 @@ +# Perf Dashboard [wip] + +This is an outline of what I'd like to see our perf dashboard look like. + +A lot of this is inspired by the [MsQuic +dashboard](https://microsoft.github.io/msquic/). Please look at that first. + +For each combination of libp2p implementation, version, and transport we would +have numbers that outline: +1. Download/Upload throughput +2. Request latency +3. Requests per second (for some request/response protocol) +4. Handshakes per second (useful to identify overhead in connection + initialization). + +The y axis on the graphs is the value for the above tests, the x axis is the +specific version. Different lines represent different implementation+transports. + +The dashboards should be selectable and filterable. + +# Other transports (iperf/http) + +We have to be careful to compare apples to apples. A raw iperf number might be +confusing here because no application will ever hit those numbers since they +will at least want some encryption in their connection. I would suggest not +having this or an HTTP comparison. Having HTTPS might be okay. From ac3bba3afb18dd3c9dfe30264d3cde50e683a751 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 14:15:32 -0700 Subject: [PATCH 002/101] Add example data --- perf-dashboard/benchmark-data-schema.json | 45 ++ perf-dashboard/benchmark-result-type.ts | 19 + perf-dashboard/benchmarks.schema.json | 75 +++ perf-dashboard/example-data.json | 47 ++ perf-dashboard/util/.gitignore | 1 + perf-dashboard/util/README.md | 3 + perf-dashboard/util/main.ts | 18 + perf-dashboard/util/package-lock.json | 559 ++++++++++++++++++++++ perf-dashboard/util/package.json | 10 + perf-dashboard/util/tsconfig.json | 109 +++++ 10 files changed, 886 insertions(+) create mode 100644 perf-dashboard/benchmark-data-schema.json create mode 100644 perf-dashboard/benchmark-result-type.ts create mode 100644 perf-dashboard/benchmarks.schema.json create mode 100644 perf-dashboard/example-data.json create mode 100644 perf-dashboard/util/.gitignore create mode 100644 perf-dashboard/util/README.md create mode 100644 perf-dashboard/util/main.ts create mode 100644 perf-dashboard/util/package-lock.json create mode 100644 perf-dashboard/util/package.json create mode 100644 perf-dashboard/util/tsconfig.json diff --git a/perf-dashboard/benchmark-data-schema.json b/perf-dashboard/benchmark-data-schema.json new file mode 100644 index 000000000..81ef27f94 --- /dev/null +++ b/perf-dashboard/benchmark-data-schema.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://libp2p.io/benchmark.schema.json", + "title": "Benchmark Results", + "description": "Results from a benchmark run", + "type": "object", + "properties": { + "benchmarks": { + "description": "A list of benchmark results", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "The name of this benchmark", + "type": "string" + }, + "unit": { + "description": "The unit for the result", + "enum": [ + "bits/s", + "s" + ] + }, + "result": { + "description": "String encoded result. Parse as float64", + "type": "string" + } + }, + "required": [ + "name", + "unit", + "result", + "implementation", + "stack", + "version" + ] + } + } + }, + "required": [ + "benchmarks", + "productName" + ] +} \ No newline at end of file diff --git a/perf-dashboard/benchmark-result-type.ts b/perf-dashboard/benchmark-result-type.ts new file mode 100644 index 000000000..3a9f2b8f8 --- /dev/null +++ b/perf-dashboard/benchmark-result-type.ts @@ -0,0 +1,19 @@ +export type BenchmarkResults = { + benchmarks: Benchmark[], + // For referencing this schema in JSON + "$schema"?: string +}; + +export type Benchmark = { + name: string, + unit: "bits/s" | "s", + results: Result[], + +} + +export type Result = { + result: string, + implementation: string, + transportStack: string, + version: string +}; \ No newline at end of file diff --git a/perf-dashboard/benchmarks.schema.json b/perf-dashboard/benchmarks.schema.json new file mode 100644 index 000000000..f4b7fe846 --- /dev/null +++ b/perf-dashboard/benchmarks.schema.json @@ -0,0 +1,75 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/BenchmarkResults", + "definitions": { + "BenchmarkResults": { + "type": "object", + "properties": { + "benchmarks": { + "type": "array", + "items": { + "$ref": "#/definitions/Benchmark" + } + }, + "$schema": { + "type": "string" + } + }, + "required": [ + "benchmarks" + ], + "additionalProperties": false + }, + "Benchmark": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "unit": { + "type": "string", + "enum": [ + "bits/s", + "s" + ] + }, + "results": { + "type": "array", + "items": { + "$ref": "#/definitions/Result" + } + } + }, + "required": [ + "name", + "unit", + "results" + ], + "additionalProperties": false + }, + "Result": { + "type": "object", + "properties": { + "result": { + "type": "string" + }, + "implementation": { + "type": "string" + }, + "transportStack": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "result", + "implementation", + "transportStack", + "version" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/perf-dashboard/example-data.json b/perf-dashboard/example-data.json new file mode 100644 index 000000000..2e28a617f --- /dev/null +++ b/perf-dashboard/example-data.json @@ -0,0 +1,47 @@ +{ + "$schema": "./benchmarks.schema.json", + "benchmarks": [ + { + "name": "Single Connection throughput – Upload", + "unit": "bits/s", + "results": [ + { + "result": "1234", + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.26.2" + }, + { + "result": "4567", + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.50.0" + }, + { + "result": "1000000", + "implementation": "zig-libp2p", + "transportStack": "quic-v1", + "version": "v0.0.1" + } + ] + }, + { + "name": "Single Connection 1 byte round trip latency", + "unit": "s", + "results": [ + { + "result": "0.022", + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.26.2" + }, + { + "result": "0.012", + "implementation": "rust-libp2p", + "transportStack": "quic-v1", + "version": "v0.50.0" + } + ] + } + ] +} \ No newline at end of file diff --git a/perf-dashboard/util/.gitignore b/perf-dashboard/util/.gitignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/perf-dashboard/util/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/perf-dashboard/util/README.md b/perf-dashboard/util/README.md new file mode 100644 index 000000000..997c9782a --- /dev/null +++ b/perf-dashboard/util/README.md @@ -0,0 +1,3 @@ +# Util + +Helper to generate schemas for benchmark data. \ No newline at end of file diff --git a/perf-dashboard/util/main.ts b/perf-dashboard/util/main.ts new file mode 100644 index 000000000..e113efc2e --- /dev/null +++ b/perf-dashboard/util/main.ts @@ -0,0 +1,18 @@ +import * as tsj from "ts-json-schema-generator"; +import * as fs from "fs"; +// const fs = require("fs"); + +/** @type {import('ts-json-schema-generator/dist/src/Config').Config} */ +const config = { + path: "../benchmark-result-type.ts", + tsconfig: "./tsconfig.json", + type: "BenchmarkResults", // Or if you want to generate schema for that one type only +}; + +const output_path = "../benchmarks.schema.json"; + +const schema = tsj.createGenerator(config).createSchema(config.type); +const schemaString = JSON.stringify(schema, null, 2); +fs.writeFile(output_path, schemaString, (err) => { + if (err) throw err; +}); \ No newline at end of file diff --git a/perf-dashboard/util/package-lock.json b/perf-dashboard/util/package-lock.json new file mode 100644 index 000000000..7c6b8b01b --- /dev/null +++ b/perf-dashboard/util/package-lock.json @@ -0,0 +1,559 @@ +{ + "name": "util", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "ts-json-schema-generator": "^1.2.0", + "ts-node": "^10.9.1", + "typescript": "^5.0.2" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/node": { + "version": "18.15.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", + "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", + "peer": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-json-schema-generator": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.2.0.tgz", + "integrity": "sha512-tUMeO3ZvA12d3HHh7T/AK8W5hmUhDRNtqWRHSMN3ZRbUFt+UmV0oX8k1RK4SA+a+BKNHpmW2v06MS49e8Fi3Yg==", + "dependencies": { + "@types/json-schema": "^7.0.11", + "commander": "^9.4.1", + "glob": "^8.0.3", + "json5": "^2.2.1", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.1", + "typescript": "~4.9.3" + }, + "bin": { + "ts-json-schema-generator": "bin/ts-json-schema-generator" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ts-json-schema-generator/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/node": { + "version": "18.15.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", + "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", + "peer": true + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + }, + "ts-json-schema-generator": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.2.0.tgz", + "integrity": "sha512-tUMeO3ZvA12d3HHh7T/AK8W5hmUhDRNtqWRHSMN3ZRbUFt+UmV0oX8k1RK4SA+a+BKNHpmW2v06MS49e8Fi3Yg==", + "requires": { + "@types/json-schema": "^7.0.11", + "commander": "^9.4.1", + "glob": "^8.0.3", + "json5": "^2.2.1", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.1", + "typescript": "~4.9.3" + }, + "dependencies": { + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "typescript": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + } + } +} diff --git a/perf-dashboard/util/package.json b/perf-dashboard/util/package.json new file mode 100644 index 000000000..e4f320e3e --- /dev/null +++ b/perf-dashboard/util/package.json @@ -0,0 +1,10 @@ +{ + "dependencies": { + "ts-json-schema-generator": "^1.2.0", + "ts-node": "^10.9.1", + "typescript": "^5.0.2" + }, + "scripts": { + "gen-schema": "ts-node main.ts" + } +} \ No newline at end of file diff --git a/perf-dashboard/util/tsconfig.json b/perf-dashboard/util/tsconfig.json new file mode 100644 index 000000000..e075f973c --- /dev/null +++ b/perf-dashboard/util/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From dcd44bf39783871c23ba60d47b26920e2ddfa37d Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 15:14:08 -0700 Subject: [PATCH 003/101] Fix example data --- perf-dashboard/example-data.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-dashboard/example-data.json b/perf-dashboard/example-data.json index 2e28a617f..85b9377ef 100644 --- a/perf-dashboard/example-data.json +++ b/perf-dashboard/example-data.json @@ -13,7 +13,7 @@ }, { "result": "4567", - "implementation": "go-libp2p", + "implementation": "rust-libp2p", "transportStack": "quic-v1", "version": "v0.50.0" }, From cd6669501fc40348c22f5e6bec662293cbd74094 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 22:18:22 -0700 Subject: [PATCH 004/101] Extend example data --- perf-dashboard/benchmark-result-type.ts | 10 +- perf-dashboard/benchmarks.schema.json | 27 +++++- perf-dashboard/example-data.json | 124 +++++++++++++++++++++++- 3 files changed, 152 insertions(+), 9 deletions(-) diff --git a/perf-dashboard/benchmark-result-type.ts b/perf-dashboard/benchmark-result-type.ts index 3a9f2b8f8..2cff246af 100644 --- a/perf-dashboard/benchmark-result-type.ts +++ b/perf-dashboard/benchmark-result-type.ts @@ -8,12 +8,18 @@ export type Benchmark = { name: string, unit: "bits/s" | "s", results: Result[], + comparisons: Comparison[], } export type Result = { - result: string, + result: number, implementation: string, transportStack: string, version: string -}; \ No newline at end of file +}; + +export type Comparison = { + name: string, + result: number, +} \ No newline at end of file diff --git a/perf-dashboard/benchmarks.schema.json b/perf-dashboard/benchmarks.schema.json index f4b7fe846..3a2e993df 100644 --- a/perf-dashboard/benchmarks.schema.json +++ b/perf-dashboard/benchmarks.schema.json @@ -38,12 +38,19 @@ "items": { "$ref": "#/definitions/Result" } + }, + "comparisons": { + "type": "array", + "items": { + "$ref": "#/definitions/Comparison" + } } }, "required": [ "name", "unit", - "results" + "results", + "comparisons" ], "additionalProperties": false }, @@ -51,7 +58,7 @@ "type": "object", "properties": { "result": { - "type": "string" + "type": "number" }, "implementation": { "type": "string" @@ -70,6 +77,22 @@ "version" ], "additionalProperties": false + }, + "Comparison": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "result": { + "type": "number" + } + }, + "required": [ + "name", + "result" + ], + "additionalProperties": false } } } \ No newline at end of file diff --git a/perf-dashboard/example-data.json b/perf-dashboard/example-data.json index 85b9377ef..2388d068c 100644 --- a/perf-dashboard/example-data.json +++ b/perf-dashboard/example-data.json @@ -4,42 +4,156 @@ { "name": "Single Connection throughput – Upload", "unit": "bits/s", + "comparisons": [ + { + "name": "http", + "result": 1234 + } + ], "results": [ { - "result": "1234", + "result": 1100, + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.24.2" + }, + { + "result": 1000, + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.25.1" + }, + { + "result": 8234, "implementation": "go-libp2p", "transportStack": "quic-v1", "version": "v0.26.2" }, { - "result": "4567", + "result": 4000, "implementation": "rust-libp2p", "transportStack": "quic-v1", "version": "v0.50.0" }, { - "result": "1000000", + "result": 8000, + "implementation": "rust-libp2p", + "transportStack": "quic-v1", + "version": "v0.51.0" + }, + { + "result": 6000, + "implementation": "rust-libp2p", + "transportStack": "quic-v1", + "version": "v0.52.0" + }, + { + "result": 9001, "implementation": "zig-libp2p", "transportStack": "quic-v1", "version": "v0.0.1" + }, + { + "result": 9002, + "implementation": "zig-libp2p", + "transportStack": "quic-v1", + "version": "v0.0.2" + }, + { + "result": 201, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.41.0" + }, + { + "result": 302, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.42.0" + }, + { + "result": 501, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.43.0" } ] }, { "name": "Single Connection 1 byte round trip latency", "unit": "s", + "comparisons": [ + { + "name": "http", + "result": 1.234 + } + ], "results": [ { - "result": "0.022", + "result": 0.100, + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.24.2" + }, + { + "result": 0.100, + "implementation": "go-libp2p", + "transportStack": "quic-v1", + "version": "v0.25.1" + }, + { + "result": 0.834, "implementation": "go-libp2p", "transportStack": "quic-v1", "version": "v0.26.2" }, { - "result": "0.012", + "result": 0.400, "implementation": "rust-libp2p", "transportStack": "quic-v1", "version": "v0.50.0" + }, + { + "result": 0.800, + "implementation": "rust-libp2p", + "transportStack": "quic-v1", + "version": "v0.51.0" + }, + { + "result": 0.600, + "implementation": "rust-libp2p", + "transportStack": "quic-v1", + "version": "v0.52.0" + }, + { + "result": 0.901, + "implementation": "zig-libp2p", + "transportStack": "quic-v1", + "version": "v0.0.1" + }, + { + "result": 0.902, + "implementation": "zig-libp2p", + "transportStack": "quic-v1", + "version": "v0.0.2" + }, + { + "result": 0.201, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.41.0" + }, + { + "result": 0.302, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.42.0" + }, + { + "result": 0.501, + "implementation": "js-libp2p", + "transportStack": "tcp+noise+yamux", + "version": "v0.43.0" } ] } From b75cb3b9af35d9a3b6fb8722a442fa79dbb585ea Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 22:19:35 -0700 Subject: [PATCH 005/101] Add dashboard link --- perf-dashboard/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/perf-dashboard/README.md b/perf-dashboard/README.md index 209bf2118..d0783f165 100644 --- a/perf-dashboard/README.md +++ b/perf-dashboard/README.md @@ -24,3 +24,7 @@ We have to be careful to compare apples to apples. A raw iperf number might be confusing here because no application will ever hit those numbers since they will at least want some encryption in their connection. I would suggest not having this or an HTTP comparison. Having HTTPS might be okay. + +# Example dashboard + +https://observablehq.com/@realmarcopolo/libp2p-perf \ No newline at end of file From 343b2e587f3d8467ef59cf4be7bd2be610f64bca Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 22:21:19 -0700 Subject: [PATCH 006/101] Update readme --- perf-dashboard/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/perf-dashboard/README.md b/perf-dashboard/README.md index d0783f165..21ccb0c5e 100644 --- a/perf-dashboard/README.md +++ b/perf-dashboard/README.md @@ -27,4 +27,9 @@ having this or an HTTP comparison. Having HTTPS might be okay. # Example dashboard -https://observablehq.com/@realmarcopolo/libp2p-perf \ No newline at end of file +https://observablehq.com/@realmarcopolo/libp2p-perf + +The dashboard automatically pulls data from this repo to display it. + +It currently pulls example-data.json. The schema of this data is defined in +`benchmarks.schema.json` and `benchmark-result-type.ts`. \ No newline at end of file From 3e45f54e96c323880096d2423245edf43f13df31 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 21 Mar 2023 22:38:06 -0700 Subject: [PATCH 007/101] Update readme --- perf-dashboard/README.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/perf-dashboard/README.md b/perf-dashboard/README.md index 21ccb0c5e..fce73a9ad 100644 --- a/perf-dashboard/README.md +++ b/perf-dashboard/README.md @@ -12,6 +12,7 @@ have numbers that outline: 3. Requests per second (for some request/response protocol) 4. Handshakes per second (useful to identify overhead in connection initialization). +5. Memory usage. The y axis on the graphs is the value for the above tests, the x axis is the specific version. Different lines represent different implementation+transports. @@ -32,4 +33,30 @@ https://observablehq.com/@realmarcopolo/libp2p-perf The dashboard automatically pulls data from this repo to display it. It currently pulls example-data.json. The schema of this data is defined in -`benchmarks.schema.json` and `benchmark-result-type.ts`. \ No newline at end of file +`benchmarks.schema.json` and `benchmark-result-type.ts`. + +# Benchmark runner + +This is the thing that runs the benchmark binaries and produces the benchmark +data (that matches the benchmarks.schema.json/benchmark-result-type.ts) + +# Benchmark binary + +This is per implementation. It's a binary that accepts the following flags: + +| Flag | description | +| -------------------- | ------------------------------------------------------ | +| parallel_connections | number of parallel connections to use | +| upload_bytes | number of bytes to upload to server per connection | +| download_bytes | number of bytes to download from server per connection | +| n_times | number of times to do the perf round trip | +| close_connection | bool. Close the connection after a perf round trip | + +The binary should report the following: + +* Stats on the length of the run: + * Total, Avg, Min, Max, p95 +* Round trips per second: + * Avg, Min, Max, p95 + +Maybe more? TODO... From 8d94c83e1f1434cef8e7cb94806278e46c8d2f76 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Fri, 24 Mar 2023 12:54:49 -0700 Subject: [PATCH 008/101] Remove wrong schema file --- perf-dashboard/benchmark-data-schema.json | 45 ----------------------- 1 file changed, 45 deletions(-) delete mode 100644 perf-dashboard/benchmark-data-schema.json diff --git a/perf-dashboard/benchmark-data-schema.json b/perf-dashboard/benchmark-data-schema.json deleted file mode 100644 index 81ef27f94..000000000 --- a/perf-dashboard/benchmark-data-schema.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://libp2p.io/benchmark.schema.json", - "title": "Benchmark Results", - "description": "Results from a benchmark run", - "type": "object", - "properties": { - "benchmarks": { - "description": "A list of benchmark results", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "The name of this benchmark", - "type": "string" - }, - "unit": { - "description": "The unit for the result", - "enum": [ - "bits/s", - "s" - ] - }, - "result": { - "description": "String encoded result. Parse as float64", - "type": "string" - } - }, - "required": [ - "name", - "unit", - "result", - "implementation", - "stack", - "version" - ] - } - } - }, - "required": [ - "benchmarks", - "productName" - ] -} \ No newline at end of file From 22bb33709c75885e3adf7a9f63fa76669e994c0a Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 3 Apr 2023 18:20:50 +0200 Subject: [PATCH 009/101] feat: add basic provision script for client and server perf See `perf/README.md`. --- perf/.gitignore | 34 +++++++++ perf/README.md | 22 ++++++ perf/client-user-data.sh | 7 ++ perf/server-user-data.sh | 9 +++ perf/terraform.tf | 161 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 233 insertions(+) create mode 100644 perf/.gitignore create mode 100644 perf/README.md create mode 100644 perf/client-user-data.sh create mode 100644 perf/server-user-data.sh create mode 100644 perf/terraform.tf diff --git a/perf/.gitignore b/perf/.gitignore new file mode 100644 index 000000000..9b8a46e69 --- /dev/null +++ b/perf/.gitignore @@ -0,0 +1,34 @@ +# Local .terraform directories +**/.terraform/* + +# .tfstate files +*.tfstate +*.tfstate.* + +# Crash log files +crash.log +crash.*.log + +# Exclude all .tfvars files, which are likely to contain sensitive data, such as +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject +# to change depending on the environment. +*.tfvars +*.tfvars.json + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# Include override files you do wish to add to version control using negated pattern +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +# Ignore CLI configuration files +.terraformrc +terraform.rc diff --git a/perf/README.md b/perf/README.md new file mode 100644 index 000000000..5da5c66c1 --- /dev/null +++ b/perf/README.md @@ -0,0 +1,22 @@ +# libp2p perf testing + +## Setup + +1. Safe your SSH key as a file, e.g. `./mxinden.pub`. +2. Optionally update the reference to the ssh key in `terraform.tf`: + ```diff + + - resource "aws_key_pair" "mxinden" { + - key_name = "mxinden-public-key" + - public_key = file("./mxinden.pub") + - } + + resource "aws_key_pair" "your-key" { + + key_name = "your-key-public-key" + + public_key = file("./your-key.pub") + + } + ``` +3. `terraform apply` + +## Execute + +1. `ssh ec2-user@$(terraform output -raw client_public_ip) sudo docker run --tty --rm --entrypoint perf-client mxinden/libp2p-perf --server-address /ip4/$(terraform output -raw server_public_ip)/tcp/4001` diff --git a/perf/client-user-data.sh b/perf/client-user-data.sh new file mode 100644 index 000000000..cc58fe1ab --- /dev/null +++ b/perf/client-user-data.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +sudo yum update -y +sudo yum install docker -y +sudo systemctl enable docker +sudo systemctl start docker +sudo usermod -aG docker ec2-user diff --git a/perf/server-user-data.sh b/perf/server-user-data.sh new file mode 100644 index 000000000..52219a6e6 --- /dev/null +++ b/perf/server-user-data.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +sudo yum update -y +sudo yum install docker -y +sudo systemctl enable docker +sudo systemctl start docker +sudo usermod -aG docker ec2-user + +docker run -d --restart always --network host mxinden/libp2p-perf diff --git a/perf/terraform.tf b/perf/terraform.tf new file mode 100644 index 000000000..a36eda854 --- /dev/null +++ b/perf/terraform.tf @@ -0,0 +1,161 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 4.0" + } + } +} + +# Configure the AWS Provider +provider "aws" { + region = "us-east-1" +} + +locals { + common_tags = { + Project = "perf" + } +} + +resource "aws_vpc" "perf" { + cidr_block = "10.0.0.0/16" + + tags = merge(local.common_tags, { + Name = "perf" + }) +} + +resource "aws_subnet" "perf" { + vpc_id = aws_vpc.perf.id + cidr_block = "10.0.0.0/16" + availability_zone = "us-east-1a" + map_public_ip_on_launch = true + + tags = merge(local.common_tags, { + Name = "perf" + }) +} + +resource "aws_internet_gateway" "perf" { + vpc_id = aws_vpc.perf.id + + tags = merge(local.common_tags, { + Name = "perf-igw" + }) +} + +resource "aws_route_table" "perf" { + vpc_id = aws_vpc.perf.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.perf.id + } + + tags = merge(local.common_tags, { + Name = "perf-route-table" + }) +} + +resource "aws_route_table_association" "perf" { + subnet_id = aws_subnet.perf.id + route_table_id = aws_route_table.perf.id +} + +resource "aws_security_group" "restricted_inbound" { + name = "restricted_inbound" + description = "Allow SSH and port 4001 inbound traffic (TCP and UDP), allow all outbound traffic" + vpc_id = aws_vpc.perf.id + + # SSH (TCP) + ingress { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + from_port = 4001 + to_port = 4001 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + from_port = 4001 + to_port = 4001 + protocol = "udp" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = merge(local.common_tags, { + Name = "restricted_inbound_sg" + }) +} + +resource "aws_key_pair" "mxinden" { + key_name = "mxinden-public-key" + public_key = file("./mxinden.pub") +} + +resource "aws_instance" "server" { + ami = "ami-00c39f71452c08778" + instance_type = "t2.micro" + + subnet_id = aws_subnet.perf.id + + key_name = aws_key_pair.mxinden.key_name + + vpc_security_group_ids = [aws_security_group.restricted_inbound.id] + + # Debug via: + # - /var/log/cloud-init.log and + # - /var/log/cloud-init-output.log + user_data = file("${path.module}/server-user-data.sh") + user_data_replace_on_change = true + + tags = merge(local.common_tags, { + Name = "server" + }) +} + +resource "aws_instance" "client" { + ami = "ami-00c39f71452c08778" + instance_type = "t2.micro" + + subnet_id = aws_subnet.perf.id + + key_name = aws_key_pair.mxinden.key_name + + vpc_security_group_ids = [aws_security_group.restricted_inbound.id] + + # Debug via: + # - /var/log/cloud-init.log and + # - /var/log/cloud-init-output.log + user_data = file("${path.module}/client-user-data.sh") + user_data_replace_on_change = true + + tags = merge(local.common_tags, { + Name = "client" + }) +} + +output "server_public_ip" { + value = aws_instance.server.public_ip + description = "Public IP address of the server instance" +} + +output "client_public_ip" { + value = aws_instance.client.public_ip + description = "Public IP address of the client instance" +} + From 2d36ba14821568c699654e0855c784405b6abc4e Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 6 Apr 2023 19:56:14 +0200 Subject: [PATCH 010/101] Check in .terraform.lock.hcl --- perf/.terraform.lock.hcl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 perf/.terraform.lock.hcl diff --git a/perf/.terraform.lock.hcl b/perf/.terraform.lock.hcl new file mode 100644 index 000000000..e54d18d34 --- /dev/null +++ b/perf/.terraform.lock.hcl @@ -0,0 +1,25 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "4.61.0" + constraints = "~> 4.0" + hashes = [ + "h1:mJSchOA6VkYwEsi+tuspadRmyyE+FGZGYJFUt5kHV+M=", + "zh:051e2588410b7448a5c4c30d668948dd6fdfa8037700bfc00fb228986ccbf3a5", + "zh:082fbcf9706b48d0880ba552a11c29527e228dadd6d83668d0789abda24e5922", + "zh:0e0e72f214fb24f4f9c601cab088a2d8e00ec3327c451bc753911951d773214a", + "zh:3af6d38ca733ca66cce15c6a5735ded7c18348ad26040ebd9a59778b2cd9cf6c", + "zh:404898bc2258bbb9527fa06c72cb927ca011fd9bc3f4b90931c0912652c3f9e9", + "zh:4f617653b0f17a7708bc896f029c4ab0b677a1a1c987bd77166acad1d82db469", + "zh:5dbe393355ac137aa3fd329e3d24871f27012d3ba93d714485b55820df240349", + "zh:6067c2127eb5c879227aca671f101de6dcba909d0d8d15d5711480351962a248", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:a939f94461f91aa3b7ec7096271e2714309bd917fe9a03e02f68afb556d65e0f", + "zh:b21227b9082e5fafe8b7c415dc6a99c0d82da05492457377a5fe7d4acaed80e2", + "zh:b8d9f09ed5fc8c654b768b7bee1237eaf1e2287c898249e740695055fb0fe072", + "zh:d360e1e185b148ff6b1d0ed4f7d574e08f2391697ab43df62085b04a1a5b1284", + "zh:da962da17ddda744911cb1e92b983fa3874d73a28f3ee72faa9ddb6680a63774", + "zh:e2f1c4f5ebeb4fd7ef690178168a4c529025b54a91bb7a087dcea48e0b82737a", + ] +} From 7fa9f823dd4addc760b3af499a5625e990e7bc50 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 6 Apr 2023 21:42:55 +0200 Subject: [PATCH 011/101] Spin up server in us-west-1 and client in us-east-1 --- perf/client-user-data.sh | 7 - perf/region/main.tf | 135 +++++++++++++++++++ perf/terraform.tf | 147 ++------------------- perf/{server-user-data.sh => user-data.sh} | 0 4 files changed, 147 insertions(+), 142 deletions(-) delete mode 100644 perf/client-user-data.sh create mode 100644 perf/region/main.tf rename perf/{server-user-data.sh => user-data.sh} (100%) diff --git a/perf/client-user-data.sh b/perf/client-user-data.sh deleted file mode 100644 index cc58fe1ab..000000000 --- a/perf/client-user-data.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -sudo yum update -y -sudo yum install docker -y -sudo systemctl enable docker -sudo systemctl start docker -sudo usermod -aG docker ec2-user diff --git a/perf/region/main.tf b/perf/region/main.tf new file mode 100644 index 000000000..0bad9d417 --- /dev/null +++ b/perf/region/main.tf @@ -0,0 +1,135 @@ +variable "region" { + description = "The AWS region to create resources in" +} + +variable "ami" { + description = "The Amazon Machine Image to use" +} + +variable "common_tags" { + type = map(string) + description = "Common tags to apply to all resources" +} + +locals { + availability_zone = "${var.region}a" +} + +provider "aws" { + region = var.region +} + +resource "aws_vpc" "perf" { + cidr_block = "10.0.0.0/16" + + tags = merge(var.common_tags, { + Name = "perf" + }) +} + +resource "aws_subnet" "perf" { + vpc_id = aws_vpc.perf.id + cidr_block = "10.0.0.0/16" + availability_zone = local.availability_zone + map_public_ip_on_launch = true + + tags = merge(var.common_tags, { + Name = "perf" + }) +} + +resource "aws_internet_gateway" "perf" { + vpc_id = aws_vpc.perf.id + + tags = merge(var.common_tags, { + Name = "perf-igw" + }) +} + +resource "aws_route_table" "perf" { + vpc_id = aws_vpc.perf.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.perf.id + } + + tags = merge(var.common_tags, { + Name = "perf-route-table" + }) +} + +resource "aws_route_table_association" "perf" { + subnet_id = aws_subnet.perf.id + route_table_id = aws_route_table.perf.id +} + +resource "aws_security_group" "restricted_inbound" { + name = "restricted_inbound" + description = "Allow SSH and port 4001 inbound traffic (TCP and UDP), allow all outbound traffic" + vpc_id = aws_vpc.perf.id + + # SSH (TCP) + ingress { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + from_port = 4001 + to_port = 4001 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + from_port = 4001 + to_port = 4001 + protocol = "udp" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = merge(var.common_tags, { + Name = "restricted_inbound_sg" + }) +} + +resource "aws_key_pair" "mxinden" { + key_name = "mxinden-public-key" + public_key = file("./mxinden.pub") +} + +resource "aws_instance" "node" { + ami = var.ami + instance_type = "t2.micro" + + subnet_id = aws_subnet.perf.id + + key_name = aws_key_pair.mxinden.key_name + + vpc_security_group_ids = [aws_security_group.restricted_inbound.id] + + # Debug via: + # - /var/log/cloud-init.log and + # - /var/log/cloud-init-output.log + user_data = file("./user-data.sh") + user_data_replace_on_change = true + + tags = merge(var.common_tags, { + Name = "node" + }) +} + +output "node_public_ip" { + value = aws_instance.node.public_ip + description = "Public IP address of the node instance" +} diff --git a/perf/terraform.tf b/perf/terraform.tf index a36eda854..2f3a81d7a 100644 --- a/perf/terraform.tf +++ b/perf/terraform.tf @@ -7,155 +7,32 @@ terraform { } } -# Configure the AWS Provider -provider "aws" { - region = "us-east-1" -} +module "server_region" { + source = "./region" + region = "us-west-1" + ami = "ami-09c5c62bac0d0634e" -locals { common_tags = { Project = "perf" } } -resource "aws_vpc" "perf" { - cidr_block = "10.0.0.0/16" - - tags = merge(local.common_tags, { - Name = "perf" - }) -} - -resource "aws_subnet" "perf" { - vpc_id = aws_vpc.perf.id - cidr_block = "10.0.0.0/16" - availability_zone = "us-east-1a" - map_public_ip_on_launch = true - - tags = merge(local.common_tags, { - Name = "perf" - }) -} - -resource "aws_internet_gateway" "perf" { - vpc_id = aws_vpc.perf.id - - tags = merge(local.common_tags, { - Name = "perf-igw" - }) -} - -resource "aws_route_table" "perf" { - vpc_id = aws_vpc.perf.id - - route { - cidr_block = "0.0.0.0/0" - gateway_id = aws_internet_gateway.perf.id - } - - tags = merge(local.common_tags, { - Name = "perf-route-table" - }) -} - -resource "aws_route_table_association" "perf" { - subnet_id = aws_subnet.perf.id - route_table_id = aws_route_table.perf.id -} - -resource "aws_security_group" "restricted_inbound" { - name = "restricted_inbound" - description = "Allow SSH and port 4001 inbound traffic (TCP and UDP), allow all outbound traffic" - vpc_id = aws_vpc.perf.id - - # SSH (TCP) - ingress { - from_port = 22 - to_port = 22 - protocol = "tcp" - cidr_blocks = ["0.0.0.0/0"] - } - - ingress { - from_port = 4001 - to_port = 4001 - protocol = "tcp" - cidr_blocks = ["0.0.0.0/0"] - } - - ingress { - from_port = 4001 - to_port = 4001 - protocol = "udp" - cidr_blocks = ["0.0.0.0/0"] - } +module "client_region" { + source = "./region" + region = "us-east-1" + ami = "ami-00c39f71452c08778" - egress { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] + common_tags = { + Project = "perf" } - - tags = merge(local.common_tags, { - Name = "restricted_inbound_sg" - }) -} - -resource "aws_key_pair" "mxinden" { - key_name = "mxinden-public-key" - public_key = file("./mxinden.pub") -} - -resource "aws_instance" "server" { - ami = "ami-00c39f71452c08778" - instance_type = "t2.micro" - - subnet_id = aws_subnet.perf.id - - key_name = aws_key_pair.mxinden.key_name - - vpc_security_group_ids = [aws_security_group.restricted_inbound.id] - - # Debug via: - # - /var/log/cloud-init.log and - # - /var/log/cloud-init-output.log - user_data = file("${path.module}/server-user-data.sh") - user_data_replace_on_change = true - - tags = merge(local.common_tags, { - Name = "server" - }) -} - -resource "aws_instance" "client" { - ami = "ami-00c39f71452c08778" - instance_type = "t2.micro" - - subnet_id = aws_subnet.perf.id - - key_name = aws_key_pair.mxinden.key_name - - vpc_security_group_ids = [aws_security_group.restricted_inbound.id] - - # Debug via: - # - /var/log/cloud-init.log and - # - /var/log/cloud-init-output.log - user_data = file("${path.module}/client-user-data.sh") - user_data_replace_on_change = true - - tags = merge(local.common_tags, { - Name = "client" - }) } output "server_public_ip" { - value = aws_instance.server.public_ip + value = module.server_region.node_public_ip description = "Public IP address of the server instance" } output "client_public_ip" { - value = aws_instance.client.public_ip + value = module.client_region.node_public_ip description = "Public IP address of the client instance" } - diff --git a/perf/server-user-data.sh b/perf/user-data.sh similarity index 100% rename from perf/server-user-data.sh rename to perf/user-data.sh From 9361069a5b345242b8a5e56239f9e92e17ca77d2 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Sat, 8 Apr 2023 20:15:55 +0200 Subject: [PATCH 012/101] feat: introduce runner --- perf/runner/.gitignore | 2 + perf/runner/package-lock.json | 358 +++++++++++++++++++++++ perf/runner/package.json | 20 ++ perf/runner/src/benchmark-result-type.ts | 25 ++ perf/runner/src/index.ts | 99 +++++++ perf/runner/src/versions.ts | 13 + perf/runner/tsconfig.json | 15 + perf/{ => terraform}/.gitignore | 0 perf/{ => terraform}/.terraform.lock.hcl | 0 perf/{ => terraform}/region/main.tf | 0 perf/{ => terraform}/terraform.tf | 0 perf/{ => terraform}/user-data.sh | 0 12 files changed, 532 insertions(+) create mode 100644 perf/runner/.gitignore create mode 100644 perf/runner/package-lock.json create mode 100644 perf/runner/package.json create mode 100644 perf/runner/src/benchmark-result-type.ts create mode 100644 perf/runner/src/index.ts create mode 100644 perf/runner/src/versions.ts create mode 100644 perf/runner/tsconfig.json rename perf/{ => terraform}/.gitignore (100%) rename perf/{ => terraform}/.terraform.lock.hcl (100%) rename perf/{ => terraform}/region/main.tf (100%) rename perf/{ => terraform}/terraform.tf (100%) rename perf/{ => terraform}/user-data.sh (100%) diff --git a/perf/runner/.gitignore b/perf/runner/.gitignore new file mode 100644 index 000000000..6a7f7218f --- /dev/null +++ b/perf/runner/.gitignore @@ -0,0 +1,2 @@ +# Ignore built ts files +dist/**/* \ No newline at end of file diff --git a/perf/runner/package-lock.json b/perf/runner/package-lock.json new file mode 100644 index 000000000..5c01455df --- /dev/null +++ b/perf/runner/package-lock.json @@ -0,0 +1,358 @@ +{ + "name": "runner", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "runner", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "yargs": "^17.7.1" + }, + "devDependencies": { + "@types/node": "^18.15.11", + "@types/yargs": "^17.0.24", + "typescript": "^5.0.4" + } + }, + "node_modules/@types/node": { + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@types/node": { + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } +} diff --git a/perf/runner/package.json b/perf/runner/package.json new file mode 100644 index 000000000..e0df3a955 --- /dev/null +++ b/perf/runner/package.json @@ -0,0 +1,20 @@ +{ + "name": "runner", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc", + "start": "node ./dist/index.js" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^18.15.11", + "@types/yargs": "^17.0.24", + "typescript": "^5.0.4" + }, + "dependencies": { + "yargs": "^17.7.1" + } +} diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts new file mode 100644 index 000000000..4d8469e33 --- /dev/null +++ b/perf/runner/src/benchmark-result-type.ts @@ -0,0 +1,25 @@ +export type BenchmarkResults = { + benchmarks: Benchmark[], + // For referencing this schema in JSON + "$schema"?: string +}; + +export type Benchmark = { + name: string, + unit: "bits/s" | "s", + results: Result[], + comparisons: Comparison[], + +} + +export type Result = { + result: number[], + implementation: string, + transportStack: string, + version: string +}; + +export type Comparison = { + name: string, + result: number, +} diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts new file mode 100644 index 000000000..385e53a0c --- /dev/null +++ b/perf/runner/src/index.ts @@ -0,0 +1,99 @@ +import { execSync } from 'child_process'; +import { versions } from './versions'; +import yargs from 'yargs'; +import { BenchmarkResults, Benchmark } from './benchmark-result-type'; + +interface Latencies { + latencies: number[]; +} + +interface Args { + clientPublicIP: string; + serverPublicIP: string; + dockerImageId: string; + transportStack: string, +} + +function runBenchmark(args: Args): Latencies { + let serverAddress: string; + + switch (args.transportStack) { + case 'tcp': + serverAddress = `/ip4/${args.serverPublicIP}/tcp/4001`; + break; + case 'quic-v1': + serverAddress = `/ip4/${args.serverPublicIP}/udp/4001/quic-v1`; + break; + default: + console.error("Unsupported transport stack ${args.transportStack}"); + process.exit(1); + + } + + const cmd = `echo This message goes to stderr >&2 && ssh ec2-user@${args.clientPublicIP} docker run --rm --entrypoint perf-client ${args.dockerImageId} --server-address ${serverAddress} --upload-bytes 1 --download-bytes 1 --n-times 10`; + + try { + const stdout = execSync(cmd, { + encoding: 'utf8', + stdio: [process.stdin, 'pipe', process.stderr], + }); + console.log(`output: ${stdout}`); + const latencies: Latencies = JSON.parse(stdout.toString()); + return latencies; + } catch (error) { + console.error((error as Error).message); + process.exit(1); + } +} + +async function main(clientPublicIP: string, serverPublicIP: string) { + const benchmark: Benchmark = { + name: "", + unit: "s", + results: [], + comparisons: [], + }; + + + for (const version of versions) { + for (const transportStack of version.transportStacks) { + const latencies = runBenchmark({ + clientPublicIP: clientPublicIP, + serverPublicIP: serverPublicIP, + dockerImageId: version.containerImageID, + transportStack: transportStack, + }); + + benchmark.results.push({ + result: latencies.latencies, + implementation: "", + version: version.id, + transportStack: "", + }); + } + }; + + const benchmarkResults: BenchmarkResults = { + benchmarks: [benchmark], + }; + + console.log(JSON.stringify(benchmarkResults, null, 2)); +} + +const argv = yargs + .options({ + 'client-public-ip': { + type: 'string', + demandOption: true, + description: 'Client public IP address', + }, + 'server-public-ip': { + type: 'string', + demandOption: true, + description: 'Server public IP address', + }, + }) + .command('help', 'Print usage information', yargs.help) + .parseSync(); + +main(argv['client-public-ip'] as string, argv['server-public-ip'] as string); diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts new file mode 100644 index 000000000..83ecf51de --- /dev/null +++ b/perf/runner/src/versions.ts @@ -0,0 +1,13 @@ +export type Version = { + id: string, + containerImageID: string, + transportStacks: string[], +} + +export const versions: Array = [ + { + id: "rust-master", + containerImageID: "33cdc2e4fc37", + transportStacks: ["tcp", "quic-v1"] + }, +] diff --git a/perf/runner/tsconfig.json b/perf/runner/tsconfig.json new file mode 100644 index 000000000..a1b7fac69 --- /dev/null +++ b/perf/runner/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "commonjs", + "outDir": "./dist", + "strict": true, + "esModuleInterop": true + }, + "include": [ + "./src/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/perf/.gitignore b/perf/terraform/.gitignore similarity index 100% rename from perf/.gitignore rename to perf/terraform/.gitignore diff --git a/perf/.terraform.lock.hcl b/perf/terraform/.terraform.lock.hcl similarity index 100% rename from perf/.terraform.lock.hcl rename to perf/terraform/.terraform.lock.hcl diff --git a/perf/region/main.tf b/perf/terraform/region/main.tf similarity index 100% rename from perf/region/main.tf rename to perf/terraform/region/main.tf diff --git a/perf/terraform.tf b/perf/terraform/terraform.tf similarity index 100% rename from perf/terraform.tf rename to perf/terraform/terraform.tf diff --git a/perf/user-data.sh b/perf/terraform/user-data.sh similarity index 100% rename from perf/user-data.sh rename to perf/terraform/user-data.sh From 7358746ca7e3f61307f16ef819ddf05ab34147ae Mon Sep 17 00:00:00 2001 From: Max Inden Date: Sat, 8 Apr 2023 20:16:47 +0200 Subject: [PATCH 013/101] fix(.gitignore): don't include public keys --- perf/terraform/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/perf/terraform/.gitignore b/perf/terraform/.gitignore index 9b8a46e69..55bc145c3 100644 --- a/perf/terraform/.gitignore +++ b/perf/terraform/.gitignore @@ -32,3 +32,5 @@ override.tf.json # Ignore CLI configuration files .terraformrc terraform.rc + +*.pub From 8545b01b981165f8c52e5e12a2c031b2b8dc204c Mon Sep 17 00:00:00 2001 From: Max Inden Date: Sat, 8 Apr 2023 20:35:06 +0200 Subject: [PATCH 014/101] Minor refactorings --- perf/runner/src/index.ts | 80 +++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 385e53a0c..93d5d7478 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -3,6 +3,42 @@ import { versions } from './versions'; import yargs from 'yargs'; import { BenchmarkResults, Benchmark } from './benchmark-result-type'; +async function main(clientPublicIP: string, serverPublicIP: string) { + const benchmark: Benchmark = { + name: "", + unit: "s", + results: [], + comparisons: [], + }; + + + for (const version of versions) { + for (const transportStack of version.transportStacks) { + const latencies = runBenchmark({ + clientPublicIP: clientPublicIP, + serverPublicIP: serverPublicIP, + dockerImageId: version.containerImageID, + transportStack: transportStack, + uploadBytes: 1, + downloadBytes: 1, + nTimes: 10, + }); + + benchmark.results.push({ + result: latencies.latencies, + implementation: "", + version: version.id, + transportStack: "", + }); + } + }; + + const benchmarkResults: BenchmarkResults = { + benchmarks: [benchmark], + }; + console.log(JSON.stringify(benchmarkResults, null, 2)); +} + interface Latencies { latencies: number[]; } @@ -12,6 +48,9 @@ interface Args { serverPublicIP: string; dockerImageId: string; transportStack: string, + uploadBytes: number, + downloadBytes: number, + nTimes: number, } function runBenchmark(args: Args): Latencies { @@ -30,14 +69,15 @@ function runBenchmark(args: Args): Latencies { } - const cmd = `echo This message goes to stderr >&2 && ssh ec2-user@${args.clientPublicIP} docker run --rm --entrypoint perf-client ${args.dockerImageId} --server-address ${serverAddress} --upload-bytes 1 --download-bytes 1 --n-times 10`; + const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` + const dockerCMD = `docker run --rm --entrypoint perf-client ${args.dockerImageId} ${binFlags}` + const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; try { - const stdout = execSync(cmd, { + const stdout = execSync(cmd, { encoding: 'utf8', stdio: [process.stdin, 'pipe', process.stderr], }); - console.log(`output: ${stdout}`); const latencies: Latencies = JSON.parse(stdout.toString()); return latencies; } catch (error) { @@ -46,40 +86,6 @@ function runBenchmark(args: Args): Latencies { } } -async function main(clientPublicIP: string, serverPublicIP: string) { - const benchmark: Benchmark = { - name: "", - unit: "s", - results: [], - comparisons: [], - }; - - - for (const version of versions) { - for (const transportStack of version.transportStacks) { - const latencies = runBenchmark({ - clientPublicIP: clientPublicIP, - serverPublicIP: serverPublicIP, - dockerImageId: version.containerImageID, - transportStack: transportStack, - }); - - benchmark.results.push({ - result: latencies.latencies, - implementation: "", - version: version.id, - transportStack: "", - }); - } - }; - - const benchmarkResults: BenchmarkResults = { - benchmarks: [benchmark], - }; - - console.log(JSON.stringify(benchmarkResults, null, 2)); -} - const argv = yargs .options({ 'client-public-ip': { From 2abcf7b1fde8263ed367cdc325b635bccbb4443e Mon Sep 17 00:00:00 2001 From: Max Inden Date: Sat, 8 Apr 2023 20:40:24 +0200 Subject: [PATCH 015/101] Small addition to perf readme --- perf/README.md | 15 +++++++++++---- perf/terraform/.gitignore | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/perf/README.md b/perf/README.md index 5da5c66c1..c45d14a70 100644 --- a/perf/README.md +++ b/perf/README.md @@ -2,8 +2,9 @@ ## Setup -1. Safe your SSH key as a file, e.g. `./mxinden.pub`. -2. Optionally update the reference to the ssh key in `terraform.tf`: +1. `cd terraform` +2. Safe your SSH key as a file, e.g. `./mxinden.pub`. +3. Optionally update the reference to the ssh key in `region/main.tf`: ```diff - resource "aws_key_pair" "mxinden" { @@ -15,8 +16,14 @@ + public_key = file("./your-key.pub") + } ``` -3. `terraform apply` +4. `terraform apply` ## Execute -1. `ssh ec2-user@$(terraform output -raw client_public_ip) sudo docker run --tty --rm --entrypoint perf-client mxinden/libp2p-perf --server-address /ip4/$(terraform output -raw server_public_ip)/tcp/4001` +1. `cd runner` +2. `npm run build` +3. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` + +## Add benchmark binary + +See `runner/src/versions.ts`. diff --git a/perf/terraform/.gitignore b/perf/terraform/.gitignore index 55bc145c3..bb09c5300 100644 --- a/perf/terraform/.gitignore +++ b/perf/terraform/.gitignore @@ -10,8 +10,8 @@ crash.log crash.*.log # Exclude all .tfvars files, which are likely to contain sensitive data, such as -# password, private keys, and other secrets. These should not be part of version -# control as they are data points which are potentially sensitive and subject +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject # to change depending on the environment. *.tfvars *.tfvars.json From 4f2d7f9e38f5340331635027a07b0c0c82fbb923 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Tue, 11 Apr 2023 13:58:47 +0200 Subject: [PATCH 016/101] Introduce download and upload benchmarks --- perf/runner/src/index.ts | 93 +++++++++++++++++++++++++++---------- perf/runner/src/versions.ts | 2 +- 2 files changed, 70 insertions(+), 25 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 93d5d7478..d547b3aaf 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -1,49 +1,88 @@ import { execSync } from 'child_process'; import { versions } from './versions'; import yargs from 'yargs'; -import { BenchmarkResults, Benchmark } from './benchmark-result-type'; +import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; async function main(clientPublicIP: string, serverPublicIP: string) { - const benchmark: Benchmark = { - name: "", - unit: "s", - results: [], - comparisons: [], + const benchmarkResults: BenchmarkResults = { + benchmarks: [ + { + name: "Single Connection throughput – Upload 10 MiB", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 10 * 1024 * 1024, + downloadBytes: 0, + nTimes: 1, + }), + comparisons: [], + }, + { + name: "Single Connection throughput – Download 10 MiB", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 0, + downloadBytes: 10 * 1024 * 1024, + nTimes: 1, + }), + comparisons: [], + }, + { + name: "Single Connection 1 byte round trip latency", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 1, + downloadBytes: 1, + nTimes: 10, + }), + comparisons: [], + } + ], }; + console.log(JSON.stringify(benchmarkResults, null, 2)); +} + +interface ArgsRunBenchmarkAcrossVersions { + clientPublicIP: string; + serverPublicIP: string; + uploadBytes: number, + downloadBytes: number, + nTimes: number, +} +function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { + const results: Result[] = []; for (const version of versions) { for (const transportStack of version.transportStacks) { const latencies = runBenchmark({ - clientPublicIP: clientPublicIP, - serverPublicIP: serverPublicIP, + clientPublicIP: args.clientPublicIP, + serverPublicIP: args.serverPublicIP, dockerImageId: version.containerImageID, transportStack: transportStack, - uploadBytes: 1, - downloadBytes: 1, - nTimes: 10, + uploadBytes: args.uploadBytes, + downloadBytes: args.downloadBytes, + nTimes: args.nTimes, }); - benchmark.results.push({ + results.push({ result: latencies.latencies, implementation: "", version: version.id, - transportStack: "", + transportStack: transportStack, }); } }; - const benchmarkResults: BenchmarkResults = { - benchmarks: [benchmark], - }; - console.log(JSON.stringify(benchmarkResults, null, 2)); -} - -interface Latencies { - latencies: number[]; + return results; } -interface Args { +interface ArgsRunBenchmark { clientPublicIP: string; serverPublicIP: string; dockerImageId: string; @@ -53,7 +92,12 @@ interface Args { nTimes: number, } -function runBenchmark(args: Args): Latencies { +interface Latencies { + latencies: number[]; +} + + +function runBenchmark(args: ArgsRunBenchmark): Latencies { let serverAddress: string; switch (args.transportStack) { @@ -70,7 +114,8 @@ function runBenchmark(args: Args): Latencies { } const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` - const dockerCMD = `docker run --rm --entrypoint perf-client ${args.dockerImageId} ${binFlags}` + // TODO Take docker hub repository from version.ts + const dockerCMD = `docker run --rm --entrypoint perf-client mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; try { diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 83ecf51de..54f1e40e6 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -7,7 +7,7 @@ export type Version = { export const versions: Array = [ { id: "rust-master", - containerImageID: "33cdc2e4fc37", + containerImageID: "8b57bf547f7aa65fec9e6baf764cc1f8be195ef53343c230271116be353889e6", transportStacks: ["tcp", "quic-v1"] }, ] From f0e98f65832598b25736a2b42a21b275d7800242 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 11 Apr 2023 21:29:01 -0700 Subject: [PATCH 017/101] Add Go impl --- perf/impl/go/v0.27/Dockerfile | 15 + perf/impl/go/v0.27/README.md | 12 + perf/impl/go/v0.27/go.mod | 98 +++++++ perf/impl/go/v0.27/go.sum | 506 ++++++++++++++++++++++++++++++++++ perf/impl/go/v0.27/main.go | 80 ++++++ perf/impl/go/v0.27/perf.go | 128 +++++++++ perf/impl/go/v0.27/server | 2 + 7 files changed, 841 insertions(+) create mode 100644 perf/impl/go/v0.27/Dockerfile create mode 100644 perf/impl/go/v0.27/README.md create mode 100644 perf/impl/go/v0.27/go.mod create mode 100644 perf/impl/go/v0.27/go.sum create mode 100644 perf/impl/go/v0.27/main.go create mode 100644 perf/impl/go/v0.27/perf.go create mode 100755 perf/impl/go/v0.27/server diff --git a/perf/impl/go/v0.27/Dockerfile b/perf/impl/go/v0.27/Dockerfile new file mode 100644 index 000000000..d70a84437 --- /dev/null +++ b/perf/impl/go/v0.27/Dockerfile @@ -0,0 +1,15 @@ +# Build Go Binary +FROM golang:1.20-alpine AS builder + +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY *.go ./ +RUN go build -o perf . + +FROM alpine + +COPY --from=builder /app/perf /app/perf +COPY server /app/server + +ENTRYPOINT [ "/app/perf" ] diff --git a/perf/impl/go/v0.27/README.md b/perf/impl/go/v0.27/README.md new file mode 100644 index 000000000..99b140243 --- /dev/null +++ b/perf/impl/go/v0.27/README.md @@ -0,0 +1,12 @@ +1. Build with `docker build .` + +Run with: + +``` +docker run --rm -it +``` + +Run server with +``` +docker run --rm -it --entrypoint /app/server +``` diff --git a/perf/impl/go/v0.27/go.mod b/perf/impl/go/v0.27/go.mod new file mode 100644 index 000000000..1ddbb04de --- /dev/null +++ b/perf/impl/go/v0.27/go.mod @@ -0,0 +1,98 @@ +module github.com/libp2p/test-plans/perf/go/v0.27/v2 + +go 1.19 + +require ( + github.com/ipfs/go-log/v2 v2.5.1 + github.com/libp2p/go-buffer-pool v0.1.0 + github.com/libp2p/go-libp2p v0.27.0 + github.com/multiformats/go-multiaddr v0.9.0 + github.com/stretchr/testify v1.8.2 +) + +require ( + github.com/benbjohnson/clock v1.3.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/containerd/cgroups v1.1.0 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/elastic/gosigar v0.14.2 // indirect + github.com/flynn/noise v1.0.0 // indirect + github.com/francoispqt/gojay v1.2.13 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gopacket v1.1.19 // indirect + github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b // indirect + github.com/huin/goupnp v1.1.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/klauspost/compress v1.16.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/koron/go-ssdp v0.0.4 // indirect + github.com/libp2p/go-cidranger v1.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/libp2p/go-nat v0.1.0 // indirect + github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/libp2p/go-reuseport v0.2.0 // indirect + github.com/libp2p/go-yamux/v4 v4.0.0 // indirect + github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/miekg/dns v1.1.53 // indirect + github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect + github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect + github.com/minio/sha256-simd v1.0.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect + github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.8.1 // indirect + github.com/multiformats/go-multihash v0.2.1 // indirect + github.com/multiformats/go-multistream v0.4.1 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/onsi/ginkgo/v2 v2.9.2 // indirect + github.com/opencontainers/runtime-spec v1.0.2 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect + github.com/quic-go/qpack v0.4.0 // indirect + github.com/quic-go/qtls-go1-19 v0.3.2 // indirect + github.com/quic-go/qtls-go1-20 v0.2.2 // indirect + github.com/quic-go/quic-go v0.33.0 // indirect + github.com/quic-go/webtransport-go v0.5.2 // indirect + github.com/raulk/go-watchdog v1.3.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/dig v1.16.1 // indirect + go.uber.org/fx v1.19.2 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/tools v0.7.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/blake3 v1.1.7 // indirect + nhooyr.io/websocket v1.8.7 // indirect +) diff --git a/perf/impl/go/v0.27/go.sum b/perf/impl/go/v0.27/go.sum new file mode 100644 index 000000000..6709fc64f --- /dev/null +++ b/perf/impl/go/v0.27/go.sum @@ -0,0 +1,506 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= +github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b h1:Qcx5LM0fSiks9uCyFZwDBUasd3lxd1RM0GYpL+Li5o4= +github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goupnp v1.1.0 h1:gEe0Dp/lZmPZiDFzJJaOfUpOvv2MKUkoBX8lDrn9vKU= +github.com/huin/goupnp v1.1.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU= +github.com/klauspost/compress v1.16.4/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.27.0 h1:QbhrTuB0ln9j9op6yAOR0o+cx/qa9NyNZ5ov0Tql8ZU= +github.com/libp2p/go-libp2p v0.27.0/go.mod h1:FAvvfQa/YOShUYdiSS03IR9OXzkcJXwcNA2FUCh9ImE= +github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= +github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg= +github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM= +github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.2.0 h1:18PRvIMlpY6ZK85nIAicSBuXXvrYoSw3dsBAR7zc560= +github.com/libp2p/go-reuseport v0.2.0/go.mod h1:bvVho6eLMm6Bz5hmU0LYN3ixd3nPPvtIlaURZZgOY4k= +github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-yamux/v4 v4.0.0 h1:+Y80dV2Yx/kv7Y7JKu0LECyVdMXm1VUoko+VQ9rBfZQ= +github.com/libp2p/go-yamux/v4 v4.0.0/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.53 h1:ZBkuHr5dxHtB1caEOlZTLPo7D3L3TWckgUUs/RHfDxw= +github.com/miekg/dns v1.1.53/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.9.0 h1:3h4V1LHIk5w4hJHekMKWALPXErDfz/sggzwC/NcqbDQ= +github.com/multiformats/go-multiaddr v0.9.0/go.mod h1:mI67Lb1EeTOYb8GQfL/7wpIZwc46ElrvzhYnoJOmTT0= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.8.1 h1:ycepHwavHafh3grIbR1jIXnKCsFm0fqsfEOsJ8NtKE8= +github.com/multiformats/go-multicodec v0.8.1/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= +github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multistream v0.4.1 h1:rFy0Iiyn3YT0asivDUIR05leAdwZq3de4741sbiSdfo= +github.com/multiformats/go-multistream v0.4.1/go.mod h1:Mz5eykRVAjJWckE2U78c6xqdtyNUEhKSM0Lwar2p77Q= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U= +github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= +github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= +github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/quic-go v0.33.0 h1:ItNoTDN/Fm/zBlq769lLJc8ECe9gYaW40veHCCco7y0= +github.com/quic-go/quic-go v0.33.0/go.mod h1:YMuhaAV9/jIu0XclDXwZPAsP/2Kgr5yMYhe9oxhhOFA= +github.com/quic-go/webtransport-go v0.5.2 h1:GA6Bl6oZY+g/flt00Pnu0XtivSD8vukOu3lYhJjnGEk= +github.com/quic-go/webtransport-go v0.5.2/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.16.1 h1:+alNIBsl0qfY0j6epRubp/9obgtrObRAc5aD+6jbWY8= +go.uber.org/dig v1.16.1/go.mod h1:557JTAUZT5bUK0SvCwikmLPPtdQhfvLYtO5tJgQSbnk= +go.uber.org/fx v1.19.2 h1:SyFgYQFr1Wl0AYstE8vyYIzP4bFz2URrScjwC4cwUvY= +go.uber.org/fx v1.19.2/go.mod h1:43G1VcqSzbIv77y00p1DRAsyZS8WdzuYdhZXmEUkMyQ= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= +lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go new file mode 100644 index 000000000..6b49ff110 --- /dev/null +++ b/perf/impl/go/v0.27/main.go @@ -0,0 +1,80 @@ +package main + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "time" + + "github.com/libp2p/go-libp2p" + "github.com/libp2p/go-libp2p/core/peer" + "github.com/multiformats/go-multiaddr" +) + +func main() { + runServer := flag.Bool("run-server", false, "Should run as server") + // --server-address + serverAddr := flag.String("server-address", "", "Server address") + // --upload-bytes + uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") + // --download-bytes + downloadBytes := flag.Int("download-bytes", 0, "Download bytes") + // --n-times + nTimes := flag.Int("n-times", 0, "N times") + flag.Parse() + fmt.Println("Hello, playground", *serverAddr, uploadBytes, downloadBytes, nTimes) + + // var opts []libp2p.Option + // if *runServer != "" { + // opts = append(opts, libp2p.ListenAddrStrings(*runServer)) + // } + + h, err := libp2p.New() + if err != nil { + panic(err) + } + + perf := NewPerfService(h) + if *runServer { + for _, a := range h.Addrs() { + fmt.Println(a.Encapsulate(multiaddr.StringCast("/p2p/" + h.ID().String()))) + } + + select {} // run forever, exit on interrupt + } + + serverInfo, err := peer.AddrInfoFromString(*serverAddr) + if err != nil { + panic(err) + } + + err = h.Connect(context.Background(), *serverInfo) + if err != nil { + panic(err) + } + + times := make([]time.Duration, 0, *nTimes) + + for i := 0; i < *nTimes; i++ { + start := time.Now() + err := perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) + if err != nil { + panic(err) + } + times = append(times, time.Since(start)) + } + + // float32 because json + timesMs := make([]float32, 0, len(times)) + for _, t := range times { + timesMs = append(timesMs, float32(t.Nanoseconds())/1_000_000) + } + + jsonB, err := json.Marshal(timesMs) + if err != nil { + panic(err) + } + + fmt.Println(string(jsonB)) +} diff --git a/perf/impl/go/v0.27/perf.go b/perf/impl/go/v0.27/perf.go new file mode 100644 index 000000000..691f983a4 --- /dev/null +++ b/perf/impl/go/v0.27/perf.go @@ -0,0 +1,128 @@ +package main + +import ( + "context" + "encoding/binary" + "fmt" + "io" + + logging "github.com/ipfs/go-log/v2" + pool "github.com/libp2p/go-buffer-pool" + "github.com/libp2p/go-libp2p/core/host" + "github.com/libp2p/go-libp2p/core/network" + "github.com/libp2p/go-libp2p/core/peer" +) + +var log = logging.Logger("perf") + +const ( + BlockSize = 64 << 10 + + ID = "/perf/1.0.0" +) + +type PerfService struct { + Host host.Host +} + +func NewPerfService(h host.Host) *PerfService { + ps := &PerfService{h} + h.SetStreamHandler(ID, ps.PerfHandler) + return ps +} + +func (p *PerfService) PerfHandler(s network.Stream) { + buf := pool.Get(BlockSize) + defer pool.Put(buf) + + u64Buf := make([]byte, 8) + _, err := io.ReadFull(s, u64Buf) + if err != nil { + log.Errorw("err", err) + s.Reset() + return + } + + bytesToSend := binary.BigEndian.Uint64(u64Buf) + + _, err = p.drainStream(context.Background(), s, buf) + if err != nil { + log.Errorw("err", err) + s.Reset() + return + } + + err = p.sendBytes(context.Background(), s, bytesToSend, buf) + if err != nil { + log.Errorw("err", err) + s.Reset() + return + } + +} + +func (ps *PerfService) sendBytes(ctx context.Context, s network.Stream, bytesToSend uint64, buf []byte) error { + for bytesToSend > 0 { + toSend := buf + if bytesToSend < BlockSize { + toSend = buf[:bytesToSend] + } + + n, err := s.Write(toSend) + if err != nil { + return nil + } + bytesToSend -= uint64(n) + } + s.CloseWrite() + + return nil +} + +func (ps *PerfService) drainStream(ctx context.Context, s network.Stream, buf []byte) (uint64, error) { + var recvd uint64 + for { + n, err := s.Read(buf) + recvd += uint64(n) + if err == io.EOF { + return recvd, nil + } else if err != nil { + s.Reset() + return recvd, err + } + } +} + +func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) error { + s, err := ps.Host.NewStream(ctx, p, ID) + if err != nil { + return err + } + + buf := pool.Get(BlockSize) + defer pool.Put(buf) + + sizeBuf := make([]byte, 8) + binary.BigEndian.PutUint64(sizeBuf, bytesToRecv) + + _, err = s.Write(sizeBuf) + if err != nil { + + return err + } + + err = ps.sendBytes(ctx, s, bytesToSend, buf) + if err != nil { + return err + } + + recvd, err := ps.drainStream(ctx, s, buf) + if err != nil { + return err + } + + if recvd != bytesToRecv { + return fmt.Errorf("expected to recv %d bytes, got %d", bytesToRecv, recvd) + } + return err +} diff --git a/perf/impl/go/v0.27/server b/perf/impl/go/v0.27/server new file mode 100755 index 000000000..59685e5cb --- /dev/null +++ b/perf/impl/go/v0.27/server @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +/app/perf --run-server From 16dfcc1090753ea26bbba53eca6ecd1f7e00ec9d Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 11:56:58 +0200 Subject: [PATCH 018/101] Run client in host network --- perf/runner/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index d547b3aaf..d12e48823 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -115,7 +115,7 @@ function runBenchmark(args: ArgsRunBenchmark): Latencies { const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` // TODO Take docker hub repository from version.ts - const dockerCMD = `docker run --rm --entrypoint perf-client mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` + const dockerCMD = `docker run --rm --network host --entrypoint perf-client mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; try { From 32699db324fa0619b483003737f08e603311ffd6 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 16:56:34 +0200 Subject: [PATCH 019/101] Add Golang docker image to runner --- perf/runner/src/index.ts | 2 +- perf/runner/src/versions.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index d12e48823..c0ffe9cd9 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -115,7 +115,7 @@ function runBenchmark(args: ArgsRunBenchmark): Latencies { const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` // TODO Take docker hub repository from version.ts - const dockerCMD = `docker run --rm --network host --entrypoint perf-client mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` + const dockerCMD = `docker run --rm --network host mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; try { diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 54f1e40e6..d927ee6b8 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -7,7 +7,12 @@ export type Version = { export const versions: Array = [ { id: "rust-master", - containerImageID: "8b57bf547f7aa65fec9e6baf764cc1f8be195ef53343c230271116be353889e6", + containerImageID: "f75472c773218b4da229e8b83c498d67de70cf2c6d145a969ca31aea14b78962", + transportStacks: ["tcp", "quic-v1"] + }, + { + id: "go-master", + containerImageID: "9eaea3b70d5895d92219df971008eb1e55b8de769d1195cc03e2d74b314d6eac", transportStacks: ["tcp", "quic-v1"] }, ] From 2f3c425fd344b075365baadf2ccfcac9774371ce Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 19:24:51 +0200 Subject: [PATCH 020/101] fix(go): only print final result to stdout --- perf/impl/go/v0.27/main.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go index 6b49ff110..fb591b98d 100644 --- a/perf/impl/go/v0.27/main.go +++ b/perf/impl/go/v0.27/main.go @@ -5,6 +5,7 @@ import ( "encoding/json" "flag" "fmt" + "os" "time" "github.com/libp2p/go-libp2p" @@ -23,7 +24,7 @@ func main() { // --n-times nTimes := flag.Int("n-times", 0, "N times") flag.Parse() - fmt.Println("Hello, playground", *serverAddr, uploadBytes, downloadBytes, nTimes) + fmt.Fprintf(os.Stderr, "Hello, playground", *serverAddr, uploadBytes, downloadBytes, nTimes) // var opts []libp2p.Option // if *runServer != "" { From c9f12ec3c44a3248810b6eae362ce412cb5d3c76 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 19:25:16 +0200 Subject: [PATCH 021/101] fix(go): use si units (i.e. here s) --- perf/impl/go/v0.27/main.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go index fb591b98d..7ca995361 100644 --- a/perf/impl/go/v0.27/main.go +++ b/perf/impl/go/v0.27/main.go @@ -67,15 +67,23 @@ func main() { } // float32 because json - timesMs := make([]float32, 0, len(times)) + timesS := make([]float32, 0, len(times)) for _, t := range times { - timesMs = append(timesMs, float32(t.Nanoseconds())/1_000_000) + timesS = append(timesS, float32(t.Nanoseconds())/1_000_000_000) } - jsonB, err := json.Marshal(timesMs) + latencies := Latencies { + Latencies: timesS, + } + + jsonB, err := json.Marshal(latencies) if err != nil { panic(err) } fmt.Println(string(jsonB)) } + +type Latencies struct { + Latencies []float32 `json:"latencies"` +} From 99b2f4634e4ce12be6361242692f0bd61cbdf1ba Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 19:25:36 +0200 Subject: [PATCH 022/101] Provide server peer id to client --- perf/runner/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index c0ffe9cd9..55cab411b 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -112,6 +112,7 @@ function runBenchmark(args: ArgsRunBenchmark): Latencies { process.exit(1); } + serverAddress = serverAddress + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN"; const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` // TODO Take docker hub repository from version.ts From 43500ef3d2852524c5f3925f0beb8078300630ce Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 19:26:02 +0200 Subject: [PATCH 023/101] Use entrypoint convention and provide secret key seed --- perf/terraform/user-data.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/terraform/user-data.sh b/perf/terraform/user-data.sh index 52219a6e6..e56d4e6fe 100644 --- a/perf/terraform/user-data.sh +++ b/perf/terraform/user-data.sh @@ -6,4 +6,4 @@ sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user -docker run -d --restart always --network host mxinden/libp2p-perf +docker run -d --restart always --network host --entrypoint /app/server mxinden/libp2p-perf@sha256:f567b27347a8d222e88f3c0b160e0547023e88aa700dc5e4255d9fcdf3d08eb1 --secret-key-seed 0 From e0fa1f403ef824227f0d665e72e48b4e222a10c4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 12 Apr 2023 19:26:27 +0200 Subject: [PATCH 024/101] Update to latest container images --- perf/runner/src/versions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index d927ee6b8..8f5c793ec 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -7,12 +7,12 @@ export type Version = { export const versions: Array = [ { id: "rust-master", - containerImageID: "f75472c773218b4da229e8b83c498d67de70cf2c6d145a969ca31aea14b78962", + containerImageID: "f567b27347a8d222e88f3c0b160e0547023e88aa700dc5e4255d9fcdf3d08eb1", transportStacks: ["tcp", "quic-v1"] }, { id: "go-master", - containerImageID: "9eaea3b70d5895d92219df971008eb1e55b8de769d1195cc03e2d74b314d6eac", + containerImageID: "2406b0778d7655b7eac7c0b448b1bf008c2411b7f128e899d894dcc12abb98fd", transportStacks: ["tcp", "quic-v1"] }, ] From 4f207d640509c9b0eb6b3e65bdd02b40d7dc546b Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Wed, 12 Apr 2023 16:36:25 -0700 Subject: [PATCH 025/101] Remove stray println --- perf/impl/go/v0.27/main.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go index 7ca995361..e3229f99d 100644 --- a/perf/impl/go/v0.27/main.go +++ b/perf/impl/go/v0.27/main.go @@ -5,7 +5,6 @@ import ( "encoding/json" "flag" "fmt" - "os" "time" "github.com/libp2p/go-libp2p" @@ -24,7 +23,6 @@ func main() { // --n-times nTimes := flag.Int("n-times", 0, "N times") flag.Parse() - fmt.Fprintf(os.Stderr, "Hello, playground", *serverAddr, uploadBytes, downloadBytes, nTimes) // var opts []libp2p.Option // if *runServer != "" { @@ -72,7 +70,7 @@ func main() { timesS = append(timesS, float32(t.Nanoseconds())/1_000_000_000) } - latencies := Latencies { + latencies := Latencies{ Latencies: timesS, } From 8229e2bdbc73f0fa0415407d866f1b130c25d098 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 13 Apr 2023 17:57:11 +0200 Subject: [PATCH 026/101] Seed Go secret key from command line and fix server invocation --- perf/impl/go/v0.27/main.go | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go index e3229f99d..cdd41b838 100644 --- a/perf/impl/go/v0.27/main.go +++ b/perf/impl/go/v0.27/main.go @@ -9,6 +9,7 @@ import ( "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p/core/peer" + "github.com/libp2p/go-libp2p/core/crypto" "github.com/multiformats/go-multiaddr" ) @@ -16,6 +17,8 @@ func main() { runServer := flag.Bool("run-server", false, "Should run as server") // --server-address serverAddr := flag.String("server-address", "", "Server address") + // --secret-key-seed + secretKeySeed := flag.Uint64("secret-key-seed", 0, "Server secret key seed") // --upload-bytes uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") // --download-bytes @@ -24,12 +27,20 @@ func main() { nTimes := flag.Int("n-times", 0, "N times") flag.Parse() - // var opts []libp2p.Option - // if *runServer != "" { - // opts = append(opts, libp2p.ListenAddrStrings(*runServer)) - // } - h, err := libp2p.New() + var opts []libp2p.Option + if *runServer { + opts = append(opts, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/udp/4001/quic-v1")) + + // TODO: Fake identity. For testing only. + priv, _, err := crypto.GenerateEd25519Key(&simpleReader{seed:uint8(*secretKeySeed)}) + if err != nil { + panic(err) + } + opts = append(opts, libp2p.Identity(priv)) + } + + h, err := libp2p.New(opts...) if err != nil { panic(err) } @@ -85,3 +96,14 @@ func main() { type Latencies struct { Latencies []float32 `json:"latencies"` } + +type simpleReader struct { + seed uint8 +} + +func (r *simpleReader) Read(p []byte) (n int, err error) { + for i := range p { + p[i] = r.seed + } + return len(p), nil +} From 90382246ee440969ef55b8e142f023362f25f6e1 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 13 Apr 2023 17:57:54 +0200 Subject: [PATCH 027/101] Start server image based on client image --- perf/runner/src/index.ts | 18 ++++++++++++++++-- perf/terraform/user-data.sh | 2 -- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 55cab411b..0fc474e80 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -59,6 +59,12 @@ interface ArgsRunBenchmarkAcrossVersions { function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { const results: Result[] = []; for (const version of versions) { + console.error(`Starting ${version.id} server.`); + const serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run -d --restart always --network host --entrypoint /app/server mxinden/libp2p-perf@sha256:${version.containerImageID} --secret-key-seed 0'`; + console.error(serverCMD); + const serverSTDOUT = execCommand(serverCMD); + console.error(serverSTDOUT); + for (const transportStack of version.transportStacks) { const latencies = runBenchmark({ clientPublicIP: args.clientPublicIP, @@ -98,6 +104,8 @@ interface Latencies { function runBenchmark(args: ArgsRunBenchmark): Latencies { + console.error(`Starting ${args.transportStack} client.`); + let serverAddress: string; switch (args.transportStack) { @@ -119,13 +127,19 @@ function runBenchmark(args: ArgsRunBenchmark): Latencies { const dockerCMD = `docker run --rm --network host mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; + const stdout = execCommand(cmd); + + const latencies: Latencies = JSON.parse(stdout.toString()); + return latencies; +} + +function execCommand(cmd: string): string { try { const stdout = execSync(cmd, { encoding: 'utf8', stdio: [process.stdin, 'pipe', process.stderr], }); - const latencies: Latencies = JSON.parse(stdout.toString()); - return latencies; + return stdout; } catch (error) { console.error((error as Error).message); process.exit(1); diff --git a/perf/terraform/user-data.sh b/perf/terraform/user-data.sh index e56d4e6fe..cc58fe1ab 100644 --- a/perf/terraform/user-data.sh +++ b/perf/terraform/user-data.sh @@ -5,5 +5,3 @@ sudo yum install docker -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user - -docker run -d --restart always --network host --entrypoint /app/server mxinden/libp2p-perf@sha256:f567b27347a8d222e88f3c0b160e0547023e88aa700dc5e4255d9fcdf3d08eb1 --secret-key-seed 0 From 7ab94c85d850f9d681157ecdbeafd2c68c1880bd Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 13 Apr 2023 17:58:12 +0200 Subject: [PATCH 028/101] Set new golang image --- perf/runner/src/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 8f5c793ec..275b1eb8f 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -12,7 +12,7 @@ export const versions: Array = [ }, { id: "go-master", - containerImageID: "2406b0778d7655b7eac7c0b448b1bf008c2411b7f128e899d894dcc12abb98fd", + containerImageID: "0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", transportStacks: ["tcp", "quic-v1"] }, ] From 24333385107a7bc7b6fb1df833bb5be8e6fbf7c8 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 13 Apr 2023 18:07:02 +0200 Subject: [PATCH 029/101] Bump UDP receive buffer --- perf/terraform/user-data.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/perf/terraform/user-data.sh b/perf/terraform/user-data.sh index cc58fe1ab..e2286e9ae 100644 --- a/perf/terraform/user-data.sh +++ b/perf/terraform/user-data.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Bump UDP receive buffer size. See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size. +sudo sysctl -w net.core.rmem_max=2500000 + sudo yum update -y sudo yum install docker -y sudo systemctl enable docker From 2480f04d07c3f7f531caae5aaf303fe15f2953f6 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 13 Apr 2023 20:06:13 +0200 Subject: [PATCH 030/101] Update to latest rust image using tokio --- perf/runner/src/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 275b1eb8f..ef29045da 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -7,7 +7,7 @@ export type Version = { export const versions: Array = [ { id: "rust-master", - containerImageID: "f567b27347a8d222e88f3c0b160e0547023e88aa700dc5e4255d9fcdf3d08eb1", + containerImageID: "90bd7031f56ef2311659ea79b6e980080063b83ddc6644e7ebd5dbea869a1119", transportStacks: ["tcp", "quic-v1"] }, { From e5d6b5584c80d93128f31cf451238a10a48564f2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 05:29:26 +0000 Subject: [PATCH 031/101] chore: update the link to the interop dashboard [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 57489027c..41690766f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Interoperabilty and end to end test-plans for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4380246659/attempts/1#summary-11897369015) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4380246659/attempts/2#summary-12118895554) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) ![Go version](https://img.shields.io/badge/go-%3E%3D1.14.0-blue.svg?style=flat-square) From ab88ee699ac370c50851d3f3e63b613f60f2b4dd Mon Sep 17 00:00:00 2001 From: Max Inden Date: Tue, 4 Apr 2023 13:10:30 +0200 Subject: [PATCH 032/101] fix(versions): disable webrtc tests (#160) This commit disables the WebRTC tests for rust-libp2p v0.50.0 and v0.51.0 and chromium-js v0.41.0 and v0.42.0. Neither of these support the new `/webrtc-direct` (see https://github.com/multiformats/multiaddr/pull/150/#issuecomment-1468791586 for context on rename). The missing support is blocking https://github.com/libp2p/rust-libp2p/pull/3688 namely to upgrade to using `/webrtc-direct`. (Note that this is only blocking CI. Users can already use `/webrtc-direct` with the latest released rust-libp2p.) We will backport `/webrtc-direct` support to the rust-libp2p `v0.51.0` interop binary and then re-enable it here. Instead of disabling the versions with missing support for `/webrtc-direct` we could as well patch our interoperability test logic. For the sake of simplicity, I am proposing simply disabling the versions for now. --- multidim-interop/versions.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/multidim-interop/versions.ts b/multidim-interop/versions.ts index 1f1c4bae1..8987367ca 100644 --- a/multidim-interop/versions.ts +++ b/multidim-interop/versions.ts @@ -40,14 +40,14 @@ export const versions: Array = [ { id: "rust-v0.50.0", containerImageID: rustv050.imageID, - transports: ["ws", "tcp", "quic-v1", "webrtc"], + transports: ["ws", "tcp", "quic-v1"], secureChannels: ["tls", "noise"], muxers: ["mplex", "yamux"], }, { id: "rust-v0.51.0", containerImageID: rustv051.imageID, - transports: ["ws", "tcp", "quic-v1", "webrtc"], + transports: ["ws", "tcp", "quic-v1"], secureChannels: ["tls", "noise"], muxers: ["mplex", "yamux"], }, @@ -68,14 +68,14 @@ export const versions: Array = [ { id: "chromium-js-v0.41.0", containerImageID: chromiumJsV041.imageID, - transports: [{ name: "webtransport", onlyDial: true }, { name: "webrtc", onlyDial: true }], + transports: [{ name: "webtransport", onlyDial: true }], secureChannels: [], muxers: [] }, { id: "chromium-js-v0.42.0", containerImageID: chromiumJsV042.imageID, - transports: [{ name: "webtransport", onlyDial: true }, { name: "webrtc", onlyDial: true }, { name: "wss", onlyDial: true }], + transports: [{ name: "webtransport", onlyDial: true }, { name: "wss", onlyDial: true }], secureChannels: ["noise"], muxers: ["mplex", "yamux"] }, From f29026cd00dc5678818919f41bbc23ec022a3578 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 11:59:58 +0000 Subject: [PATCH 033/101] chore: update the link to the interop dashboard [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 41690766f..9c0b7ed06 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Interoperabilty and end to end test-plans for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4380246659/attempts/2#summary-12118895554) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4607052629/attempts/1#summary-12505292780) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) ![Go version](https://img.shields.io/badge/go-%3E%3D1.14.0-blue.svg?style=flat-square) From 87be6b72fbb4263d554eb722342b45b29fdd5716 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Sat, 8 Apr 2023 10:53:38 -0700 Subject: [PATCH 034/101] Fix: Correctly abort process on timeout (#162) * Pass in abort controller signal * Rearrange --- multidim-interop/src/compose-runner.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/multidim-interop/src/compose-runner.ts b/multidim-interop/src/compose-runner.ts index 2ad9982d0..b4e9e2866 100644 --- a/multidim-interop/src/compose-runner.ts +++ b/multidim-interop/src/compose-runner.ts @@ -8,6 +8,7 @@ import { ComposeSpecification, PropertiesServices } from "../compose-spec/compos import { stringify } from 'yaml'; const exec = util.promisify(execStd); +const timeoutSecs = 3 * 60 export type RunOpts = { up: { @@ -43,14 +44,10 @@ export async function run(namespace: string, compose: ComposeSpecification, opts } try { - const timeoutSecs = 3 * 60 - let timeoutId - const { stdout, stderr } = - (await Promise.race([ - exec(`docker compose -f ${path.join(dir, "compose.yaml")} up ${upFlags.join(" ")}`), - // Timeout - uses any type because this will only reject the promise. - new Promise((resolve, reject) => { timeoutId = setTimeout(() => reject("Timeout"), 1000 * timeoutSecs) }) - ])) + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 1000 * timeoutSecs) + const { signal } = controller; + const { stdout, stderr } = await exec(`docker compose -f ${path.join(dir, "compose.yaml")} up ${upFlags.join(" ")}`, { signal }) clearTimeout(timeoutId) const testResults = stdout.match(/.*dialer.*({.*)/) if (testResults === null || testResults.length < 2) { From aa227bffa67a7d8d9f749d91620e9b5e9940e723 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 18:28:24 +0000 Subject: [PATCH 035/101] chore: update the link to the interop dashboard [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c0b7ed06..b2c8748db 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Interoperabilty and end to end test-plans for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4607052629/attempts/1#summary-12505292780) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4646394736/attempts/1#summary-12609764204) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) ![Go version](https://img.shields.io/badge/go-%3E%3D1.14.0-blue.svg?style=flat-square) From 61ad33a9585de29f840651f34e2a0eb75a6e3a00 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Sat, 8 Apr 2023 12:31:25 -0700 Subject: [PATCH 036/101] Sanitize name before saving to compose file (#164) --- multidim-interop/src/compose-runner.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/multidim-interop/src/compose-runner.ts b/multidim-interop/src/compose-runner.ts index b4e9e2866..ee32ea120 100644 --- a/multidim-interop/src/compose-runner.ts +++ b/multidim-interop/src/compose-runner.ts @@ -33,7 +33,9 @@ export async function run(namespace: string, compose: ComposeSpecification, opts await fs.mkdir(dir, { recursive: true }) // Create compose.yaml file - await fs.writeFile(path.join(dir, "compose.yaml"), stringify(compose)) + // Some docker compose environments don't like the name field to have special characters + const sanitizedComposeName = compose?.name.replace(/[^a-zA-Z0-9_-]/g, "_") + await fs.writeFile(path.join(dir, "compose.yaml"), stringify({...compose, name: sanitizedComposeName})) const upFlags: Array = [] if (opts.up.exitCodeFrom) { @@ -66,4 +68,4 @@ export async function run(namespace: string, compose: ComposeSpecification, opts } await fs.rm(dir, { recursive: true, force: true }) } -} \ No newline at end of file +} From 31349d3080d0bfed27825c28165d68e14f27fc23 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 20:03:45 +0000 Subject: [PATCH 037/101] chore: update the link to the interop dashboard [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b2c8748db..f0d5a89b7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Interoperabilty and end to end test-plans for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4646394736/attempts/1#summary-12609764204) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4646774898/attempts/1#summary-12610482600) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) ![Go version](https://img.shields.io/badge/go-%3E%3D1.14.0-blue.svg?style=flat-square) From e7728b6e61015a4447ee26477f4e497057baa9f6 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 11 Apr 2023 11:29:32 -0700 Subject: [PATCH 038/101] Cache images slightly differently (#165) --- .../actions/run-interop-ping-test/action.yml | 16 +- .gitignore | 5 +- multidim-interop/Makefile | 8 +- multidim-interop/README.md | 24 ++- multidim-interop/helpers/cache.ts | 148 ++++++++++++++++++ multidim-interop/{ => impl}/go/.gitignore | 0 .../{ => impl}/go/v0.22/Dockerfile | 0 multidim-interop/{ => impl}/go/v0.22/Makefile | 4 +- multidim-interop/{ => impl}/go/v0.22/go.mod | 0 multidim-interop/{ => impl}/go/v0.22/go.sum | 0 multidim-interop/{ => impl}/go/v0.22/main.go | 0 .../{ => impl}/go/v0.23/Dockerfile | 0 multidim-interop/{ => impl}/go/v0.23/Makefile | 4 +- multidim-interop/{ => impl}/go/v0.23/go.mod | 0 multidim-interop/{ => impl}/go/v0.23/go.sum | 0 multidim-interop/{ => impl}/go/v0.23/main.go | 0 .../{ => impl}/go/v0.24/Dockerfile | 0 multidim-interop/{ => impl}/go/v0.24/Makefile | 4 +- multidim-interop/{ => impl}/go/v0.24/go.mod | 0 multidim-interop/{ => impl}/go/v0.24/go.sum | 0 multidim-interop/{ => impl}/go/v0.24/main.go | 0 multidim-interop/{ => impl}/go/v0.25/Makefile | 4 +- multidim-interop/{ => impl}/go/v0.26/Makefile | 4 +- multidim-interop/impl/js/.gitignore | 1 + .../{ => impl}/js/v0.41/.aegir.js | 0 .../{ => impl}/js/v0.41/.dockerignore | 0 .../{ => impl}/js/v0.41/.gitignore | 0 .../impl/js/v0.41/ChromiumDockerfile | 6 + .../js/v0.41/Dockerfile} | 9 +- multidim-interop/impl/js/v0.41/Makefile | 23 +++ .../{ => impl}/js/v0.41/package-lock.json | 0 .../{ => impl}/js/v0.41/package.json | 0 .../{ => impl}/js/v0.41/src/index.ts | 0 .../{ => impl}/js/v0.41/test/ping.spec.ts | 0 .../{ => impl}/js/v0.41/tsconfig.json | 0 .../{ => impl}/js/v0.42/.aegir.js | 0 .../{ => impl}/js/v0.42/.dockerignore | 0 .../{ => impl}/js/v0.42/.gitignore | 0 .../impl/js/v0.42/ChromiumDockerfile | 6 + .../js/v0.42/Dockerfile} | 9 +- multidim-interop/impl/js/v0.42/Makefile | 23 +++ .../{ => impl}/js/v0.42/package-lock.json | 0 .../{ => impl}/js/v0.42/package.json | 0 .../{ => impl}/js/v0.42/src/index.ts | 0 .../{ => impl}/js/v0.42/test/ping.spec.ts | 0 .../{ => impl}/js/v0.42/tsconfig.json | 0 multidim-interop/{ => impl}/nim/mainv1.nim | 0 .../{ => impl}/nim/v1.0/.gitignore | 0 .../{ => impl}/nim/v1.0/Dockerfile | 0 multidim-interop/{ => impl}/nim/v1.0/Makefile | 2 +- multidim-interop/{ => impl}/rust/.gitignore | 0 .../{ => impl}/rust/v0.48/Makefile | 2 +- .../{ => impl}/rust/v0.49/Makefile | 2 +- .../{ => impl}/rust/v0.50/Makefile | 2 +- .../{ => impl}/rust/v0.51/Makefile | 2 +- multidim-interop/js/v0.41/Dockerfile | 17 -- multidim-interop/js/v0.41/Makefile | 19 --- multidim-interop/js/v0.42/Dockerfile | 17 -- multidim-interop/js/v0.42/Makefile | 19 --- multidim-interop/package-lock.json | 14 ++ multidim-interop/package.json | 4 +- multidim-interop/versions.ts | 26 +-- 62 files changed, 304 insertions(+), 120 deletions(-) create mode 100755 multidim-interop/helpers/cache.ts rename multidim-interop/{ => impl}/go/.gitignore (100%) rename multidim-interop/{ => impl}/go/v0.22/Dockerfile (100%) rename multidim-interop/{ => impl}/go/v0.22/Makefile (72%) rename multidim-interop/{ => impl}/go/v0.22/go.mod (100%) rename multidim-interop/{ => impl}/go/v0.22/go.sum (100%) rename multidim-interop/{ => impl}/go/v0.22/main.go (100%) rename multidim-interop/{ => impl}/go/v0.23/Dockerfile (100%) rename multidim-interop/{ => impl}/go/v0.23/Makefile (72%) rename multidim-interop/{ => impl}/go/v0.23/go.mod (100%) rename multidim-interop/{ => impl}/go/v0.23/go.sum (100%) rename multidim-interop/{ => impl}/go/v0.23/main.go (100%) rename multidim-interop/{ => impl}/go/v0.24/Dockerfile (100%) rename multidim-interop/{ => impl}/go/v0.24/Makefile (72%) rename multidim-interop/{ => impl}/go/v0.24/go.mod (100%) rename multidim-interop/{ => impl}/go/v0.24/go.sum (100%) rename multidim-interop/{ => impl}/go/v0.24/main.go (100%) rename multidim-interop/{ => impl}/go/v0.25/Makefile (87%) rename multidim-interop/{ => impl}/go/v0.26/Makefile (87%) create mode 100644 multidim-interop/impl/js/.gitignore rename multidim-interop/{ => impl}/js/v0.41/.aegir.js (100%) rename multidim-interop/{ => impl}/js/v0.41/.dockerignore (100%) rename multidim-interop/{ => impl}/js/v0.41/.gitignore (100%) create mode 100644 multidim-interop/impl/js/v0.41/ChromiumDockerfile rename multidim-interop/{js/v0.42/ChromiumDockerfile => impl/js/v0.41/Dockerfile} (56%) create mode 100644 multidim-interop/impl/js/v0.41/Makefile rename multidim-interop/{ => impl}/js/v0.41/package-lock.json (100%) rename multidim-interop/{ => impl}/js/v0.41/package.json (100%) rename multidim-interop/{ => impl}/js/v0.41/src/index.ts (100%) rename multidim-interop/{ => impl}/js/v0.41/test/ping.spec.ts (100%) rename multidim-interop/{ => impl}/js/v0.41/tsconfig.json (100%) rename multidim-interop/{ => impl}/js/v0.42/.aegir.js (100%) rename multidim-interop/{ => impl}/js/v0.42/.dockerignore (100%) rename multidim-interop/{ => impl}/js/v0.42/.gitignore (100%) create mode 100644 multidim-interop/impl/js/v0.42/ChromiumDockerfile rename multidim-interop/{js/v0.41/ChromiumDockerfile => impl/js/v0.42/Dockerfile} (56%) create mode 100644 multidim-interop/impl/js/v0.42/Makefile rename multidim-interop/{ => impl}/js/v0.42/package-lock.json (100%) rename multidim-interop/{ => impl}/js/v0.42/package.json (100%) rename multidim-interop/{ => impl}/js/v0.42/src/index.ts (100%) rename multidim-interop/{ => impl}/js/v0.42/test/ping.spec.ts (100%) rename multidim-interop/{ => impl}/js/v0.42/tsconfig.json (100%) rename multidim-interop/{ => impl}/nim/mainv1.nim (100%) rename multidim-interop/{ => impl}/nim/v1.0/.gitignore (100%) rename multidim-interop/{ => impl}/nim/v1.0/Dockerfile (100%) rename multidim-interop/{ => impl}/nim/v1.0/Makefile (91%) rename multidim-interop/{ => impl}/rust/.gitignore (100%) rename multidim-interop/{ => impl}/rust/v0.48/Makefile (90%) rename multidim-interop/{ => impl}/rust/v0.49/Makefile (90%) rename multidim-interop/{ => impl}/rust/v0.50/Makefile (90%) rename multidim-interop/{ => impl}/rust/v0.51/Makefile (90%) delete mode 100644 multidim-interop/js/v0.41/Dockerfile delete mode 100644 multidim-interop/js/v0.41/Makefile delete mode 100644 multidim-interop/js/v0.42/Dockerfile delete mode 100644 multidim-interop/js/v0.42/Makefile diff --git a/.github/actions/run-interop-ping-test/action.yml b/.github/actions/run-interop-ping-test/action.yml index ed99658e4..005377afe 100644 --- a/.github/actions/run-interop-ping-test/action.yml +++ b/.github/actions/run-interop-ping-test/action.yml @@ -34,6 +34,12 @@ runs: echo "AWS_REGION=${{ inputs.aws-region }}" >> $GITHUB_ENV shell: bash + - name: Configure AWS credentials for S3 build cache + if: inputs.s3-access-key-id != '' && inputs.s3-secret-access-key != '' + run: | + echo "PUSH_CACHE=true" >> $GITHUB_ENV + shell: bash + - name: Configure AWS credentials for S3 build cache if: inputs.s3-access-key-id != '' && inputs.s3-secret-access-key != '' uses: aws-actions/configure-aws-credentials@v1 @@ -63,9 +69,15 @@ runs: run: npm ci shell: bash - - name: Build images + - name: Load cache and build + working-directory: ${{ steps.find-workdir.outputs.WORK_DIR }} + run: npm run cache -- load + shell: bash + + - name: Push the image cache + if: env.PUSH_CACHE == 'true' working-directory: ${{ steps.find-workdir.outputs.WORK_DIR }} - run: make + run: npm run cache -- push shell: bash - name: Run the test diff --git a/.gitignore b/.gitignore index 4d8def8e9..ff7f4dd46 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,7 @@ __pycache__/ ### NodeJS -node_modules \ No newline at end of file +node_modules + +# ignore system files +.DS_Store diff --git a/multidim-interop/Makefile b/multidim-interop/Makefile index 3e2b6d085..c0c9f6f05 100644 --- a/multidim-interop/Makefile +++ b/multidim-interop/Makefile @@ -1,7 +1,7 @@ -GO_SUBDIRS := $(wildcard go/*/.) -JS_SUBDIRS := $(wildcard js/*/.) -RUST_SUBDIRS := $(wildcard rust/*/.) -NIM_SUBDIRS := $(wildcard nim/*/.) +GO_SUBDIRS := $(wildcard impl/go/*/.) +JS_SUBDIRS := $(wildcard impl/js/*/.) +RUST_SUBDIRS := $(wildcard impl/rust/*/.) +NIM_SUBDIRS := $(wildcard impl/nim/*/.) all: $(GO_SUBDIRS) $(JS_SUBDIRS) $(RUST_SUBDIRS) $(NIM_SUBDIRS) $(JS_SUBDIRS): diff --git a/multidim-interop/README.md b/multidim-interop/README.md index 6fa5d1023..4c8c7c086 100644 --- a/multidim-interop/README.md +++ b/multidim-interop/README.md @@ -1,11 +1,16 @@ # Interoperability test This tests that different libp2p implementations can communicate with each other -on each of their supported capabilites. +on each of their supported capabilities. Each version of libp2p is defined in `versions.ts`. There the version defines its capabilities along with the id of its container image. +This repo and tests adhere to these constraints: +1. Be reproducible for a given commit. +2. Caching is an optimization. Things should be fine without it. +3. If we have a cache hit, be fast. + # Test spec The implementation is run in a container and is passed parameters via @@ -55,4 +60,19 @@ The listener should emit all diagnostic logs to `stderr`. process when the dialer finishes. 5. If the timeout is hit, exit with a non-zero error code. -On error, the listener should return a non-zero exit code. \ No newline at end of file +On error, the listener should return a non-zero exit code. + +# Caching + +The caching strategy is opinionated in an attempt to make things simpler and +faster. Here's how it works: + +1. We cache the result of image.json in each implementation folder. +2. The cache key is derived from the hashes of the files in the implementation folder. +3. When loading from cache, if we have a cache hit, we load the image into + docker and create the image.json file. We then call `make -o image.json` to + allow the implementation to build any extra things from cache (e.g. JS-libp2p + builds browser images from the same base as node). If we have a cache miss, + we simply call `make` and build from scratch. +4. When we push the cache we use the cache-key along with the docker platform + (arm64 vs x86_64). diff --git a/multidim-interop/helpers/cache.ts b/multidim-interop/helpers/cache.ts new file mode 100755 index 000000000..83cb44c7f --- /dev/null +++ b/multidim-interop/helpers/cache.ts @@ -0,0 +1,148 @@ +const AWS_BUCKET = process.env.AWS_BUCKET || 'libp2p-by-tf-aws-bootstrap'; +const scriptDir = __dirname; + +import * as crypto from 'crypto'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as child_process from 'child_process'; +import ignore, { Ignore } from 'ignore' + +const multidimInteropDir = path.join(scriptDir, '..') +const arch = child_process.execSync('docker info -f "{{.Architecture}}"').toString().trim(); + +enum Mode { + LoadCache = 1, + PushCache, +} +const modeStr = process.argv[2]; +let mode: Mode +switch (modeStr) { + case "push": + mode = Mode.PushCache + break + case "load": + mode = Mode.LoadCache + break + default: + throw new Error(`Unknown mode: ${modeStr}`) +} + +(async () => { + for (const implFamily of fs.readdirSync(path.join(multidimInteropDir, 'impl'))) { + const ig = ignore() + + addGitignoreIfPresent(ig, path.join(multidimInteropDir, ".gitignore")) + addGitignoreIfPresent(ig, path.join(multidimInteropDir, "..", ".gitignore")) + + const implFamilyDir = path.join(multidimInteropDir, 'impl', implFamily) + addGitignoreIfPresent(ig, path.join(implFamilyDir, ".gitignore")) + + for (const impl of fs.readdirSync(implFamilyDir)) { + const implFolder = fs.realpathSync(path.join(implFamilyDir, impl)); + if (!fs.statSync(implFolder).isDirectory()) { + continue + } + + addGitignoreIfPresent(ig, path.join(implFolder, ".gitignore")) + + // Get all the files in the implFolder: + let files = walkDir(implFolder) + // Turn them into relative paths: + files = files.map(f => f.replace(implFolder + "/", "")) + // Ignore files that are in the .gitignore: + files = files.filter(ig.createFilter()) + // Sort them to be deterministic + files = files.sort() + + console.log(implFolder) + console.log("Files:", files) + + // Turn them back into absolute paths: + files = files.map(f => path.join(implFolder, f)) + const cacheKey = await hashFiles(files) + console.log("Cache key:", cacheKey) + + if (mode == Mode.PushCache) { + console.log("Pushing cache") + try { + const res = await fetch(`https://s3.amazonaws.com/${AWS_BUCKET}/imageCache/${cacheKey}-${arch}.tar.gz`, { method: "HEAD" }) + if (res.ok) { + console.log("Cache already exists") + } else { + // Read image id from image.json + const imageID = JSON.parse(fs.readFileSync(path.join(implFolder, 'image.json')).toString()).imageID; + console.log(`Pushing cache for ${impl}: ${imageID}`) + child_process.execSync(`docker image save ${imageID} | gzip | aws s3 cp - s3://${AWS_BUCKET}/imageCache/${cacheKey}-${arch}.tar.gz`); + } + } catch (e) { + console.log("Failed to push image cache:", e) + } + } else if (mode == Mode.LoadCache) { + if (fs.existsSync(path.join(implFolder, 'image.json'))) { + console.log("Already built") + continue + } + console.log("Loading cache") + let cacheHit = false + try { + // Check if the cache exists + const res = await fetch(`https://s3.amazonaws.com/${AWS_BUCKET}/imageCache/${cacheKey}-${arch}.tar.gz`, { method: "HEAD" }) + if (res.ok) { + const dockerLoadedMsg = child_process.execSync(`curl https://s3.amazonaws.com/${AWS_BUCKET}/imageCache/${cacheKey}-${arch}.tar.gz | docker image load`).toString(); + const loadedImageId = dockerLoadedMsg.match(/Loaded image( ID)?: (.*)/)[2]; + if (loadedImageId) { + console.log(`Cache hit for ${loadedImageId}`); + fs.writeFileSync(path.join(implFolder, 'image.json'), JSON.stringify({ imageID: loadedImageId }) + "\n"); + cacheHit = true + } + } else { + console.log("Cache not found") + } + } catch (e) { + console.log("Cache not found:", e) + } + + if (cacheHit) { + console.log("Building any remaining things from image.json") + // We're building using -o image.json. This tells make to + // not bother building image.json or anything it depends on. + child_process.execSync(`make -o image.json`, { cwd: implFolder }) + } else { + console.log("No cache, building from scratch") + child_process.execSync(`make`, { cwd: implFolder }) + } + } + } + } +})() + +function walkDir(dir: string) { + let results = []; + fs.readdirSync(dir).forEach(f => { + let dirPath = path.join(dir, f); + let isDirectory = fs.statSync(dirPath).isDirectory(); + results = isDirectory ? results.concat(walkDir(dirPath)) : results.concat(path.join(dir, f)); + }); + return results; +}; + +async function hashFiles(files: string[]): Promise { + const fileHashes = await Promise.all( + files.map(async (file) => { + const data = await fs.promises.readFile(file); + return crypto.createHash('sha256').update(data).digest('hex'); + }) + ); + return crypto.createHash('sha256').update(fileHashes.join('')).digest('hex'); +} + +function addGitignoreIfPresent(ig: Ignore, pathStr: string): boolean { + try { + if (fs.statSync(pathStr).isFile()) { + ig.add(fs.readFileSync(pathStr).toString()) + } + return true + } catch { + return false + } +} diff --git a/multidim-interop/go/.gitignore b/multidim-interop/impl/go/.gitignore similarity index 100% rename from multidim-interop/go/.gitignore rename to multidim-interop/impl/go/.gitignore diff --git a/multidim-interop/go/v0.22/Dockerfile b/multidim-interop/impl/go/v0.22/Dockerfile similarity index 100% rename from multidim-interop/go/v0.22/Dockerfile rename to multidim-interop/impl/go/v0.22/Dockerfile diff --git a/multidim-interop/go/v0.22/Makefile b/multidim-interop/impl/go/v0.22/Makefile similarity index 72% rename from multidim-interop/go/v0.22/Makefile rename to multidim-interop/impl/go/v0.22/Makefile index 9f0d96c70..ec4f38e55 100644 --- a/multidim-interop/go/v0.22/Makefile +++ b/multidim-interop/impl/go/v0.22/Makefile @@ -1,11 +1,11 @@ image_name := go-v0.22 image.json: Dockerfile main.go go.mod go.sum - IMAGE_NAME=${image_name} ../../dockerBuildWrapper.sh . + IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ .PHONY: clean clean: - rm image.json \ No newline at end of file + rm image.json diff --git a/multidim-interop/go/v0.22/go.mod b/multidim-interop/impl/go/v0.22/go.mod similarity index 100% rename from multidim-interop/go/v0.22/go.mod rename to multidim-interop/impl/go/v0.22/go.mod diff --git a/multidim-interop/go/v0.22/go.sum b/multidim-interop/impl/go/v0.22/go.sum similarity index 100% rename from multidim-interop/go/v0.22/go.sum rename to multidim-interop/impl/go/v0.22/go.sum diff --git a/multidim-interop/go/v0.22/main.go b/multidim-interop/impl/go/v0.22/main.go similarity index 100% rename from multidim-interop/go/v0.22/main.go rename to multidim-interop/impl/go/v0.22/main.go diff --git a/multidim-interop/go/v0.23/Dockerfile b/multidim-interop/impl/go/v0.23/Dockerfile similarity index 100% rename from multidim-interop/go/v0.23/Dockerfile rename to multidim-interop/impl/go/v0.23/Dockerfile diff --git a/multidim-interop/go/v0.23/Makefile b/multidim-interop/impl/go/v0.23/Makefile similarity index 72% rename from multidim-interop/go/v0.23/Makefile rename to multidim-interop/impl/go/v0.23/Makefile index fce12d5e7..5838eb37d 100644 --- a/multidim-interop/go/v0.23/Makefile +++ b/multidim-interop/impl/go/v0.23/Makefile @@ -1,11 +1,11 @@ image_name := go-v0.23 image.json: Dockerfile main.go go.mod go.sum - IMAGE_NAME=${image_name} ../../dockerBuildWrapper.sh . + IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ .PHONY: clean clean: - rm image.json \ No newline at end of file + rm image.json diff --git a/multidim-interop/go/v0.23/go.mod b/multidim-interop/impl/go/v0.23/go.mod similarity index 100% rename from multidim-interop/go/v0.23/go.mod rename to multidim-interop/impl/go/v0.23/go.mod diff --git a/multidim-interop/go/v0.23/go.sum b/multidim-interop/impl/go/v0.23/go.sum similarity index 100% rename from multidim-interop/go/v0.23/go.sum rename to multidim-interop/impl/go/v0.23/go.sum diff --git a/multidim-interop/go/v0.23/main.go b/multidim-interop/impl/go/v0.23/main.go similarity index 100% rename from multidim-interop/go/v0.23/main.go rename to multidim-interop/impl/go/v0.23/main.go diff --git a/multidim-interop/go/v0.24/Dockerfile b/multidim-interop/impl/go/v0.24/Dockerfile similarity index 100% rename from multidim-interop/go/v0.24/Dockerfile rename to multidim-interop/impl/go/v0.24/Dockerfile diff --git a/multidim-interop/go/v0.24/Makefile b/multidim-interop/impl/go/v0.24/Makefile similarity index 72% rename from multidim-interop/go/v0.24/Makefile rename to multidim-interop/impl/go/v0.24/Makefile index f9b3736e3..a69360758 100644 --- a/multidim-interop/go/v0.24/Makefile +++ b/multidim-interop/impl/go/v0.24/Makefile @@ -1,11 +1,11 @@ image_name := go-v0.24 image.json: Dockerfile main.go go.mod go.sum - IMAGE_NAME=${image_name} ../../dockerBuildWrapper.sh . + IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ .PHONY: clean clean: - rm image.json \ No newline at end of file + rm image.json diff --git a/multidim-interop/go/v0.24/go.mod b/multidim-interop/impl/go/v0.24/go.mod similarity index 100% rename from multidim-interop/go/v0.24/go.mod rename to multidim-interop/impl/go/v0.24/go.mod diff --git a/multidim-interop/go/v0.24/go.sum b/multidim-interop/impl/go/v0.24/go.sum similarity index 100% rename from multidim-interop/go/v0.24/go.sum rename to multidim-interop/impl/go/v0.24/go.sum diff --git a/multidim-interop/go/v0.24/main.go b/multidim-interop/impl/go/v0.24/main.go similarity index 100% rename from multidim-interop/go/v0.24/main.go rename to multidim-interop/impl/go/v0.24/main.go diff --git a/multidim-interop/go/v0.25/Makefile b/multidim-interop/impl/go/v0.25/Makefile similarity index 87% rename from multidim-interop/go/v0.25/Makefile rename to multidim-interop/impl/go/v0.25/Makefile index 6eb6526d1..785abaa3e 100644 --- a/multidim-interop/go/v0.25/Makefile +++ b/multidim-interop/impl/go/v0.25/Makefile @@ -4,7 +4,7 @@ commitSha := 5741b6c9bbcc1185bdf94d816dca966b37ce61ff all: image.json image.json: go-libp2p-${commitSha} - cd go-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f test-plans/PingDockerfile . + cd go-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f test-plans/PingDockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ @@ -17,4 +17,4 @@ go-libp2p-${commitSha}.zip: clean: rm image.json rm go-libp2p-*.zip - rm -rf go-libp2p-* \ No newline at end of file + rm -rf go-libp2p-* diff --git a/multidim-interop/go/v0.26/Makefile b/multidim-interop/impl/go/v0.26/Makefile similarity index 87% rename from multidim-interop/go/v0.26/Makefile rename to multidim-interop/impl/go/v0.26/Makefile index c14ed9357..1dbcf787a 100644 --- a/multidim-interop/go/v0.26/Makefile +++ b/multidim-interop/impl/go/v0.26/Makefile @@ -4,7 +4,7 @@ commitSha := 59a14cf3194d5d057c45cb1dbc7b1af3a116bc7a all: image.json image.json: go-libp2p-${commitSha} - cd go-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f test-plans/PingDockerfile . + cd go-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f test-plans/PingDockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ @@ -17,4 +17,4 @@ go-libp2p-${commitSha}.zip: clean: rm image.json rm go-libp2p-*.zip - rm -rf go-libp2p-* \ No newline at end of file + rm -rf go-libp2p-* diff --git a/multidim-interop/impl/js/.gitignore b/multidim-interop/impl/js/.gitignore new file mode 100644 index 000000000..0842bf478 --- /dev/null +++ b/multidim-interop/impl/js/.gitignore @@ -0,0 +1 @@ +*image.json diff --git a/multidim-interop/js/v0.41/.aegir.js b/multidim-interop/impl/js/v0.41/.aegir.js similarity index 100% rename from multidim-interop/js/v0.41/.aegir.js rename to multidim-interop/impl/js/v0.41/.aegir.js diff --git a/multidim-interop/js/v0.41/.dockerignore b/multidim-interop/impl/js/v0.41/.dockerignore similarity index 100% rename from multidim-interop/js/v0.41/.dockerignore rename to multidim-interop/impl/js/v0.41/.dockerignore diff --git a/multidim-interop/js/v0.41/.gitignore b/multidim-interop/impl/js/v0.41/.gitignore similarity index 100% rename from multidim-interop/js/v0.41/.gitignore rename to multidim-interop/impl/js/v0.41/.gitignore diff --git a/multidim-interop/impl/js/v0.41/ChromiumDockerfile b/multidim-interop/impl/js/v0.41/ChromiumDockerfile new file mode 100644 index 000000000..c522c85db --- /dev/null +++ b/multidim-interop/impl/js/v0.41/ChromiumDockerfile @@ -0,0 +1,6 @@ +# syntax=docker/dockerfile:1 + +ARG BASE_IMAGE +FROM $BASE_IMAGE + +ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "browser" ] diff --git a/multidim-interop/js/v0.42/ChromiumDockerfile b/multidim-interop/impl/js/v0.41/Dockerfile similarity index 56% rename from multidim-interop/js/v0.42/ChromiumDockerfile rename to multidim-interop/impl/js/v0.41/Dockerfile index de8c51bd0..4c8d3a507 100644 --- a/multidim-interop/js/v0.42/ChromiumDockerfile +++ b/multidim-interop/impl/js/v0.41/Dockerfile @@ -1,15 +1,14 @@ # syntax=docker/dockerfile:1 - +# Using playwright so that we have the same base across NodeJS + Browser tests FROM mcr.microsoft.com/playwright WORKDIR /app - -COPY package*.json . +COPY package*.json ./ RUN npm ci -# Install browsers +# Install browsers, Needed for the browser tests, but we do it here so we have the same base RUN ./node_modules/.bin/playwright install COPY tsconfig.json . @@ -19,4 +18,4 @@ COPY src ./src RUN npm run build -ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "browser" ] \ No newline at end of file +ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "node" ] diff --git a/multidim-interop/impl/js/v0.41/Makefile b/multidim-interop/impl/js/v0.41/Makefile new file mode 100644 index 000000000..06c8b902b --- /dev/null +++ b/multidim-interop/impl/js/v0.41/Makefile @@ -0,0 +1,23 @@ +image_name := js-v0.41 +TEST_SOURCES := $(wildcard test/*.ts) + +all: chromium-image.json node-image.json + +chromium-image.json: node-image.json + docker build -t chromium-${image_name} -f ChromiumDockerfile --build-arg="BASE_IMAGE=node-${image_name}" . + docker image inspect chromium-${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +node-image.json: image.json + docker image tag $$(cat image.json | jq -r '.imageID') node-${image_name} + cp image.json node-image.json + +image.json: Dockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js + IMAGE_NAME=node-${image_name} ../../../dockerBuildWrapper.sh -f Dockerfile . + docker image inspect node-${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +.PHONY: clean + +clean: + rm *image.json diff --git a/multidim-interop/js/v0.41/package-lock.json b/multidim-interop/impl/js/v0.41/package-lock.json similarity index 100% rename from multidim-interop/js/v0.41/package-lock.json rename to multidim-interop/impl/js/v0.41/package-lock.json diff --git a/multidim-interop/js/v0.41/package.json b/multidim-interop/impl/js/v0.41/package.json similarity index 100% rename from multidim-interop/js/v0.41/package.json rename to multidim-interop/impl/js/v0.41/package.json diff --git a/multidim-interop/js/v0.41/src/index.ts b/multidim-interop/impl/js/v0.41/src/index.ts similarity index 100% rename from multidim-interop/js/v0.41/src/index.ts rename to multidim-interop/impl/js/v0.41/src/index.ts diff --git a/multidim-interop/js/v0.41/test/ping.spec.ts b/multidim-interop/impl/js/v0.41/test/ping.spec.ts similarity index 100% rename from multidim-interop/js/v0.41/test/ping.spec.ts rename to multidim-interop/impl/js/v0.41/test/ping.spec.ts diff --git a/multidim-interop/js/v0.41/tsconfig.json b/multidim-interop/impl/js/v0.41/tsconfig.json similarity index 100% rename from multidim-interop/js/v0.41/tsconfig.json rename to multidim-interop/impl/js/v0.41/tsconfig.json diff --git a/multidim-interop/js/v0.42/.aegir.js b/multidim-interop/impl/js/v0.42/.aegir.js similarity index 100% rename from multidim-interop/js/v0.42/.aegir.js rename to multidim-interop/impl/js/v0.42/.aegir.js diff --git a/multidim-interop/js/v0.42/.dockerignore b/multidim-interop/impl/js/v0.42/.dockerignore similarity index 100% rename from multidim-interop/js/v0.42/.dockerignore rename to multidim-interop/impl/js/v0.42/.dockerignore diff --git a/multidim-interop/js/v0.42/.gitignore b/multidim-interop/impl/js/v0.42/.gitignore similarity index 100% rename from multidim-interop/js/v0.42/.gitignore rename to multidim-interop/impl/js/v0.42/.gitignore diff --git a/multidim-interop/impl/js/v0.42/ChromiumDockerfile b/multidim-interop/impl/js/v0.42/ChromiumDockerfile new file mode 100644 index 000000000..c522c85db --- /dev/null +++ b/multidim-interop/impl/js/v0.42/ChromiumDockerfile @@ -0,0 +1,6 @@ +# syntax=docker/dockerfile:1 + +ARG BASE_IMAGE +FROM $BASE_IMAGE + +ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "browser" ] diff --git a/multidim-interop/js/v0.41/ChromiumDockerfile b/multidim-interop/impl/js/v0.42/Dockerfile similarity index 56% rename from multidim-interop/js/v0.41/ChromiumDockerfile rename to multidim-interop/impl/js/v0.42/Dockerfile index de8c51bd0..4c8d3a507 100644 --- a/multidim-interop/js/v0.41/ChromiumDockerfile +++ b/multidim-interop/impl/js/v0.42/Dockerfile @@ -1,15 +1,14 @@ # syntax=docker/dockerfile:1 - +# Using playwright so that we have the same base across NodeJS + Browser tests FROM mcr.microsoft.com/playwright WORKDIR /app - -COPY package*.json . +COPY package*.json ./ RUN npm ci -# Install browsers +# Install browsers, Needed for the browser tests, but we do it here so we have the same base RUN ./node_modules/.bin/playwright install COPY tsconfig.json . @@ -19,4 +18,4 @@ COPY src ./src RUN npm run build -ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "browser" ] \ No newline at end of file +ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "node" ] diff --git a/multidim-interop/impl/js/v0.42/Makefile b/multidim-interop/impl/js/v0.42/Makefile new file mode 100644 index 000000000..ce3815d77 --- /dev/null +++ b/multidim-interop/impl/js/v0.42/Makefile @@ -0,0 +1,23 @@ +image_name := js-v0.42 +TEST_SOURCES := $(wildcard test/*.ts) + +all: chromium-image.json node-image.json + +chromium-image.json: node-image.json + docker build -t chromium-${image_name} -f ChromiumDockerfile --build-arg="BASE_IMAGE=node-${image_name}" . + docker image inspect chromium-${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +node-image.json: image.json + docker image tag $$(cat image.json | jq -r '.imageID') node-${image_name} + cp image.json node-image.json + +image.json: Dockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js + IMAGE_NAME=node-${image_name} ../../../dockerBuildWrapper.sh -f Dockerfile . + docker image inspect node-${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +.PHONY: clean + +clean: + rm *image.json diff --git a/multidim-interop/js/v0.42/package-lock.json b/multidim-interop/impl/js/v0.42/package-lock.json similarity index 100% rename from multidim-interop/js/v0.42/package-lock.json rename to multidim-interop/impl/js/v0.42/package-lock.json diff --git a/multidim-interop/js/v0.42/package.json b/multidim-interop/impl/js/v0.42/package.json similarity index 100% rename from multidim-interop/js/v0.42/package.json rename to multidim-interop/impl/js/v0.42/package.json diff --git a/multidim-interop/js/v0.42/src/index.ts b/multidim-interop/impl/js/v0.42/src/index.ts similarity index 100% rename from multidim-interop/js/v0.42/src/index.ts rename to multidim-interop/impl/js/v0.42/src/index.ts diff --git a/multidim-interop/js/v0.42/test/ping.spec.ts b/multidim-interop/impl/js/v0.42/test/ping.spec.ts similarity index 100% rename from multidim-interop/js/v0.42/test/ping.spec.ts rename to multidim-interop/impl/js/v0.42/test/ping.spec.ts diff --git a/multidim-interop/js/v0.42/tsconfig.json b/multidim-interop/impl/js/v0.42/tsconfig.json similarity index 100% rename from multidim-interop/js/v0.42/tsconfig.json rename to multidim-interop/impl/js/v0.42/tsconfig.json diff --git a/multidim-interop/nim/mainv1.nim b/multidim-interop/impl/nim/mainv1.nim similarity index 100% rename from multidim-interop/nim/mainv1.nim rename to multidim-interop/impl/nim/mainv1.nim diff --git a/multidim-interop/nim/v1.0/.gitignore b/multidim-interop/impl/nim/v1.0/.gitignore similarity index 100% rename from multidim-interop/nim/v1.0/.gitignore rename to multidim-interop/impl/nim/v1.0/.gitignore diff --git a/multidim-interop/nim/v1.0/Dockerfile b/multidim-interop/impl/nim/v1.0/Dockerfile similarity index 100% rename from multidim-interop/nim/v1.0/Dockerfile rename to multidim-interop/impl/nim/v1.0/Dockerfile diff --git a/multidim-interop/nim/v1.0/Makefile b/multidim-interop/impl/nim/v1.0/Makefile similarity index 91% rename from multidim-interop/nim/v1.0/Makefile rename to multidim-interop/impl/nim/v1.0/Makefile index 8a7891fa6..2e9947826 100644 --- a/multidim-interop/nim/v1.0/Makefile +++ b/multidim-interop/impl/nim/v1.0/Makefile @@ -4,7 +4,7 @@ commitSha := 408dcf12bdf44dcd6f9021a6c795c472679d6d02 all: image.json image.json: main.nim nim-libp2p Dockerfile - IMAGE_NAME=${image_name} ../../dockerBuildWrapper.sh . + IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ diff --git a/multidim-interop/rust/.gitignore b/multidim-interop/impl/rust/.gitignore similarity index 100% rename from multidim-interop/rust/.gitignore rename to multidim-interop/impl/rust/.gitignore diff --git a/multidim-interop/rust/v0.48/Makefile b/multidim-interop/impl/rust/v0.48/Makefile similarity index 90% rename from multidim-interop/rust/v0.48/Makefile rename to multidim-interop/impl/rust/v0.48/Makefile index a461d1f60..143f48eab 100644 --- a/multidim-interop/rust/v0.48/Makefile +++ b/multidim-interop/impl/rust/v0.48/Makefile @@ -4,7 +4,7 @@ commitSha := 7b3047d6d05d599f11f05938d4257e70de66ac12 all: image.json image.json: rust-libp2p-${commitSha} - cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ diff --git a/multidim-interop/rust/v0.49/Makefile b/multidim-interop/impl/rust/v0.49/Makefile similarity index 90% rename from multidim-interop/rust/v0.49/Makefile rename to multidim-interop/impl/rust/v0.49/Makefile index 9029e172b..144ce5972 100644 --- a/multidim-interop/rust/v0.49/Makefile +++ b/multidim-interop/impl/rust/v0.49/Makefile @@ -4,7 +4,7 @@ commitSha := 582c84043050eb0dd6e52d1bd0527175181d41cb all: image.json image.json: rust-libp2p-${commitSha} - cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ diff --git a/multidim-interop/rust/v0.50/Makefile b/multidim-interop/impl/rust/v0.50/Makefile similarity index 90% rename from multidim-interop/rust/v0.50/Makefile rename to multidim-interop/impl/rust/v0.50/Makefile index 2cc4892f7..d6a1c78a6 100644 --- a/multidim-interop/rust/v0.50/Makefile +++ b/multidim-interop/impl/rust/v0.50/Makefile @@ -4,7 +4,7 @@ commitSha := beb66b5832384d9b813fcbf1f0fa01e6a64a9c5f all: image.json image.json: rust-libp2p-${commitSha} - cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ diff --git a/multidim-interop/rust/v0.51/Makefile b/multidim-interop/impl/rust/v0.51/Makefile similarity index 90% rename from multidim-interop/rust/v0.51/Makefile rename to multidim-interop/impl/rust/v0.51/Makefile index 652370c79..d809e3f8a 100644 --- a/multidim-interop/rust/v0.51/Makefile +++ b/multidim-interop/impl/rust/v0.51/Makefile @@ -4,7 +4,7 @@ commitSha := 1a9cf4f7760724032b729c43165716c7ecd842ad all: image.json image.json: rust-libp2p-${commitSha} - cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ diff --git a/multidim-interop/js/v0.41/Dockerfile b/multidim-interop/js/v0.41/Dockerfile deleted file mode 100644 index cadf6681d..000000000 --- a/multidim-interop/js/v0.41/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM node:18 - -WORKDIR /app - -COPY package*.json . - -RUN npm ci - -COPY tsconfig.json . -COPY .aegir.js . -COPY test ./test -COPY src ./src - -RUN npm run build - -ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "node" ] \ No newline at end of file diff --git a/multidim-interop/js/v0.41/Makefile b/multidim-interop/js/v0.41/Makefile deleted file mode 100644 index a186017fc..000000000 --- a/multidim-interop/js/v0.41/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -image_name := js-v0.21 -TEST_SOURCES := $(wildcard test/*.ts) - -all: chromium-image.json node-image.json - -chromium-image.json: ChromiumDockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js - IMAGE_NAME=chromium-${image_name} ../../dockerBuildWrapper.sh -f ChromiumDockerfile . - docker image inspect chromium-${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -node-image.json: Dockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js - IMAGE_NAME=node-${image_name} ../../dockerBuildWrapper.sh -f Dockerfile . - docker image inspect node-${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -.PHONY: clean - -clean: - rm *image.json \ No newline at end of file diff --git a/multidim-interop/js/v0.42/Dockerfile b/multidim-interop/js/v0.42/Dockerfile deleted file mode 100644 index cadf6681d..000000000 --- a/multidim-interop/js/v0.42/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM node:18 - -WORKDIR /app - -COPY package*.json . - -RUN npm ci - -COPY tsconfig.json . -COPY .aegir.js . -COPY test ./test -COPY src ./src - -RUN npm run build - -ENTRYPOINT [ "npm", "test", "--", "--build", "false", "--types", "false", "-t", "node" ] \ No newline at end of file diff --git a/multidim-interop/js/v0.42/Makefile b/multidim-interop/js/v0.42/Makefile deleted file mode 100644 index 3234688fd..000000000 --- a/multidim-interop/js/v0.42/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -image_name := js-v0.42 -TEST_SOURCES := $(wildcard test/*.ts) - -all: chromium-image.json node-image.json - -chromium-image.json: ChromiumDockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js - IMAGE_NAME=chromium-${image_name} ../../dockerBuildWrapper.sh -f ChromiumDockerfile . - docker image inspect chromium-${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -node-image.json: Dockerfile $(TEST_SOURCES) package.json package-lock.json .aegir.js - IMAGE_NAME=node-${image_name} ../../dockerBuildWrapper.sh -f Dockerfile . - docker image inspect node-${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -.PHONY: clean - -clean: - rm *image.json \ No newline at end of file diff --git a/multidim-interop/package-lock.json b/multidim-interop/package-lock.json index 1c9ccf3aa..7e54b037b 100644 --- a/multidim-interop/package-lock.json +++ b/multidim-interop/package-lock.json @@ -12,6 +12,7 @@ "@types/yargs": "^17.0.19", "csv-parse": "^5.3.3", "csv-stringify": "^6.2.3", + "ignore": "^5.2.4", "json-schema-to-typescript": "^11.0.2", "sqlite": "^4.1.2", "sqlite3": "^5.1.2", @@ -781,6 +782,14 @@ "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2422,6 +2431,11 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", diff --git a/multidim-interop/package.json b/multidim-interop/package.json index 955970400..c1c7d2a16 100644 --- a/multidim-interop/package.json +++ b/multidim-interop/package.json @@ -5,7 +5,8 @@ "main": "testplans.ts", "scripts": { "test": "ts-node testplans.ts", - "renderResults": "ts-node renderResults.ts" + "renderResults": "ts-node renderResults.ts", + "cache": "ts-node helpers/cache.ts" }, "author": "marcopolo", "license": "MIT", @@ -17,6 +18,7 @@ "@types/yargs": "^17.0.19", "csv-parse": "^5.3.3", "csv-stringify": "^6.2.3", + "ignore": "^5.2.4", "json-schema-to-typescript": "^11.0.2", "sqlite": "^4.1.2", "sqlite3": "^5.1.2", diff --git a/multidim-interop/versions.ts b/multidim-interop/versions.ts index 8987367ca..0b7f6ac50 100644 --- a/multidim-interop/versions.ts +++ b/multidim-interop/versions.ts @@ -1,16 +1,16 @@ -import gov025 from "./go/v0.25/image.json" -import gov024 from "./go/v0.24/image.json" -import gov023 from "./go/v0.23/image.json" -import gov022 from "./go/v0.22/image.json" -import rustv048 from "./rust/v0.48/image.json" -import rustv049 from "./rust/v0.49/image.json" -import rustv050 from "./rust/v0.50/image.json" -import rustv051 from "./rust/v0.51/image.json" -import jsV041 from "./js/v0.41/node-image.json" -import jsV042 from "./js/v0.42/node-image.json" -import nimv10 from "./nim/v1.0/image.json" -import chromiumJsV041 from "./js/v0.41/chromium-image.json" -import chromiumJsV042 from "./js/v0.42/chromium-image.json" +import gov025 from "./impl/go/v0.25/image.json" +import gov024 from "./impl/go/v0.24/image.json" +import gov023 from "./impl/go/v0.23/image.json" +import gov022 from "./impl/go/v0.22/image.json" +import rustv048 from "./impl/rust/v0.48/image.json" +import rustv049 from "./impl/rust/v0.49/image.json" +import rustv050 from "./impl/rust/v0.50/image.json" +import rustv051 from "./impl/rust/v0.51/image.json" +import jsV041 from "./impl/js/v0.41/node-image.json" +import jsV042 from "./impl/js/v0.42/node-image.json" +import nimv10 from "./impl/nim/v1.0/image.json" +import chromiumJsV041 from "./impl/js/v0.41/chromium-image.json" +import chromiumJsV042 from "./impl/js/v0.42/chromium-image.json" export type Version = { id: string, From 70169e6e3c5dc470a1fadb717f49c1e9b444f70e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Apr 2023 19:53:43 +0000 Subject: [PATCH 039/101] chore: update the link to the interop dashboard [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0d5a89b7..447156ecd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Interoperabilty and end to end test-plans for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4646774898/attempts/1#summary-12610482600) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/4670814354/attempts/1#summary-12669871214) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) ![Go version](https://img.shields.io/badge/go-%3E%3D1.14.0-blue.svg?style=flat-square) From 5ad733888faa72c5be2f7d8aa03f3d85ceca86a4 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Thu, 13 Apr 2023 14:34:31 -0700 Subject: [PATCH 040/101] Update readme --- perf/README.md | 20 +++++--------------- perf/terraform/region/main.tf | 6 +++--- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/perf/README.md b/perf/README.md index c45d14a70..9fea8e41b 100644 --- a/perf/README.md +++ b/perf/README.md @@ -3,26 +3,16 @@ ## Setup 1. `cd terraform` -2. Safe your SSH key as a file, e.g. `./mxinden.pub`. -3. Optionally update the reference to the ssh key in `region/main.tf`: - ```diff - - - resource "aws_key_pair" "mxinden" { - - key_name = "mxinden-public-key" - - public_key = file("./mxinden.pub") - - } - + resource "aws_key_pair" "your-key" { - + key_name = "your-key-public-key" - + public_key = file("./your-key.pub") - + } - ``` +2. Save your public SSH key as the file `./user.pub`. +3. `terraform init` 4. `terraform apply` ## Execute 1. `cd runner` -2. `npm run build` -3. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` +2. `npm ci` +3. `npm run build` +4. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` ## Add benchmark binary diff --git a/perf/terraform/region/main.tf b/perf/terraform/region/main.tf index 0bad9d417..76937db7b 100644 --- a/perf/terraform/region/main.tf +++ b/perf/terraform/region/main.tf @@ -104,8 +104,8 @@ resource "aws_security_group" "restricted_inbound" { } resource "aws_key_pair" "mxinden" { - key_name = "mxinden-public-key" - public_key = file("./mxinden.pub") + key_name = "user-public-key" + public_key = file("./user.pub") } resource "aws_instance" "node" { @@ -121,7 +121,7 @@ resource "aws_instance" "node" { # Debug via: # - /var/log/cloud-init.log and # - /var/log/cloud-init-output.log - user_data = file("./user-data.sh") + user_data = file("./user-data.sh") user_data_replace_on_change = true tags = merge(var.common_tags, { From 31c6da56786e08aa25b423d4775c0a483f32fb0d Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Thu, 13 Apr 2023 14:41:58 -0700 Subject: [PATCH 041/101] Always build when doing npm run start --- perf/README.md | 3 +-- perf/runner/package.json | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/perf/README.md b/perf/README.md index 9fea8e41b..23caae3a1 100644 --- a/perf/README.md +++ b/perf/README.md @@ -11,8 +11,7 @@ 1. `cd runner` 2. `npm ci` -3. `npm run build` -4. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` +3. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` ## Add benchmark binary diff --git a/perf/runner/package.json b/perf/runner/package.json index e0df3a955..bf52ccef9 100644 --- a/perf/runner/package.json +++ b/perf/runner/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "build": "tsc", - "start": "node ./dist/index.js" + "start": "tsc && node ./dist/index.js" }, "author": "", "license": "ISC", From 2ce3daaf4c47cc170ab29154e39d301ce57c3d45 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Thu, 13 Apr 2023 16:28:07 -0700 Subject: [PATCH 042/101] Save benchmark results --- perf/runner/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 0fc474e80..bfeafd037 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -1,6 +1,7 @@ import { execSync } from 'child_process'; import { versions } from './versions'; import yargs from 'yargs'; +import fs from 'fs'; import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; async function main(clientPublicIP: string, serverPublicIP: string) { @@ -46,6 +47,9 @@ async function main(clientPublicIP: string, serverPublicIP: string) { }; console.log(JSON.stringify(benchmarkResults, null, 2)); + + // Save results to benchmark-results.json + fs.writeFileSync('./benchmark-results.json', JSON.stringify(benchmarkResults, null, 2)); } interface ArgsRunBenchmarkAcrossVersions { From 95cc2afc1121b371ec6aef19900c5f31db010f79 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Thu, 13 Apr 2023 16:28:40 -0700 Subject: [PATCH 043/101] Add implementation --- perf/runner/src/index.ts | 2 +- perf/runner/src/versions.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index bfeafd037..75b189e42 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -82,7 +82,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul results.push({ result: latencies.latencies, - implementation: "", + implementation: version.implementation, version: version.id, transportStack: transportStack, }); diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index ef29045da..4c0e81a44 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,5 +1,6 @@ export type Version = { id: string, + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p", containerImageID: string, transportStacks: string[], } @@ -7,11 +8,13 @@ export type Version = { export const versions: Array = [ { id: "rust-master", + implementation: "rust-libp2p", containerImageID: "90bd7031f56ef2311659ea79b6e980080063b83ddc6644e7ebd5dbea869a1119", transportStacks: ["tcp", "quic-v1"] }, { - id: "go-master", + id: "go-v0.27.0", + implementation: "go-libp2p", containerImageID: "0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", transportStacks: ["tcp", "quic-v1"] }, From ce6f969d2b651293a8bd857e3260bd91968150b3 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 10:09:45 +0200 Subject: [PATCH 044/101] Change to m5n.8xlarge with 25 Gbit Had to change to us-west-2 as m5n.8xlarge was not available in us-west-1. --- perf/terraform/region/main.tf | 2 +- perf/terraform/terraform.tf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/perf/terraform/region/main.tf b/perf/terraform/region/main.tf index 76937db7b..0b36b939c 100644 --- a/perf/terraform/region/main.tf +++ b/perf/terraform/region/main.tf @@ -110,7 +110,7 @@ resource "aws_key_pair" "mxinden" { resource "aws_instance" "node" { ami = var.ami - instance_type = "t2.micro" + instance_type = "m5n.8xlarge" subnet_id = aws_subnet.perf.id diff --git a/perf/terraform/terraform.tf b/perf/terraform/terraform.tf index 2f3a81d7a..79ad18050 100644 --- a/perf/terraform/terraform.tf +++ b/perf/terraform/terraform.tf @@ -9,8 +9,8 @@ terraform { module "server_region" { source = "./region" - region = "us-west-1" - ami = "ami-09c5c62bac0d0634e" + region = "us-west-2" + ami = "ami-0747e613a2a1ff483" common_tags = { Project = "perf" @@ -20,7 +20,7 @@ module "server_region" { module "client_region" { source = "./region" region = "us-east-1" - ami = "ami-00c39f71452c08778" + ami = "ami-06e46074ae430fba6" common_tags = { Project = "perf" From bbde59ed5778ad6df6755e9d11a45272cd2e504b Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 14:44:57 +0200 Subject: [PATCH 045/101] Update to latest rust container image --- perf/runner/src/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 4c0e81a44..1db41f794 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -9,7 +9,7 @@ export const versions: Array = [ { id: "rust-master", implementation: "rust-libp2p", - containerImageID: "90bd7031f56ef2311659ea79b6e980080063b83ddc6644e7ebd5dbea869a1119", + containerImageID: "3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", transportStacks: ["tcp", "quic-v1"] }, { From 7baa39c5c67cc60db3df4e4c2c3f8fc43f45c6bd Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Fri, 14 Apr 2023 16:09:11 +0200 Subject: [PATCH 046/101] Add changes for zig-libp2p --- perf/runner/src/index.ts | 53 ++++++++++++++++++++++------------- perf/runner/src/versions.ts | 12 ++++++-- perf/terraform/region/main.tf | 8 +++--- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 75b189e42..824e7a9f8 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -63,16 +63,19 @@ interface ArgsRunBenchmarkAcrossVersions { function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { const results: Result[] = []; for (const version of versions) { - console.error(`Starting ${version.id} server.`); - const serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run -d --restart always --network host --entrypoint /app/server mxinden/libp2p-perf@sha256:${version.containerImageID} --secret-key-seed 0'`; - console.error(serverCMD); - const serverSTDOUT = execCommand(serverCMD); - console.error(serverSTDOUT); + if (version.serverAddress == undefined) { + console.error(`Starting ${version.id} server.`); + const serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host --entrypoint /app/server ${version.containerImageID} --secret-key-seed 0'`; + console.error(serverCMD); + const serverSTDOUT = execCommand(serverCMD); + console.error(serverSTDOUT); + } for (const transportStack of version.transportStacks) { const latencies = runBenchmark({ clientPublicIP: args.clientPublicIP, serverPublicIP: args.serverPublicIP, + serverAddress: version.serverAddress, dockerImageId: version.containerImageID, transportStack: transportStack, uploadBytes: args.uploadBytes, @@ -95,6 +98,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul interface ArgsRunBenchmark { clientPublicIP: string; serverPublicIP: string; + serverAddress?: string; dockerImageId: string; transportStack: string, uploadBytes: number, @@ -110,30 +114,41 @@ interface Latencies { function runBenchmark(args: ArgsRunBenchmark): Latencies { console.error(`Starting ${args.transportStack} client.`); - let serverAddress: string; + let serverAddress = args.serverAddress; - switch (args.transportStack) { - case 'tcp': - serverAddress = `/ip4/${args.serverPublicIP}/tcp/4001`; - break; - case 'quic-v1': - serverAddress = `/ip4/${args.serverPublicIP}/udp/4001/quic-v1`; - break; - default: - console.error("Unsupported transport stack ${args.transportStack}"); - process.exit(1); + if (serverAddress == undefined) { + switch (args.transportStack) { + case 'tcp': + serverAddress = `/ip4/${args.serverPublicIP}/tcp/4001`; + break; + case 'quic-v1': + serverAddress = `/ip4/${args.serverPublicIP}/udp/4001/quic-v1`; + break; + default: + console.error("Unsupported transport stack ${args.transportStack}"); + process.exit(1); + } + serverAddress = serverAddress + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN"; } - serverAddress = serverAddress + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN"; const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` // TODO Take docker hub repository from version.ts - const dockerCMD = `docker run --rm --network host mxinden/libp2p-perf@sha256:${args.dockerImageId} ${binFlags}` + const dockerCMD = `docker run --init --rm --network host ${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; + console.log("Running command:", cmd); const stdout = execCommand(cmd); + console.log("Stdout from client:", stdout.toString(), JSON.parse(stdout.toString())); + const parsedStdout = JSON.parse(stdout.toString()); + + let latencies: Latencies + if (Array.isArray(parsedStdout)) { + latencies = { latencies: parsedStdout } + } else { + latencies = parsedStdout + } - const latencies: Latencies = JSON.parse(stdout.toString()); return latencies; } diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 1db41f794..966054a8a 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -3,19 +3,27 @@ export type Version = { implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p", containerImageID: string, transportStacks: string[], + serverAddress?: string, } export const versions: Array = [ { id: "rust-master", implementation: "rust-libp2p", - containerImageID: "3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", + containerImageID: "mxinden/libp2p-perf@3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", transportStacks: ["tcp", "quic-v1"] }, { id: "go-v0.27.0", implementation: "go-libp2p", - containerImageID: "0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", + containerImageID: "mxinden/libp2p-perf@0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", transportStacks: ["tcp", "quic-v1"] }, + { + id: "zig-libp2p-v0.0.1", + implementation: "zig-libp2p", + containerImageID: "marcop010/zig-libp2p-perf@sha256:26b174b4ba38b206e216328f6027293f98c1db1e063ec27121609f2e5b9f409a", + transportStacks: ["quic-v1"], + serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" + }, ] diff --git a/perf/terraform/region/main.tf b/perf/terraform/region/main.tf index 0b36b939c..b83c4ec8b 100644 --- a/perf/terraform/region/main.tf +++ b/perf/terraform/region/main.tf @@ -78,15 +78,15 @@ resource "aws_security_group" "restricted_inbound" { } ingress { - from_port = 4001 - to_port = 4001 + from_port = 1 + to_port = 65535 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } ingress { - from_port = 4001 - to_port = 4001 + from_port = 1 + to_port = 65535 protocol = "udp" cidr_blocks = ["0.0.0.0/0"] } From 0a8c201984bc3a1c8beb38b1293445fc9ea57884 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Fri, 14 Apr 2023 16:09:43 +0200 Subject: [PATCH 047/101] Test 100MiB --- perf/runner/src/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 824e7a9f8..0b0460915 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -8,25 +8,25 @@ async function main(clientPublicIP: string, serverPublicIP: string) { const benchmarkResults: BenchmarkResults = { benchmarks: [ { - name: "Single Connection throughput – Upload 10 MiB", + name: "Single Connection throughput – Upload 100 MiB", unit: "s", results: runBenchmarkAcrossVersions({ clientPublicIP, serverPublicIP, - uploadBytes: 10 * 1024 * 1024, + uploadBytes: 100 << 20, downloadBytes: 0, nTimes: 1, }), comparisons: [], }, { - name: "Single Connection throughput – Download 10 MiB", + name: "Single Connection throughput – Download 100 MiB", unit: "s", results: runBenchmarkAcrossVersions({ clientPublicIP, serverPublicIP, uploadBytes: 0, - downloadBytes: 10 * 1024 * 1024, + downloadBytes: 100 << 20, nTimes: 1, }), comparisons: [], From 5d01b2a2deb78d52b3fa15839f9c4f9dfa55929d Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 16:22:56 +0200 Subject: [PATCH 048/101] Add **very** basic Go HTTPS implementation --- perf/impl/go/https/Dockerfile | 15 +++ perf/impl/go/https/go.mod | 20 +++ perf/impl/go/https/go.sum | 38 ++++++ perf/impl/go/https/main.go | 227 ++++++++++++++++++++++++++++++++++ perf/impl/go/https/server | 2 + perf/runner/src/versions.ts | 8 +- 6 files changed, 309 insertions(+), 1 deletion(-) create mode 100644 perf/impl/go/https/Dockerfile create mode 100644 perf/impl/go/https/go.mod create mode 100644 perf/impl/go/https/go.sum create mode 100644 perf/impl/go/https/main.go create mode 100755 perf/impl/go/https/server diff --git a/perf/impl/go/https/Dockerfile b/perf/impl/go/https/Dockerfile new file mode 100644 index 000000000..50dbb4d30 --- /dev/null +++ b/perf/impl/go/https/Dockerfile @@ -0,0 +1,15 @@ +# Build Go Binary +FROM golang:1.20-alpine AS builder + +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY *.go ./ +RUN go build -o perf . + +FROM alpine + +COPY --from=builder /app/perf /app/perf +COPY server /app/server + +ENTRYPOINT [ "/app/perf" ] \ No newline at end of file diff --git a/perf/impl/go/https/go.mod b/perf/impl/go/https/go.mod new file mode 100644 index 000000000..8d6dc86b2 --- /dev/null +++ b/perf/impl/go/https/go.mod @@ -0,0 +1,20 @@ +module github.com/libp2p/test-plans/perf/go/https + +go 1.20 + +require ( + github.com/ipfs/go-cid v0.0.7 // indirect + github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect + github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771 // indirect + github.com/mr-tron/base58 v1.1.3 // indirect + github.com/multiformats/go-base32 v0.0.3 // indirect + github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-multiaddr v0.9.0 // indirect + github.com/multiformats/go-multiaddr-net v0.2.0 // indirect + github.com/multiformats/go-multibase v0.0.3 // indirect + github.com/multiformats/go-multihash v0.0.14 // indirect + github.com/multiformats/go-varint v0.0.6 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/sys v0.1.0 // indirect +) diff --git a/perf/impl/go/https/go.sum b/perf/impl/go/https/go.sum new file mode 100644 index 000000000..7adcab44b --- /dev/null +++ b/perf/impl/go/https/go.sum @@ -0,0 +1,38 @@ +github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771 h1:MHkK1uRtFbVqvAgvWxafZe54+5uBxLluGylDiKgdhwo= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= +github.com/multiformats/go-multiaddr v0.9.0 h1:3h4V1LHIk5w4hJHekMKWALPXErDfz/sggzwC/NcqbDQ= +github.com/multiformats/go-multiaddr v0.9.0/go.mod h1:mI67Lb1EeTOYb8GQfL/7wpIZwc46ElrvzhYnoJOmTT0= +github.com/multiformats/go-multiaddr-net v0.2.0 h1:MSXRGN0mFymt6B1yo/6BPnIRpLPEnKgQNvVfCX5VDJk= +github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= +github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14 h1:QoBceQYQQtNUuf6s7wHxnE2c8bhbMqhfGzNI032se/I= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= +github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/perf/impl/go/https/main.go b/perf/impl/go/https/main.go new file mode 100644 index 000000000..ce5d258e9 --- /dev/null +++ b/perf/impl/go/https/main.go @@ -0,0 +1,227 @@ +package main + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "crypto/rand" + "crypto/rsa" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/binary" + "encoding/pem" + "flag" + "fmt" + "io" + "math/big" + "net" + "net/http" + "strconv" + "time" + + "github.com/multiformats/go-multiaddr" +) + +func handleRequest(w http.ResponseWriter, r *http.Request) { + // Read the big-endian bytesToSend value + var bytesToSend uint64 + err := binary.Read(r.Body, binary.BigEndian, &bytesToSend) + if err != nil { + http.Error(w, "Failed to read u64 value", http.StatusBadRequest) + return + } + + // Read and discard the remaining bytes in the request + io.Copy(io.Discard, r.Body) + + // Generate random bytes and write the response + responseBytes := make([]byte, bytesToSend) + _, err = rand.Read(responseBytes) + if err != nil { + http.Error(w, "Failed to generate random bytes", http.StatusInternalServerError) + return + } + + w.Write(responseBytes) +} + +func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) []time.Duration { + durations := make([]time.Duration, nTimes) + + client := &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }, + } + + for i := 0; i < nTimes; i++ { + reqBody := make([]byte, 8+uploadBytes) + binary.BigEndian.PutUint64(reqBody, uint64(downloadBytes)) + rand.Read(reqBody[8:]) + + startTime := time.Now() + resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) + if err != nil { + fmt.Printf("Error sending request: %v\n", err) + continue + } + + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("Error reading response: %v\n", err) + } else if len(respBody) != downloadBytes { + fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) + } + resp.Body.Close() + + durations[i] = time.Since(startTime) + } + + return durations +} + +func generateEphemeralCertificate() (tls.Certificate, error) { + // Generate a private key + privKey, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + return tls.Certificate{}, err + } + + // Set up the certificate template + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + Organization: []string{"Ephemeral Cert"}, + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(24 * time.Hour), + KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment, + ExtKeyUsage: []x509.ExtKeyUsage{ + x509.ExtKeyUsageServerAuth, + }, + BasicConstraintsValid: true, + } + + // Set the IP address if required + ip := net.ParseIP("127.0.0.1") + if ip != nil { + template.IPAddresses = append(template.IPAddresses, ip) + } + + // Create a self-signed certificate + certDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &privKey.PublicKey, privKey) + if err != nil { + return tls.Certificate{}, err + } + + // PEM encode the certificate and private key + certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER}) + privKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privKey)}) + + // Create a tls.Certificate from the PEM encoded certificate and private key + cert, err := tls.X509KeyPair(certPEM, privKeyPEM) + if err != nil { + return tls.Certificate{}, err + } + + return cert, nil +} + +type Latencies struct { + Latencies []float32 `json:"latencies"` +} + +func main() { + runServer := flag.Bool("run-server", false, "Should run as server") + // --server-address + serverAddr := flag.String("server-address", "", "Server address") + // --secret-key-seed + _ = flag.Uint64("secret-key-seed", 0, "Server secret key seed") + // --upload-bytes + uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") + // --download-bytes + downloadBytes := flag.Int("download-bytes", 0, "Download bytes") + // --n-times + nTimes := flag.Int("n-times", 0, "N times") + flag.Parse() + + if *runServer { + + // Generate an ephemeral TLS certificate and private key + cert, err := generateEphemeralCertificate() + if err != nil { + fmt.Printf("Error generating ephemeral certificate: %v\n", err) + return + } + + // Create a new HTTPS server with the ephemeral certificate + tlsConfig := &tls.Config{Certificates: []tls.Certificate{cert}} + server := &http.Server{ + Addr: ":4001", + TLSConfig: tlsConfig, + } + + http.HandleFunc("/", handleRequest) + + // Start the HTTPS server + fmt.Println("Starting HTTPS server on port 4001") + err = server.ListenAndServeTLS("", "") + if err != nil { + fmt.Printf("Error starting HTTPS server: %v\n", err) + } + } else { + // Client mode + if *serverAddr == "" || *nTimes <= 0 { + fmt.Println("Error: Please provide valid server-address and n-times flags for client mode.") + return + } + + // Parse the multiaddr and extract the IP address and TCP port + serverAddr, err := multiaddr.NewMultiaddr(*serverAddr) + if err != nil { + fmt.Printf("Error parsing server-address: %v\n", err) + return + } + ipBytes, err := serverAddr.ValueForProtocol(multiaddr.P_IP4) + if err != nil { + ipBytes, err = serverAddr.ValueForProtocol(multiaddr.P_IP6) + if err != nil { + fmt.Printf("Error getting IP address from multiaddr: %v\n", err) + return + } + } + ip := net.ParseIP(ipBytes) + portStr, err := serverAddr.ValueForProtocol(multiaddr.P_TCP) + if err != nil { + fmt.Printf("Error getting TCP port from multiaddr: %v\n", err) + return + } + port, err := strconv.Atoi(portStr) + if err != nil { + fmt.Printf("Error parsing TCP port: %v\n", err) + return + } + // Run the client and print the results + durations := runClient(fmt.Sprintf("%s:%d", ip.String(), port), *uploadBytes, *downloadBytes, *nTimes) + + // Convert durations to seconds and marshal as JSON + timesS := make([]float32, 0, len(durations)) + for _, d := range durations { + timesS = append(timesS, float32(d.Nanoseconds())/1_000_000_000) + } + + latencies := Latencies{ + Latencies: timesS, + } + + jsonB, err := json.Marshal(latencies) + if err != nil { + panic(err) + } + + fmt.Println(string(jsonB)) + } +} diff --git a/perf/impl/go/https/server b/perf/impl/go/https/server new file mode 100755 index 000000000..0372a3d60 --- /dev/null +++ b/perf/impl/go/https/server @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +/app/perf --run-server \ No newline at end of file diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 966054a8a..3e499437e 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,6 +1,6 @@ export type Version = { id: string, - implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p", + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "go-https", containerImageID: string, transportStacks: string[], serverAddress?: string, @@ -26,4 +26,10 @@ export const versions: Array = [ transportStacks: ["quic-v1"], serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" }, + { + id: "go-https-v0.0.1", + implementation: "go-https", + containerImageID: "ca9237cdbdfb13ac68f019bc1373ccfcc207798e461f8e9264d52f981d9d648c", + transportStacks: ["tcp"] + }, ] From d559bb3d8741cee62eb4064f29d9513bf6cc78ea Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 16:45:14 +0200 Subject: [PATCH 049/101] Fix versions.ts adding sha256: to other images --- perf/runner/src/versions.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 3e499437e..3ada168af 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -10,13 +10,13 @@ export const versions: Array = [ { id: "rust-master", implementation: "rust-libp2p", - containerImageID: "mxinden/libp2p-perf@3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", + containerImageID: "mxinden/libp2p-perf@sha256:3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", transportStacks: ["tcp", "quic-v1"] }, { id: "go-v0.27.0", implementation: "go-libp2p", - containerImageID: "mxinden/libp2p-perf@0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", + containerImageID: "mxinden/libp2p-perf@sha256:0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", transportStacks: ["tcp", "quic-v1"] }, { @@ -29,7 +29,7 @@ export const versions: Array = [ { id: "go-https-v0.0.1", implementation: "go-https", - containerImageID: "ca9237cdbdfb13ac68f019bc1373ccfcc207798e461f8e9264d52f981d9d648c", + containerImageID: "mxinden/libp2p-perf@sha256:ca9237cdbdfb13ac68f019bc1373ccfcc207798e461f8e9264d52f981d9d648c", transportStacks: ["tcp"] }, ] From 0dbdf2df4cc850bb9af2b242fd4888f7ccef8aaa Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 17:20:54 +0200 Subject: [PATCH 050/101] Update rust to set tcp nodelay on server --- perf/runner/src/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 3ada168af..51297dcdc 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -10,7 +10,7 @@ export const versions: Array = [ { id: "rust-master", implementation: "rust-libp2p", - containerImageID: "mxinden/libp2p-perf@sha256:3078e6a9941952486afe4b417a318ce0c372b6e2ef1e296c85f7811c1f170b09", + containerImageID: "mxinden/libp2p-perf@sha256:80ef398de86fbb5be128c51de9900db908341d8ea0a77f9df935f449eb47696b", transportStacks: ["tcp", "quic-v1"] }, { From 32bcc2a12760ea7d6a884040a92662852d0899e2 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 18:17:12 +0200 Subject: [PATCH 051/101] fix(https): don't randomize before write --- perf/impl/go/https/main.go | 44 +++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/perf/impl/go/https/main.go b/perf/impl/go/https/main.go index ce5d258e9..c4d54239d 100644 --- a/perf/impl/go/https/main.go +++ b/perf/impl/go/https/main.go @@ -23,6 +23,10 @@ import ( "github.com/multiformats/go-multiaddr" ) +const ( + BlockSize = 64 << 10 +) + func handleRequest(w http.ResponseWriter, r *http.Request) { // Read the big-endian bytesToSend value var bytesToSend uint64 @@ -35,18 +39,24 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { // Read and discard the remaining bytes in the request io.Copy(io.Discard, r.Body) - // Generate random bytes and write the response - responseBytes := make([]byte, bytesToSend) - _, err = rand.Read(responseBytes) - if err != nil { - http.Error(w, "Failed to generate random bytes", http.StatusInternalServerError) - return - } + buf := make([]byte, BlockSize) + + for bytesToSend > 0 { + toSend := buf + if bytesToSend < BlockSize { + toSend = buf[:bytesToSend] + } - w.Write(responseBytes) + n, err := w.Write(toSend) + if err != nil { + http.Error(w, "Failed write", http.StatusInternalServerError) + return + } + bytesToSend -= uint64(n) + } } -func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) []time.Duration { +func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) ([]time.Duration, error) { durations := make([]time.Duration, nTimes) client := &http.Client{ @@ -57,11 +67,10 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) []time }, } - for i := 0; i < nTimes; i++ { - reqBody := make([]byte, 8+uploadBytes) - binary.BigEndian.PutUint64(reqBody, uint64(downloadBytes)) - rand.Read(reqBody[8:]) + reqBody := make([]byte, 8+uploadBytes) + binary.BigEndian.PutUint64(reqBody, uint64(downloadBytes)) + for i := 0; i < nTimes; i++ { startTime := time.Now() resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) if err != nil { @@ -72,15 +81,17 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) []time respBody, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Printf("Error reading response: %v\n", err) + return durations, err } else if len(respBody) != downloadBytes { fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) + return durations, err } resp.Body.Close() durations[i] = time.Since(startTime) } - return durations + return durations, nil } func generateEphemeralCertificate() (tls.Certificate, error) { @@ -205,7 +216,10 @@ func main() { return } // Run the client and print the results - durations := runClient(fmt.Sprintf("%s:%d", ip.String(), port), *uploadBytes, *downloadBytes, *nTimes) + durations, err := runClient(fmt.Sprintf("%s:%d", ip.String(), port), *uploadBytes, *downloadBytes, *nTimes) + if err != nil { + panic(err) + } // Convert durations to seconds and marshal as JSON timesS := make([]float32, 0, len(durations)) From 2cceb891d1fcacb85442988a49309d52226ce5ca Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 14 Apr 2023 18:17:42 +0200 Subject: [PATCH 052/101] fix(go-libp2p-perf): return error --- perf/impl/go/v0.27/perf.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/impl/go/v0.27/perf.go b/perf/impl/go/v0.27/perf.go index 691f983a4..cc7096bcb 100644 --- a/perf/impl/go/v0.27/perf.go +++ b/perf/impl/go/v0.27/perf.go @@ -70,7 +70,7 @@ func (ps *PerfService) sendBytes(ctx context.Context, s network.Stream, bytesToS n, err := s.Write(toSend) if err != nil { - return nil + return err } bytesToSend -= uint64(n) } From fc32953fc0202395cf1aeba04dcb4b6579e7de67 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Sat, 15 Apr 2023 09:25:26 +0200 Subject: [PATCH 053/101] Update versions.ts --- perf/runner/src/versions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 51297dcdc..c3e2f7182 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -22,9 +22,9 @@ export const versions: Array = [ { id: "zig-libp2p-v0.0.1", implementation: "zig-libp2p", - containerImageID: "marcop010/zig-libp2p-perf@sha256:26b174b4ba38b206e216328f6027293f98c1db1e063ec27121609f2e5b9f409a", + containerImageID: "marcop010/zig-libp2p-perf@sha256:6a9f11961092cbebef93a55f5160fdd8584b7a11957b37b70d513e0948164353", transportStacks: ["quic-v1"], - serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" + // serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" }, { id: "go-https-v0.0.1", From 41ec5fe12e0d74df0630698df3cf23a5ae09d51c Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Sat, 15 Apr 2023 11:35:47 +0200 Subject: [PATCH 054/101] Add hack --- perf/runner/src/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 0b0460915..56f5c9b64 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -65,7 +65,13 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul for (const version of versions) { if (version.serverAddress == undefined) { console.error(`Starting ${version.id} server.`); - const serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host --entrypoint /app/server ${version.containerImageID} --secret-key-seed 0'`; + let serverCMD: string + if (version.implementation === "zig-libp2p") { + // Hack! + serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server'`; + } else { + serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host --entrypoint /app/server ${version.containerImageID} --secret-key-seed 0'`; + } console.error(serverCMD); const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); From 8c58889e650c26c273c6ff8f240591a873e44034 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 24 Apr 2023 06:58:03 +0200 Subject: [PATCH 055/101] Build and transfer docker image --- perf/Makefile | 17 ++ perf/impl/go/.gitignore | 4 + perf/impl/go/v0.27/Makefile | 11 ++ perf/impl/https/.gitignore | 4 + perf/impl/{go => }/https/Dockerfile | 0 perf/impl/https/Makefile | 12 ++ perf/impl/{go => }/https/go.mod | 0 perf/impl/{go => }/https/go.sum | 0 perf/impl/{go => }/https/main.go | 0 perf/impl/{go => }/https/server | 0 perf/impl/rust/.gitignore | 4 + perf/impl/rust/v0.51/Makefile | 24 +++ perf/runner/.gitignore | 3 +- perf/runner/package-lock.json | 292 ++++++++++++++++++++++++++++ perf/runner/package.json | 4 +- perf/runner/src/index.ts | 86 +++++--- perf/runner/src/versions.ts | 38 ++-- perf/runner/tsconfig.json | 1 + 18 files changed, 454 insertions(+), 46 deletions(-) create mode 100644 perf/Makefile create mode 100644 perf/impl/go/.gitignore create mode 100644 perf/impl/go/v0.27/Makefile create mode 100644 perf/impl/https/.gitignore rename perf/impl/{go => }/https/Dockerfile (100%) create mode 100644 perf/impl/https/Makefile rename perf/impl/{go => }/https/go.mod (100%) rename perf/impl/{go => }/https/go.sum (100%) rename perf/impl/{go => }/https/main.go (100%) rename perf/impl/{go => }/https/server (100%) create mode 100644 perf/impl/rust/.gitignore create mode 100644 perf/impl/rust/v0.51/Makefile diff --git a/perf/Makefile b/perf/Makefile new file mode 100644 index 000000000..1e715fe2c --- /dev/null +++ b/perf/Makefile @@ -0,0 +1,17 @@ +GO_SUBDIRS := $(wildcard impl/go/*/.) +RUST_SUBDIRS := $(wildcard impl/rust/*/.) +ZIG_SUBDIRS := $(wildcard impl/zig/*/.) +HTTPS_SUBDIRS := $(wildcard impl/https/.) + +all: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(ZIG_SUBDIRS) $(HTTPS_SUBDIRS) +$(GO_SUBDIRS): + $(MAKE) -C $@ +$(RUST_SUBDIRS): + $(MAKE) -C $@ +$(ZIG_SUBDIRS): + $(MAKE) -C $@ +$(HTTPS_SUBDIRS): + $(MAKE) -C $@ + + +.PHONY: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(ZIG_SUBDIRS) $(HTTPS_SUBDIRS) all diff --git a/perf/impl/go/.gitignore b/perf/impl/go/.gitignore new file mode 100644 index 000000000..6652a25c1 --- /dev/null +++ b/perf/impl/go/.gitignore @@ -0,0 +1,4 @@ +go-libp2p-*.zip +go-libp2p-* +go-libp2p-*/* +image.json diff --git a/perf/impl/go/v0.27/Makefile b/perf/impl/go/v0.27/Makefile new file mode 100644 index 000000000..efaef774f --- /dev/null +++ b/perf/impl/go/v0.27/Makefile @@ -0,0 +1,11 @@ +image_name := go-v0.27 + +image.json: Dockerfile main.go go.mod go.sum + IMAGE_NAME=${image_name} docker build -t ${image_name} . + docker image inspect ${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +.PHONY: clean + +clean: + rm image.json diff --git a/perf/impl/https/.gitignore b/perf/impl/https/.gitignore new file mode 100644 index 000000000..6652a25c1 --- /dev/null +++ b/perf/impl/https/.gitignore @@ -0,0 +1,4 @@ +go-libp2p-*.zip +go-libp2p-* +go-libp2p-*/* +image.json diff --git a/perf/impl/go/https/Dockerfile b/perf/impl/https/Dockerfile similarity index 100% rename from perf/impl/go/https/Dockerfile rename to perf/impl/https/Dockerfile diff --git a/perf/impl/https/Makefile b/perf/impl/https/Makefile new file mode 100644 index 000000000..731064867 --- /dev/null +++ b/perf/impl/https/Makefile @@ -0,0 +1,12 @@ +image_name := https + +all: image.json + +image.json: +# TODO: Consider removing sudo + docker build -t ${image_name} . + docker image inspect ${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +clean: + rm image.json diff --git a/perf/impl/go/https/go.mod b/perf/impl/https/go.mod similarity index 100% rename from perf/impl/go/https/go.mod rename to perf/impl/https/go.mod diff --git a/perf/impl/go/https/go.sum b/perf/impl/https/go.sum similarity index 100% rename from perf/impl/go/https/go.sum rename to perf/impl/https/go.sum diff --git a/perf/impl/go/https/main.go b/perf/impl/https/main.go similarity index 100% rename from perf/impl/go/https/main.go rename to perf/impl/https/main.go diff --git a/perf/impl/go/https/server b/perf/impl/https/server similarity index 100% rename from perf/impl/go/https/server rename to perf/impl/https/server diff --git a/perf/impl/rust/.gitignore b/perf/impl/rust/.gitignore new file mode 100644 index 000000000..3162eca5c --- /dev/null +++ b/perf/impl/rust/.gitignore @@ -0,0 +1,4 @@ +rust-libp2p-*.zip +rust-libp2p-* +rust-libp2p-*/* +image.json \ No newline at end of file diff --git a/perf/impl/rust/v0.51/Makefile b/perf/impl/rust/v0.51/Makefile new file mode 100644 index 000000000..90b2efef4 --- /dev/null +++ b/perf/impl/rust/v0.51/Makefile @@ -0,0 +1,24 @@ +image_name := rust-v0.51 +commitSha := 3aec5e540e22c7be5eb30267bc4d2a197ad9cda3 + +all: image.json + +image.json: rust-libp2p-${commitSha} +# TODO: Consider removing sudo + cd rust-libp2p-${commitSha} && docker build -t ${image_name} -f protocols/perf/Dockerfile . + docker image inspect ${image_name} -f "{{.Id}}" | \ + xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ + +rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip + unzip -o rust-libp2p-${commitSha}.zip + +rust-libp2p-${commitSha}.zip: +# TODO: Change to libp2p + wget -O $@ "https://github.com/mxinden/rust-libp2p/archive/${commitSha}.zip" + +clean: + rm image.json + rm rust-libp2p-*.zip + rm -rf rust-libp2p-* + +.PHONY: all clean diff --git a/perf/runner/.gitignore b/perf/runner/.gitignore index 6a7f7218f..45d48a3e1 100644 --- a/perf/runner/.gitignore +++ b/perf/runner/.gitignore @@ -1,2 +1,3 @@ # Ignore built ts files -dist/**/* \ No newline at end of file +dist/**/* +benchmark-results.json \ No newline at end of file diff --git a/perf/runner/package-lock.json b/perf/runner/package-lock.json index 5c01455df..20894f50c 100644 --- a/perf/runner/package-lock.json +++ b/perf/runner/package-lock.json @@ -14,9 +14,71 @@ "devDependencies": { "@types/node": "^18.15.11", "@types/yargs": "^17.0.24", + "ts-node": "^10.9.1", "typescript": "^5.0.4" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "node_modules/@types/node": { "version": "18.15.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", @@ -38,6 +100,27 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -60,6 +143,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -89,6 +178,21 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -118,6 +222,12 @@ "node": ">=8" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -150,6 +260,49 @@ "node": ">=8" } }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -163,6 +316,12 @@ "node": ">=12.20" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -211,9 +370,73 @@ "engines": { "node": ">=12" } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } } }, "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "@types/node": { "version": "18.15.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", @@ -235,6 +458,18 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -248,6 +483,12 @@ "color-convert": "^2.0.1" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -271,6 +512,18 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -291,6 +544,12 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -314,12 +573,39 @@ "ansi-regex": "^5.0.1" } }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, "typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -353,6 +639,12 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true } } } diff --git a/perf/runner/package.json b/perf/runner/package.json index bf52ccef9..bc320c2ec 100644 --- a/perf/runner/package.json +++ b/perf/runner/package.json @@ -4,14 +4,14 @@ "description": "", "main": "index.js", "scripts": { - "build": "tsc", - "start": "tsc && node ./dist/index.js" + "start": "ts-node src/index.ts" }, "author": "", "license": "ISC", "devDependencies": { "@types/node": "^18.15.11", "@types/yargs": "^17.0.24", + "ts-node": "^10.9.1", "typescript": "^5.0.4" }, "dependencies": { diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 56f5c9b64..35ce6696a 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -4,45 +4,64 @@ import yargs from 'yargs'; import fs from 'fs'; import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; +// TODO: go and zig does multiple requests on a SINGLE connection. + async function main(clientPublicIP: string, serverPublicIP: string) { + for (const version of versions) { + transferDockerImage(serverPublicIP, version.containerImageID); + transferDockerImage(clientPublicIP, version.containerImageID); + } + const benchmarkResults: BenchmarkResults = { benchmarks: [ { - name: "Single Connection throughput – Upload 100 MiB", - unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 100 << 20, - downloadBytes: 0, - nTimes: 1, - }), - comparisons: [], - }, - { - name: "Single Connection throughput – Download 100 MiB", + name: "Dummy", unit: "s", results: runBenchmarkAcrossVersions({ clientPublicIP, serverPublicIP, uploadBytes: 0, - downloadBytes: 100 << 20, + downloadBytes: 0, nTimes: 1, }), comparisons: [], }, - { - name: "Single Connection 1 byte round trip latency", - unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 1, - downloadBytes: 1, - nTimes: 10, - }), - comparisons: [], - } + // { + // name: "Single Connection throughput – Upload 100 MiB", + // unit: "s", + // results: runBenchmarkAcrossVersions({ + // clientPublicIP, + // serverPublicIP, + // uploadBytes: 100 << 20, + // downloadBytes: 0, + // nTimes: 1, + // }), + // comparisons: [], + // }, + // { + // name: "Single Connection throughput – Download 100 MiB", + // unit: "s", + // results: runBenchmarkAcrossVersions({ + // clientPublicIP, + // serverPublicIP, + // uploadBytes: 0, + // downloadBytes: 100 << 20, + // nTimes: 1, + // }), + // comparisons: [], + // }, + // { + // name: "Single Connection 1 byte round trip latency", + // unit: "s", + // results: runBenchmarkAcrossVersions({ + // clientPublicIP, + // serverPublicIP, + // uploadBytes: 1, + // downloadBytes: 1, + // nTimes: 10, + // }), + // comparisons: [], + // } ], }; @@ -63,6 +82,7 @@ interface ArgsRunBenchmarkAcrossVersions { function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { const results: Result[] = []; for (const version of versions) { + // The `if` is a hack for zig. if (version.serverAddress == undefined) { console.error(`Starting ${version.id} server.`); let serverCMD: string @@ -171,6 +191,20 @@ function execCommand(cmd: string): string { } } +async function transferDockerImage(serverIp: string, imageSha256: string): Promise { + const imageName = `image-${imageSha256.slice(0, 12)}`; + const tarballName = `${imageName}.tar`; + + // Save the Docker image as a tarball, transfer it using rsync, load it on the remote server, and clean up tarball files locally. + console.log(`Transferring Docker image ${imageSha256} to ${serverIp}`); + execCommand(`docker save -o ${tarballName} ${imageSha256} && + rsync -avz --progress ./${tarballName} ec2-user@${serverIp}:/tmp/ && + ssh ec2-user@${serverIp} 'docker load -i /tmp/${tarballName}' && + rm ${tarballName}`); + + console.log(`Docker image ${imageSha256} transferred successfully to ${serverIp}`); +} + const argv = yargs .options({ 'client-public-ip': { diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index c3e2f7182..79f77fc4f 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,6 +1,10 @@ +import rustv051 from "../../impl/rust/v0.51/image.json" +import go027 from "../../impl/go/v0.27/image.json" +import https from "../../impl/https/image.json" + export type Version = { id: string, - implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "go-https", + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https", containerImageID: string, transportStacks: string[], serverAddress?: string, @@ -8,28 +12,28 @@ export type Version = { export const versions: Array = [ { - id: "rust-master", + id: "rust-v0.51", implementation: "rust-libp2p", - containerImageID: "mxinden/libp2p-perf@sha256:80ef398de86fbb5be128c51de9900db908341d8ea0a77f9df935f449eb47696b", + containerImageID: rustv051.imageID, transportStacks: ["tcp", "quic-v1"] }, + { + id: "https", + implementation: "https", + containerImageID: https.imageID, + transportStacks: ["tcp"] + }, { id: "go-v0.27.0", implementation: "go-libp2p", - containerImageID: "mxinden/libp2p-perf@sha256:0fb68df50eada9dd10058bd7b6da614f2a31148dc0343be8eb5c7920f7bb4eef", + containerImageID: go027.imageID, transportStacks: ["tcp", "quic-v1"] }, - { - id: "zig-libp2p-v0.0.1", - implementation: "zig-libp2p", - containerImageID: "marcop010/zig-libp2p-perf@sha256:6a9f11961092cbebef93a55f5160fdd8584b7a11957b37b70d513e0948164353", - transportStacks: ["quic-v1"], - // serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" - }, - { - id: "go-https-v0.0.1", - implementation: "go-https", - containerImageID: "mxinden/libp2p-perf@sha256:ca9237cdbdfb13ac68f019bc1373ccfcc207798e461f8e9264d52f981d9d648c", - transportStacks: ["tcp"] - }, + // { + // id: "zig-libp2p-v0.0.1", + // implementation: "zig-libp2p", + // containerImageID: "marcop010/zig-libp2p-perf@sha256:6a9f11961092cbebef93a55f5160fdd8584b7a11957b37b70d513e0948164353", + // transportStacks: ["quic-v1"], + // // serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" + // }, ] diff --git a/perf/runner/tsconfig.json b/perf/runner/tsconfig.json index a1b7fac69..183dbe70f 100644 --- a/perf/runner/tsconfig.json +++ b/perf/runner/tsconfig.json @@ -4,6 +4,7 @@ "module": "commonjs", "outDir": "./dist", "strict": true, + "resolveJsonModule": true, "esModuleInterop": true }, "include": [ From 9686211068515d5b365705ef25d7b62da84b2acd Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 24 Apr 2023 09:04:01 +0200 Subject: [PATCH 056/101] Remove server entry point in favor of --run-server flag --- perf/impl/go/v0.27/Dockerfile | 1 - perf/impl/go/v0.27/server | 2 -- perf/impl/https/Dockerfile | 1 - perf/impl/https/server | 2 -- perf/impl/rust/v0.51/Makefile | 3 ++- perf/runner/src/index.ts | 2 +- 6 files changed, 3 insertions(+), 8 deletions(-) delete mode 100755 perf/impl/go/v0.27/server delete mode 100755 perf/impl/https/server diff --git a/perf/impl/go/v0.27/Dockerfile b/perf/impl/go/v0.27/Dockerfile index d70a84437..5bb5b5aae 100644 --- a/perf/impl/go/v0.27/Dockerfile +++ b/perf/impl/go/v0.27/Dockerfile @@ -10,6 +10,5 @@ RUN go build -o perf . FROM alpine COPY --from=builder /app/perf /app/perf -COPY server /app/server ENTRYPOINT [ "/app/perf" ] diff --git a/perf/impl/go/v0.27/server b/perf/impl/go/v0.27/server deleted file mode 100755 index 59685e5cb..000000000 --- a/perf/impl/go/v0.27/server +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env sh -/app/perf --run-server diff --git a/perf/impl/https/Dockerfile b/perf/impl/https/Dockerfile index 50dbb4d30..eac77ccca 100644 --- a/perf/impl/https/Dockerfile +++ b/perf/impl/https/Dockerfile @@ -10,6 +10,5 @@ RUN go build -o perf . FROM alpine COPY --from=builder /app/perf /app/perf -COPY server /app/server ENTRYPOINT [ "/app/perf" ] \ No newline at end of file diff --git a/perf/impl/https/server b/perf/impl/https/server deleted file mode 100755 index 0372a3d60..000000000 --- a/perf/impl/https/server +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env sh -/app/perf --run-server \ No newline at end of file diff --git a/perf/impl/rust/v0.51/Makefile b/perf/impl/rust/v0.51/Makefile index 90b2efef4..730c22b77 100644 --- a/perf/impl/rust/v0.51/Makefile +++ b/perf/impl/rust/v0.51/Makefile @@ -1,5 +1,6 @@ image_name := rust-v0.51 -commitSha := 3aec5e540e22c7be5eb30267bc4d2a197ad9cda3 +commitSha := cef0f2355aafa41911fbdbcba17ca8a4cb7871d6 + all: image.json diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 35ce6696a..e86c53068 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -90,7 +90,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul // Hack! serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server'`; } else { - serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host --entrypoint /app/server ${version.containerImageID} --secret-key-seed 0'`; + serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server --secret-key-seed 0'`; } console.error(serverCMD); const serverSTDOUT = execCommand(serverCMD); From 760b241921cdf4e0e4ade6701da9414bf19f6566 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 24 Apr 2023 09:27:06 +0200 Subject: [PATCH 057/101] Allow ICMP to test MTU --- perf/terraform/region/main.tf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/perf/terraform/region/main.tf b/perf/terraform/region/main.tf index b83c4ec8b..d4b952d13 100644 --- a/perf/terraform/region/main.tf +++ b/perf/terraform/region/main.tf @@ -69,6 +69,14 @@ resource "aws_security_group" "restricted_inbound" { description = "Allow SSH and port 4001 inbound traffic (TCP and UDP), allow all outbound traffic" vpc_id = aws_vpc.perf.id + # ICMP + ingress { + from_port = -1 + to_port = -1 + protocol = "icmp" + cidr_blocks = ["0.0.0.0/0"] + } + # SSH (TCP) ingress { from_port = 22 From efe7f6ea44fdaba83aa513d31a90cb2d1b6323e4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 24 Apr 2023 10:03:02 +0200 Subject: [PATCH 058/101] Move perf-dashboard to perf/dashboard --- {perf-dashboard => perf/dashboard}/README.md | 0 {perf-dashboard => perf/dashboard}/benchmark-result-type.ts | 0 {perf-dashboard => perf/dashboard}/benchmarks.schema.json | 0 {perf-dashboard => perf/dashboard}/example-data.json | 0 {perf-dashboard => perf/dashboard}/util/.gitignore | 0 {perf-dashboard => perf/dashboard}/util/README.md | 0 {perf-dashboard => perf/dashboard}/util/main.ts | 0 {perf-dashboard => perf/dashboard}/util/package-lock.json | 0 {perf-dashboard => perf/dashboard}/util/package.json | 0 {perf-dashboard => perf/dashboard}/util/tsconfig.json | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename {perf-dashboard => perf/dashboard}/README.md (100%) rename {perf-dashboard => perf/dashboard}/benchmark-result-type.ts (100%) rename {perf-dashboard => perf/dashboard}/benchmarks.schema.json (100%) rename {perf-dashboard => perf/dashboard}/example-data.json (100%) rename {perf-dashboard => perf/dashboard}/util/.gitignore (100%) rename {perf-dashboard => perf/dashboard}/util/README.md (100%) rename {perf-dashboard => perf/dashboard}/util/main.ts (100%) rename {perf-dashboard => perf/dashboard}/util/package-lock.json (100%) rename {perf-dashboard => perf/dashboard}/util/package.json (100%) rename {perf-dashboard => perf/dashboard}/util/tsconfig.json (100%) diff --git a/perf-dashboard/README.md b/perf/dashboard/README.md similarity index 100% rename from perf-dashboard/README.md rename to perf/dashboard/README.md diff --git a/perf-dashboard/benchmark-result-type.ts b/perf/dashboard/benchmark-result-type.ts similarity index 100% rename from perf-dashboard/benchmark-result-type.ts rename to perf/dashboard/benchmark-result-type.ts diff --git a/perf-dashboard/benchmarks.schema.json b/perf/dashboard/benchmarks.schema.json similarity index 100% rename from perf-dashboard/benchmarks.schema.json rename to perf/dashboard/benchmarks.schema.json diff --git a/perf-dashboard/example-data.json b/perf/dashboard/example-data.json similarity index 100% rename from perf-dashboard/example-data.json rename to perf/dashboard/example-data.json diff --git a/perf-dashboard/util/.gitignore b/perf/dashboard/util/.gitignore similarity index 100% rename from perf-dashboard/util/.gitignore rename to perf/dashboard/util/.gitignore diff --git a/perf-dashboard/util/README.md b/perf/dashboard/util/README.md similarity index 100% rename from perf-dashboard/util/README.md rename to perf/dashboard/util/README.md diff --git a/perf-dashboard/util/main.ts b/perf/dashboard/util/main.ts similarity index 100% rename from perf-dashboard/util/main.ts rename to perf/dashboard/util/main.ts diff --git a/perf-dashboard/util/package-lock.json b/perf/dashboard/util/package-lock.json similarity index 100% rename from perf-dashboard/util/package-lock.json rename to perf/dashboard/util/package-lock.json diff --git a/perf-dashboard/util/package.json b/perf/dashboard/util/package.json similarity index 100% rename from perf-dashboard/util/package.json rename to perf/dashboard/util/package.json diff --git a/perf-dashboard/util/tsconfig.json b/perf/dashboard/util/tsconfig.json similarity index 100% rename from perf-dashboard/util/tsconfig.json rename to perf/dashboard/util/tsconfig.json From 75d7634a045d3e540f09f3733258de92ffe40f74 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 24 Apr 2023 10:22:24 +0200 Subject: [PATCH 059/101] Adjust single connection benchmark behavior --- perf/impl/rust/v0.51/Makefile | 3 +-- perf/runner/src/index.ts | 46 +++++++++++++++++------------------ 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/perf/impl/rust/v0.51/Makefile b/perf/impl/rust/v0.51/Makefile index 730c22b77..21b4461da 100644 --- a/perf/impl/rust/v0.51/Makefile +++ b/perf/impl/rust/v0.51/Makefile @@ -1,6 +1,5 @@ image_name := rust-v0.51 -commitSha := cef0f2355aafa41911fbdbcba17ca8a4cb7871d6 - +commitSha := 66a28b37d8deb4d0e38e61f5d3ca0d34368f5770 all: image.json diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index e86c53068..6ba3662ba 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -4,8 +4,6 @@ import yargs from 'yargs'; import fs from 'fs'; import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; -// TODO: go and zig does multiple requests on a SINGLE connection. - async function main(clientPublicIP: string, serverPublicIP: string) { for (const version of versions) { transferDockerImage(serverPublicIP, version.containerImageID); @@ -14,54 +12,54 @@ async function main(clientPublicIP: string, serverPublicIP: string) { const benchmarkResults: BenchmarkResults = { benchmarks: [ - { - name: "Dummy", - unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 0, - downloadBytes: 0, - nTimes: 1, - }), - comparisons: [], - }, // { - // name: "Single Connection throughput – Upload 100 MiB", + // name: "Dummy", // unit: "s", // results: runBenchmarkAcrossVersions({ // clientPublicIP, // serverPublicIP, - // uploadBytes: 100 << 20, + // uploadBytes: 0, // downloadBytes: 0, // nTimes: 1, // }), // comparisons: [], // }, // { - // name: "Single Connection throughput – Download 100 MiB", + // name: "Single Connection throughput – Upload 100 MiB", // unit: "s", // results: runBenchmarkAcrossVersions({ // clientPublicIP, // serverPublicIP, - // uploadBytes: 0, - // downloadBytes: 100 << 20, + // uploadBytes: 100 << 20, + // downloadBytes: 0, // nTimes: 1, // }), // comparisons: [], // }, // { - // name: "Single Connection 1 byte round trip latency", + // name: "Single Connection throughput – Download 100 MiB", // unit: "s", // results: runBenchmarkAcrossVersions({ // clientPublicIP, // serverPublicIP, - // uploadBytes: 1, - // downloadBytes: 1, - // nTimes: 10, + // uploadBytes: 0, + // downloadBytes: 100 << 20, + // nTimes: 1, // }), // comparisons: [], - // } + // }, + { + name: "Single Connection, n 1 byte round trip latencies", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 1, + downloadBytes: 1, + nTimes: 10, + }), + comparisons: [], + } ], }; From 274e62b96dd4e8f2deaabb3b31fff7b762d43cec Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 27 Apr 2023 15:57:39 +0900 Subject: [PATCH 060/101] Commit benchmark-results.json --- perf/runner/.gitignore | 3 +- perf/runner/benchmark-results.json | 190 +++++++++++++++++++++++++++++ perf/runner/src/index.ts | 50 ++++---- 3 files changed, 216 insertions(+), 27 deletions(-) create mode 100644 perf/runner/benchmark-results.json diff --git a/perf/runner/.gitignore b/perf/runner/.gitignore index 45d48a3e1..6a7f7218f 100644 --- a/perf/runner/.gitignore +++ b/perf/runner/.gitignore @@ -1,3 +1,2 @@ # Ignore built ts files -dist/**/* -benchmark-results.json \ No newline at end of file +dist/**/* \ No newline at end of file diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json new file mode 100644 index 000000000..b50f9e3bf --- /dev/null +++ b/perf/runner/benchmark-results.json @@ -0,0 +1,190 @@ +{ + "benchmarks": [ + { + "name": "Single Connection throughput – Upload 100 MiB", + "unit": "s", + "results": [ + { + "result": [ + 41.098043167 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "tcp" + }, + { + "result": [ + 13.449494152 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "quic-v1" + }, + { + "result": [ + 2.8256333 + ], + "implementation": "https", + "version": "https", + "transportStack": "tcp" + }, + { + "result": [ + 2.9791832 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "tcp" + }, + { + "result": [ + 1.3350164 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "quic-v1" + } + ], + "comparisons": [] + }, + { + "name": "Single Connection throughput – Download 100 MiB", + "unit": "s", + "results": [ + { + "result": [ + 34.715031397 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "tcp" + }, + { + "result": [ + 14.05263423 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "quic-v1" + }, + { + "result": [ + 2.8607457 + ], + "implementation": "https", + "version": "https", + "transportStack": "tcp" + }, + { + "result": [ + 3.104271 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "tcp" + }, + { + "result": [ + 1.355488 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "quic-v1" + } + ], + "comparisons": [] + }, + { + "name": "Single Connection, n sequential 1 byte round trip latencies", + "unit": "s", + "results": [ + { + "result": [ + 0.12692197, + 0.126828624, + 0.126759373, + 0.126712122, + 0.126815625, + 0.126758252, + 0.126737014, + 0.126667496, + 0.126680218, + 0.12669882 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "tcp" + }, + { + "result": [ + 0.12562123, + 0.125127867, + 0.125152325, + 0.125205034, + 0.125154511, + 0.125183496, + 0.125154703, + 0.125141522, + 0.125191054, + 0.125227742 + ], + "implementation": "rust-libp2p", + "version": "rust-v0.51", + "transportStack": "quic-v1" + }, + { + "result": [ + 0.19480446, + 0.063601434, + 0.0634733, + 0.06349056, + 0.06353159, + 0.06350989, + 0.06343663, + 0.06342832, + 0.063414305, + 0.063426375 + ], + "implementation": "https", + "version": "https", + "transportStack": "tcp" + }, + { + "result": [ + 0.12248421, + 0.061669473, + 0.061632466, + 0.061567824, + 0.06166743, + 0.061573148, + 0.06154374, + 0.061550982, + 0.06156597, + 0.061559618 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "tcp" + }, + { + "result": [ + 0.06322579, + 0.06305969, + 0.063022934, + 0.06300724, + 0.06302576, + 0.063024364, + 0.06301455, + 0.06300056, + 0.06299013, + 0.06297389 + ], + "implementation": "go-libp2p", + "version": "go-v0.27.0", + "transportStack": "quic-v1" + } + ], + "comparisons": [] + } + ] +} \ No newline at end of file diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 6ba3662ba..63705becf 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -24,32 +24,32 @@ async function main(clientPublicIP: string, serverPublicIP: string) { // }), // comparisons: [], // }, - // { - // name: "Single Connection throughput – Upload 100 MiB", - // unit: "s", - // results: runBenchmarkAcrossVersions({ - // clientPublicIP, - // serverPublicIP, - // uploadBytes: 100 << 20, - // downloadBytes: 0, - // nTimes: 1, - // }), - // comparisons: [], - // }, - // { - // name: "Single Connection throughput – Download 100 MiB", - // unit: "s", - // results: runBenchmarkAcrossVersions({ - // clientPublicIP, - // serverPublicIP, - // uploadBytes: 0, - // downloadBytes: 100 << 20, - // nTimes: 1, - // }), - // comparisons: [], - // }, { - name: "Single Connection, n 1 byte round trip latencies", + name: "Single Connection throughput – Upload 100 MiB", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 100 << 20, + downloadBytes: 0, + nTimes: 1, + }), + comparisons: [], + }, + { + name: "Single Connection throughput – Download 100 MiB", + unit: "s", + results: runBenchmarkAcrossVersions({ + clientPublicIP, + serverPublicIP, + uploadBytes: 0, + downloadBytes: 100 << 20, + nTimes: 1, + }), + comparisons: [], + }, + { + name: "Single Connection, n sequential 1 byte round trip latencies", unit: "s", results: runBenchmarkAcrossVersions({ clientPublicIP, From 6dfb186a6bffd54fe7272a39e6bb0eea7898cee1 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 28 Apr 2023 16:52:53 +0900 Subject: [PATCH 061/101] Don't ignore unit --- perf/runner/benchmark-results.json | 120 +++++++++++------------ perf/runner/src/benchmark-result-type.ts | 2 +- perf/runner/src/index.ts | 14 ++- 3 files changed, 74 insertions(+), 62 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index b50f9e3bf..04bc59b1a 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,7 +6,7 @@ "results": [ { "result": [ - 41.098043167 + 23406159.544796765 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -14,7 +14,7 @@ }, { "result": [ - 13.449494152 + 39428121.20790879 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -22,7 +22,7 @@ }, { "result": [ - 2.8256333 + 304945724.4676996 ], "implementation": "https", "version": "https", @@ -30,7 +30,7 @@ }, { "result": [ - 2.9791832 + 284325146.50597924 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -38,7 +38,7 @@ }, { "result": [ - 1.3350164 + 599265431.5559248 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -53,7 +53,7 @@ "results": [ { "result": [ - 34.715031397 + 23961404.991889708 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -61,7 +61,7 @@ }, { "result": [ - 14.05263423 + 103128478.99271105 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -69,7 +69,7 @@ }, { "result": [ - 2.8607457 + 284641600.6801043 ], "implementation": "https", "version": "https", @@ -77,7 +77,7 @@ }, { "result": [ - 3.104271 + 257791829.43948787 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -85,7 +85,7 @@ }, { "result": [ - 1.355488 + 625794439.4868261 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -100,16 +100,16 @@ "results": [ { "result": [ - 0.12692197, - 0.126828624, - 0.126759373, - 0.126712122, - 0.126815625, - 0.126758252, - 0.126737014, - 0.126667496, - 0.126680218, - 0.12669882 + 0.124772602, + 0.124641525, + 0.12467174, + 0.124650239, + 0.124581189, + 0.124664834, + 0.124593654, + 0.124647765, + 0.12462795, + 0.124649686 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -117,16 +117,16 @@ }, { "result": [ - 0.12562123, - 0.125127867, - 0.125152325, - 0.125205034, - 0.125154511, - 0.125183496, - 0.125154703, - 0.125141522, - 0.125191054, - 0.125227742 + 0.125645928, + 0.125200758, + 0.125231605, + 0.125165499, + 0.125179056, + 0.125157424, + 0.125163505, + 0.12517943, + 0.125181199, + 0.125153868 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -134,16 +134,16 @@ }, { "result": [ - 0.19480446, - 0.063601434, - 0.0634733, - 0.06349056, - 0.06353159, - 0.06350989, - 0.06343663, - 0.06342832, - 0.063414305, - 0.063426375 + 0.18095565, + 0.05944898, + 0.05928111, + 0.059358, + 0.05925588, + 0.05928937, + 0.059299465, + 0.059299897, + 0.059323523, + 0.05930088 ], "implementation": "https", "version": "https", @@ -151,16 +151,16 @@ }, { "result": [ - 0.12248421, - 0.061669473, - 0.061632466, - 0.061567824, - 0.06166743, - 0.061573148, - 0.06154374, - 0.061550982, - 0.06156597, - 0.061559618 + 0.12598644, + 0.0634478, + 0.063379124, + 0.06350212, + 0.06339974, + 0.06331283, + 0.06329939, + 0.06339211, + 0.06339262, + 0.06339976 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -168,16 +168,16 @@ }, { "result": [ - 0.06322579, - 0.06305969, - 0.063022934, - 0.06300724, - 0.06302576, - 0.063024364, - 0.06301455, - 0.06300056, - 0.06299013, - 0.06297389 + 0.062408023, + 0.062327057, + 0.062376957, + 0.06230008, + 0.06228861, + 0.06228707, + 0.062292684, + 0.06227601, + 0.06226655, + 0.062255222 ], "implementation": "go-libp2p", "version": "go-v0.27.0", diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index 4d8469e33..db618af46 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -6,7 +6,7 @@ export type BenchmarkResults = { export type Benchmark = { name: string, - unit: "bits/s" | "s", + unit: "bit/s" | "s", results: Result[], comparisons: Comparison[], diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 63705becf..0d6fdabb4 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -21,6 +21,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { // uploadBytes: 0, // downloadBytes: 0, // nTimes: 1, + // unit: "s", // }), // comparisons: [], // }, @@ -33,6 +34,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 100 << 20, downloadBytes: 0, nTimes: 1, + unit: "bit/s", }), comparisons: [], }, @@ -45,6 +47,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 0, downloadBytes: 100 << 20, nTimes: 1, + unit: "bit/s", }), comparisons: [], }, @@ -57,6 +60,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 1, downloadBytes: 1, nTimes: 10, + unit: "s", }), comparisons: [], } @@ -75,6 +79,7 @@ interface ArgsRunBenchmarkAcrossVersions { uploadBytes: number, downloadBytes: number, nTimes: number, + unit: "bit/s" | "s", } function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { @@ -105,10 +110,17 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul uploadBytes: args.uploadBytes, downloadBytes: args.downloadBytes, nTimes: args.nTimes, + }).latencies.map(l => { + switch(args.unit) { + case "bit/s": + return (args.uploadBytes + args.downloadBytes) * 8 / l; + case "s": + return l; + } }); results.push({ - result: latencies.latencies, + result: latencies, implementation: version.implementation, version: version.id, transportStack: transportStack, From a265a2d478fd2b39a1beb2eeb6902cef70208a4c Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 28 Apr 2023 17:37:38 +0900 Subject: [PATCH 062/101] Measure connection establishment + 1 byte round trip latencies --- perf/runner/benchmark-results.json | 572 ++++++++++++++++++++++++++--- perf/runner/src/index.ts | 56 +-- 2 files changed, 539 insertions(+), 89 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 04bc59b1a..e08485c25 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,7 +6,7 @@ "results": [ { "result": [ - 23406159.544796765 + 23689393.36269186 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -14,7 +14,7 @@ }, { "result": [ - 39428121.20790879 + 93045362.68786794 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -22,7 +22,7 @@ }, { "result": [ - 304945724.4676996 + 295248144.62590885 ], "implementation": "https", "version": "https", @@ -30,7 +30,7 @@ }, { "result": [ - 284325146.50597924 + 265912739.71105927 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -38,7 +38,7 @@ }, { "result": [ - 599265431.5559248 + 606427199.744145 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -53,7 +53,7 @@ "results": [ { "result": [ - 23961404.991889708 + 20508406.28717806 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -61,7 +61,7 @@ }, { "result": [ - 103128478.99271105 + 32462306.61655686 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -69,7 +69,7 @@ }, { "result": [ - 284641600.6801043 + 298499674.5849223 ], "implementation": "https", "version": "https", @@ -77,7 +77,7 @@ }, { "result": [ - 257791829.43948787 + 279285263.9925077 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -85,7 +85,7 @@ }, { "result": [ - 625794439.4868261 + 631227577.9202543 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -95,21 +95,111 @@ "comparisons": [] }, { - "name": "Single Connection, n sequential 1 byte round trip latencies", + "name": "Connection establishment + 1 byte round trip latencies", "unit": "s", "results": [ { "result": [ - 0.124772602, - 0.124641525, - 0.12467174, - 0.124650239, - 0.124581189, - 0.124664834, - 0.124593654, - 0.124647765, - 0.12462795, - 0.124649686 + 0.126319235, + 0.126144079, + 0.12323905, + 0.126985715, + 0.118083106, + 0.125713184, + 0.12444581, + 0.129616664, + 0.124222977, + 0.117873216, + 0.121232909, + 0.125176963, + 0.126967664, + 0.122178806, + 0.120848342, + 0.123407271, + 0.120451258, + 0.123857808, + 0.124623495, + 0.122337585, + 0.130050177, + 0.127196104, + 0.120209259, + 0.126086226, + 0.12259621, + 0.124133489, + 0.124052016, + 0.125602548, + 0.128480963, + 0.122221839, + 0.126966125, + 0.127126564, + 0.12295845, + 0.117784544, + 0.124938957, + 0.125154616, + 0.126476209, + 0.127956008, + 0.1212722, + 0.119980682, + 0.12088224, + 0.121374751, + 0.125835187, + 0.12741777, + 0.124113976, + 0.129369583, + 0.124089832, + 0.128454752, + 0.128247396, + 0.119842345, + 0.122610332, + 0.122601458, + 0.121542511, + 0.119260472, + 0.122646356, + 0.127074697, + 0.128064286, + 0.121047425, + 0.125377904, + 0.124761456, + 0.128204003, + 0.123707214, + 0.126071867, + 0.126546918, + 0.1203823, + 0.125205751, + 0.118166226, + 0.124503386, + 0.123978061, + 0.124960025, + 0.119649975, + 0.120982777, + 0.127676478, + 0.123837896, + 0.129837512, + 0.124997513, + 0.128323826, + 0.123142751, + 0.126843243, + 0.126019653, + 0.127250978, + 0.125240283, + 0.12674315, + 0.123968618, + 0.115925532, + 0.127374254, + 0.123263492, + 0.124790723, + 0.127159029, + 0.127309295, + 0.12519301, + 0.123486563, + 0.125976516, + 0.128058665, + 0.124028392, + 0.126626596, + 0.127671672, + 0.124591722, + 0.122582402, + 0.125526278 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -117,16 +207,106 @@ }, { "result": [ - 0.125645928, - 0.125200758, - 0.125231605, - 0.125165499, - 0.125179056, - 0.125157424, - 0.125163505, - 0.12517943, - 0.125181199, - 0.125153868 + 0.122543827, + 0.127092806, + 0.127011856, + 0.12281347, + 0.117444623, + 0.12350014, + 0.126948171, + 0.123311315, + 0.128964689, + 0.125625745, + 0.122593846, + 0.123006218, + 0.128376547, + 0.12277935, + 0.12600483, + 0.118549991, + 0.125331326, + 0.119459264, + 0.126413229, + 0.122420952, + 0.118519981, + 0.130097044, + 0.125840275, + 0.126526868, + 0.122413416, + 0.125574993, + 0.12518833, + 0.12595883, + 0.125565734, + 0.118738583, + 0.127872834, + 0.125746162, + 0.123202846, + 0.123291211, + 0.118350345, + 0.12642703, + 0.119797854, + 0.126859721, + 0.126554041, + 0.12842541, + 0.120505089, + 0.119439547, + 0.127376052, + 0.127270792, + 0.124580339, + 0.125233136, + 0.125029362, + 0.126664745, + 0.12299203, + 0.120487189, + 0.116249103, + 0.128941914, + 0.123014041, + 0.128777967, + 0.127129936, + 0.121659861, + 0.121347096, + 0.126114891, + 0.128108861, + 0.128957541, + 0.125655787, + 0.127098252, + 0.11633541, + 0.118214435, + 0.126284329, + 0.120242618, + 0.124033286, + 0.122358962, + 0.121389239, + 0.121621816, + 0.128790363, + 0.124597393, + 0.127546464, + 0.122813675, + 0.122599769, + 0.127564185, + 0.126530663, + 0.122913285, + 0.121208338, + 0.128789751, + 0.117784612, + 0.123544932, + 0.130254739, + 0.118280526, + 0.125662506, + 0.126502155, + 0.121901033, + 0.124632174, + 0.118801743, + 0.121895381, + 0.12476507, + 0.12805682, + 0.121644671, + 0.126667883, + 0.124941801, + 0.125911196, + 0.129148188, + 0.119740007, + 0.1253032, + 0.127030932 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -134,16 +314,106 @@ }, { "result": [ - 0.18095565, - 0.05944898, - 0.05928111, - 0.059358, - 0.05925588, - 0.05928937, - 0.059299465, - 0.059299897, - 0.059323523, - 0.05930088 + 0.1884588, + 0.18756714, + 0.18300873, + 0.1936415, + 0.18156292, + 0.19067459, + 0.19769268, + 0.18656383, + 0.17837767, + 0.19460449, + 0.17657135, + 0.18910603, + 0.18485719, + 0.19088127, + 0.19560757, + 0.18177089, + 0.18868802, + 0.18856184, + 0.19105303, + 0.18880497, + 0.19321439, + 0.19345047, + 0.18769683, + 0.18487263, + 0.17981295, + 0.19212057, + 0.18694794, + 0.19257876, + 0.19548361, + 0.19591156, + 0.18226886, + 0.18280998, + 0.18057576, + 0.17874339, + 0.1932511, + 0.18708573, + 0.1950071, + 0.18806437, + 0.18655427, + 0.18641932, + 0.19514948, + 0.1959758, + 0.18190429, + 0.17720412, + 0.18691242, + 0.18178862, + 0.18175964, + 0.1881124, + 0.19493204, + 0.19136153, + 0.19619612, + 0.18911907, + 0.18776011, + 0.19090895, + 0.18848054, + 0.19609065, + 0.18877506, + 0.19381407, + 0.18677415, + 0.18977772, + 0.18802643, + 0.19339806, + 0.18219492, + 0.18959786, + 0.19078787, + 0.1894444, + 0.19280326, + 0.1858661, + 0.19484885, + 0.18035181, + 0.18633182, + 0.1868423, + 0.1804054, + 0.18347643, + 0.18067311, + 0.18760788, + 0.18179734, + 0.19659987, + 0.18166326, + 0.19459605, + 0.1829563, + 0.1951969, + 0.1953983, + 0.18802923, + 0.1836824, + 0.19265597, + 0.18820585, + 0.1936625, + 0.19276579, + 0.17885067, + 0.18569484, + 0.18491744, + 0.19376439, + 0.1853479, + 0.18714498, + 0.18907069, + 0.18930666, + 0.18393388, + 0.19271532, + 0.19143309 ], "implementation": "https", "version": "https", @@ -151,16 +421,106 @@ }, { "result": [ - 0.12598644, - 0.0634478, - 0.063379124, - 0.06350212, - 0.06339974, - 0.06331283, - 0.06329939, - 0.06339211, - 0.06339262, - 0.06339976 + 0.12460541, + 0.06338739, + 0.060049094, + 0.12534183, + 0.06282792, + 0.12473893, + 0.123850085, + 0.061622698, + 0.124618195, + 0.12683493, + 0.06393353, + 0.11986306, + 0.12737766, + 0.06417233, + 0.126642, + 0.06333116, + 0.062203553, + 0.06355419, + 0.12368787, + 0.12854455, + 0.065005094, + 0.12189147, + 0.061708663, + 0.063397095, + 0.12363864, + 0.06245074, + 0.060843397, + 0.06305268, + 0.12158299, + 0.062071208, + 0.06400568, + 0.12168055, + 0.063808165, + 0.12591682, + 0.061409816, + 0.11779677, + 0.062342245, + 0.12656265, + 0.061757687, + 0.11773071, + 0.12370392, + 0.11993875, + 0.06118508, + 0.06278617, + 0.062142137, + 0.124610744, + 0.12213743, + 0.06137961, + 0.06265603, + 0.06284346, + 0.061817326, + 0.1258655, + 0.06183856, + 0.06289108, + 0.064864665, + 0.12664138, + 0.12846307, + 0.121588096, + 0.061272167, + 0.1261858, + 0.062228348, + 0.059017688, + 0.06450957, + 0.06075087, + 0.059225857, + 0.06335085, + 0.06388441, + 0.059180457, + 0.062583424, + 0.11892876, + 0.11927323, + 0.06371338, + 0.061664425, + 0.12375551, + 0.06225097, + 0.121605955, + 0.12460672, + 0.12971939, + 0.060148764, + 0.123078205, + 0.06143858, + 0.061138, + 0.11919744, + 0.13003084, + 0.11934041, + 0.05848857, + 0.06244507, + 0.061119255, + 0.06357628, + 0.1233313, + 0.12428866, + 0.119413674, + 0.12215978, + 0.060937118, + 0.061882664, + 0.063023865, + 0.1286349, + 0.11981622, + 0.12242536, + 0.12898855 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -168,16 +528,106 @@ }, { "result": [ - 0.062408023, - 0.062327057, - 0.062376957, - 0.06230008, - 0.06228861, - 0.06228707, - 0.062292684, - 0.06227601, - 0.06226655, - 0.062255222 + 0.062081397, + 0.06375749, + 0.058778632, + 0.06496431, + 0.059300344, + 0.064085774, + 0.062336672, + 0.060751226, + 0.05926829, + 0.060248934, + 0.06266038, + 0.060531963, + 0.06149564, + 0.062249243, + 0.062247727, + 0.06292039, + 0.061806973, + 0.06481583, + 0.06136999, + 0.06324397, + 0.06510487, + 0.06120873, + 0.06061488, + 0.06371168, + 0.060612608, + 0.0600205, + 0.06331719, + 0.061534096, + 0.06007528, + 0.06160426, + 0.061419323, + 0.060130056, + 0.06376396, + 0.0638334, + 0.062379222, + 0.062089693, + 0.059746526, + 0.06131145, + 0.06275574, + 0.062170308, + 0.060669128, + 0.05972382, + 0.061504025, + 0.059780255, + 0.06165352, + 0.06170672, + 0.061490387, + 0.06243981, + 0.06246258, + 0.061520863, + 0.061153352, + 0.05962738, + 0.062306397, + 0.0650918, + 0.061314303, + 0.06424656, + 0.059145585, + 0.06277721, + 0.06420389, + 0.06322815, + 0.06254778, + 0.06056936, + 0.061299443, + 0.06358756, + 0.06076693, + 0.0640196, + 0.06335136, + 0.059180327, + 0.061590698, + 0.06332971, + 0.060137033, + 0.06171905, + 0.06153724, + 0.06268148, + 0.06376706, + 0.06443098, + 0.063577496, + 0.060746897, + 0.062080245, + 0.06451008, + 0.062860094, + 0.06262935, + 0.06121269, + 0.06163481, + 0.062346857, + 0.06360294, + 0.06312665, + 0.06285668, + 0.06282775, + 0.06316835, + 0.06440914, + 0.06345475, + 0.062310416, + 0.062573135, + 0.059951175, + 0.062110145, + 0.063234456, + 0.06274714, + 0.062973484, + 0.06406037 ], "implementation": "go-libp2p", "version": "go-v0.27.0", diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 0d6fdabb4..c0cc355ff 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -20,8 +20,8 @@ async function main(clientPublicIP: string, serverPublicIP: string) { // serverPublicIP, // uploadBytes: 0, // downloadBytes: 0, - // nTimes: 1, // unit: "s", + // iterations: 1, // }), // comparisons: [], // }, @@ -33,8 +33,8 @@ async function main(clientPublicIP: string, serverPublicIP: string) { serverPublicIP, uploadBytes: 100 << 20, downloadBytes: 0, - nTimes: 1, unit: "bit/s", + iterations: 1, }), comparisons: [], }, @@ -46,31 +46,31 @@ async function main(clientPublicIP: string, serverPublicIP: string) { serverPublicIP, uploadBytes: 0, downloadBytes: 100 << 20, - nTimes: 1, unit: "bit/s", + iterations: 1, }), comparisons: [], }, { - name: "Single Connection, n sequential 1 byte round trip latencies", + name: "Connection establishment + 1 byte round trip latencies", unit: "s", results: runBenchmarkAcrossVersions({ clientPublicIP, serverPublicIP, uploadBytes: 1, downloadBytes: 1, - nTimes: 10, unit: "s", + iterations: 100, }), comparisons: [], } ], }; - console.log(JSON.stringify(benchmarkResults, null, 2)); - // Save results to benchmark-results.json fs.writeFileSync('./benchmark-results.json', JSON.stringify(benchmarkResults, null, 2)); + + console.error("== done"); } interface ArgsRunBenchmarkAcrossVersions { @@ -78,8 +78,8 @@ interface ArgsRunBenchmarkAcrossVersions { serverPublicIP: string; uploadBytes: number, downloadBytes: number, - nTimes: number, unit: "bit/s" | "s", + iterations: number, } function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { @@ -87,7 +87,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul for (const version of versions) { // The `if` is a hack for zig. if (version.serverAddress == undefined) { - console.error(`Starting ${version.id} server.`); + console.error(`== Starting ${version.id} server.`); let serverCMD: string if (version.implementation === "zig-libp2p") { // Hack! @@ -95,7 +95,6 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul } else { serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server --secret-key-seed 0'`; } - console.error(serverCMD); const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); } @@ -109,7 +108,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul transportStack: transportStack, uploadBytes: args.uploadBytes, downloadBytes: args.downloadBytes, - nTimes: args.nTimes, + iterations: args.iterations, }).latencies.map(l => { switch(args.unit) { case "bit/s": @@ -139,7 +138,7 @@ interface ArgsRunBenchmark { transportStack: string, uploadBytes: number, downloadBytes: number, - nTimes: number, + iterations: number, } interface Latencies { @@ -148,7 +147,7 @@ interface Latencies { function runBenchmark(args: ArgsRunBenchmark): Latencies { - console.error(`Starting ${args.transportStack} client.`); + console.error(`=== Starting ${args.transportStack} client.`); let serverAddress = args.serverAddress; @@ -168,24 +167,25 @@ function runBenchmark(args: ArgsRunBenchmark): Latencies { serverAddress = serverAddress + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN"; } - const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times ${args.nTimes}` - // TODO Take docker hub repository from version.ts + // TODO: Remove static --n-times. + const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` const dockerCMD = `docker run --init --rm --network host ${args.dockerImageId} ${binFlags}` - const cmd = `ssh ec2-user@${args.clientPublicIP} ${dockerCMD}`; - console.log("Running command:", cmd); + const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${dockerCMD}; done'` const stdout = execCommand(cmd); - console.log("Stdout from client:", stdout.toString(), JSON.parse(stdout.toString())); - const parsedStdout = JSON.parse(stdout.toString()); - - let latencies: Latencies - if (Array.isArray(parsedStdout)) { - latencies = { latencies: parsedStdout } - } else { - latencies = parsedStdout + // TODO: Does it really still make sense for the binary to return an array? + const lines = stdout.toString().trim().split('\n'); + + const combined: Latencies = { + latencies: [], + }; + + for (const line of lines) { + const latencies = JSON.parse(line) as Latencies; + combined.latencies.push(...latencies.latencies); } - return latencies; + return combined; } function execCommand(cmd: string): string { @@ -206,13 +206,13 @@ async function transferDockerImage(serverIp: string, imageSha256: string): Promi const tarballName = `${imageName}.tar`; // Save the Docker image as a tarball, transfer it using rsync, load it on the remote server, and clean up tarball files locally. - console.log(`Transferring Docker image ${imageSha256} to ${serverIp}`); + console.error(`== Transferring Docker image ${imageSha256} to ${serverIp}`); execCommand(`docker save -o ${tarballName} ${imageSha256} && rsync -avz --progress ./${tarballName} ec2-user@${serverIp}:/tmp/ && ssh ec2-user@${serverIp} 'docker load -i /tmp/${tarballName}' && rm ${tarballName}`); - console.log(`Docker image ${imageSha256} transferred successfully to ${serverIp}`); + console.error(`=== Docker image ${imageSha256} transferred successfully to ${serverIp}`); } const argv = yargs From 0732aa8a5e34c50b91f25c0148c1ae5bca317afc Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 28 Apr 2023 18:11:48 +0900 Subject: [PATCH 063/101] Fix units --- perf/runner/benchmark-results.json | 1035 +++++++++++----------- perf/runner/src/benchmark-result-type.ts | 2 - perf/runner/src/index.ts | 87 +- 3 files changed, 552 insertions(+), 572 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index e08485c25..d59664ffd 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -2,11 +2,11 @@ "benchmarks": [ { "name": "Single Connection throughput – Upload 100 MiB", - "unit": "s", + "unit": "bit/s", "results": [ { "result": [ - 23689393.36269186 + 24350509.655656375 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -14,7 +14,7 @@ }, { "result": [ - 93045362.68786794 + 60663340.88260239 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -22,7 +22,7 @@ }, { "result": [ - 295248144.62590885 + 293240024.41811824 ], "implementation": "https", "version": "https", @@ -30,7 +30,7 @@ }, { "result": [ - 265912739.71105927 + 264059213.2216462 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -38,22 +38,21 @@ }, { "result": [ - 606427199.744145 + 615340873.6224145 ], "implementation": "go-libp2p", "version": "go-v0.27.0", "transportStack": "quic-v1" } - ], - "comparisons": [] + ] }, { "name": "Single Connection throughput – Download 100 MiB", - "unit": "s", + "unit": "bit/s", "results": [ { "result": [ - 20508406.28717806 + 19440868.43741449 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -61,7 +60,7 @@ }, { "result": [ - 32462306.61655686 + 45763061.98269354 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -69,7 +68,7 @@ }, { "result": [ - 298499674.5849223 + 302546864.6759939 ], "implementation": "https", "version": "https", @@ -77,7 +76,7 @@ }, { "result": [ - 279285263.9925077 + 297542786.14435023 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -85,121 +84,120 @@ }, { "result": [ - 631227577.9202543 + 601906170.7198751 ], "implementation": "go-libp2p", "version": "go-v0.27.0", "transportStack": "quic-v1" } - ], - "comparisons": [] + ] }, { "name": "Connection establishment + 1 byte round trip latencies", - "unit": "s", + "unit": "bit/s", "results": [ { "result": [ - 0.126319235, - 0.126144079, - 0.12323905, - 0.126985715, - 0.118083106, - 0.125713184, - 0.12444581, - 0.129616664, - 0.124222977, - 0.117873216, - 0.121232909, - 0.125176963, - 0.126967664, - 0.122178806, - 0.120848342, - 0.123407271, - 0.120451258, - 0.123857808, - 0.124623495, - 0.122337585, - 0.130050177, - 0.127196104, - 0.120209259, - 0.126086226, - 0.12259621, - 0.124133489, - 0.124052016, - 0.125602548, - 0.128480963, - 0.122221839, - 0.126966125, - 0.127126564, - 0.12295845, - 0.117784544, - 0.124938957, - 0.125154616, - 0.126476209, - 0.127956008, - 0.1212722, - 0.119980682, - 0.12088224, - 0.121374751, - 0.125835187, - 0.12741777, - 0.124113976, - 0.129369583, - 0.124089832, - 0.128454752, - 0.128247396, - 0.119842345, - 0.122610332, - 0.122601458, - 0.121542511, - 0.119260472, - 0.122646356, - 0.127074697, - 0.128064286, - 0.121047425, - 0.125377904, - 0.124761456, - 0.128204003, - 0.123707214, - 0.126071867, - 0.126546918, - 0.1203823, - 0.125205751, - 0.118166226, - 0.124503386, - 0.123978061, - 0.124960025, - 0.119649975, - 0.120982777, - 0.127676478, - 0.123837896, - 0.129837512, - 0.124997513, - 0.128323826, - 0.123142751, - 0.126843243, - 0.126019653, - 0.127250978, - 0.125240283, - 0.12674315, - 0.123968618, - 0.115925532, - 0.127374254, - 0.123263492, - 0.124790723, - 0.127159029, - 0.127309295, - 0.12519301, - 0.123486563, - 0.125976516, - 0.128058665, - 0.124028392, - 0.126626596, - 0.127671672, - 0.124591722, - 0.122582402, - 0.125526278 + 0.117531215, + 0.119477231, + 0.127241314, + 0.123838376, + 0.126217281, + 0.123786636, + 0.12467958, + 0.123438347, + 0.125642011, + 0.124928052, + 0.122122493, + 0.118084278, + 0.120487079, + 0.126291729, + 0.123366993, + 0.122684732, + 0.128289217, + 0.128280574, + 0.128451502, + 0.125156331, + 0.128532382, + 0.12511481, + 0.120080922, + 0.125052891, + 0.128270126, + 0.117955838, + 0.124216025, + 0.120151138, + 0.120900373, + 0.124190145, + 0.125512223, + 0.125198228, + 0.126168804, + 0.121633532, + 0.115684048, + 0.123711036, + 0.119018693, + 0.128783925, + 0.125229119, + 0.126767544, + 0.127907333, + 0.119027267, + 0.126271684, + 0.120223078, + 0.128007503, + 0.123304871, + 0.127853049, + 0.127922427, + 0.121222788, + 0.119177537, + 0.127096945, + 0.121200177, + 0.124658115, + 0.122214894, + 0.124448714, + 0.121902116, + 0.123600603, + 0.127504034, + 0.123739287, + 0.122509289, + 0.120164122, + 0.127016085, + 0.124842619, + 0.127785936, + 0.122218441, + 0.121571746, + 0.122432379, + 0.12162545, + 0.122377491, + 0.123179156, + 0.123372804, + 0.126278693, + 0.124852896, + 0.123329491, + 0.122193762, + 0.121078517, + 0.123470548, + 0.122604349, + 0.122051216, + 0.1252449, + 0.127407171, + 0.126614329, + 0.126718561, + 0.125360279, + 0.123016905, + 0.117310408, + 0.127781929, + 0.125049815, + 0.12014819, + 0.128220601, + 0.121267966, + 0.124953428, + 0.128022598, + 0.127121062, + 0.122899784, + 0.127152937, + 0.123185042, + 0.121124426, + 0.124188753, + 0.122067442 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -207,106 +205,106 @@ }, { "result": [ - 0.122543827, - 0.127092806, - 0.127011856, - 0.12281347, - 0.117444623, - 0.12350014, - 0.126948171, - 0.123311315, - 0.128964689, - 0.125625745, - 0.122593846, - 0.123006218, - 0.128376547, - 0.12277935, - 0.12600483, - 0.118549991, - 0.125331326, - 0.119459264, - 0.126413229, - 0.122420952, - 0.118519981, - 0.130097044, - 0.125840275, - 0.126526868, - 0.122413416, - 0.125574993, - 0.12518833, - 0.12595883, - 0.125565734, - 0.118738583, - 0.127872834, - 0.125746162, - 0.123202846, - 0.123291211, - 0.118350345, - 0.12642703, - 0.119797854, - 0.126859721, - 0.126554041, - 0.12842541, - 0.120505089, - 0.119439547, - 0.127376052, - 0.127270792, - 0.124580339, - 0.125233136, - 0.125029362, - 0.126664745, - 0.12299203, - 0.120487189, - 0.116249103, - 0.128941914, - 0.123014041, - 0.128777967, - 0.127129936, - 0.121659861, - 0.121347096, - 0.126114891, - 0.128108861, - 0.128957541, - 0.125655787, - 0.127098252, - 0.11633541, - 0.118214435, - 0.126284329, - 0.120242618, - 0.124033286, - 0.122358962, - 0.121389239, - 0.121621816, - 0.128790363, - 0.124597393, - 0.127546464, - 0.122813675, - 0.122599769, - 0.127564185, - 0.126530663, - 0.122913285, - 0.121208338, - 0.128789751, - 0.117784612, - 0.123544932, - 0.130254739, - 0.118280526, - 0.125662506, - 0.126502155, - 0.121901033, - 0.124632174, - 0.118801743, - 0.121895381, - 0.12476507, - 0.12805682, - 0.121644671, - 0.126667883, - 0.124941801, - 0.125911196, - 0.129148188, - 0.119740007, - 0.1253032, - 0.127030932 + 0.126492701, + 0.128645231, + 0.12764948, + 0.12103475, + 0.122596624, + 0.126592365, + 0.127436689, + 0.128119098, + 0.124821297, + 0.11943138, + 0.123570282, + 0.123472562, + 0.125432298, + 0.12417364, + 0.123524911, + 0.126522503, + 0.125163512, + 0.120606514, + 0.124866123, + 0.125376311, + 0.128783539, + 0.125887119, + 0.121722658, + 0.12600124, + 0.120812495, + 0.128430569, + 0.124644469, + 0.127735154, + 0.128627366, + 0.124496423, + 0.124060574, + 0.126146926, + 0.12785907, + 0.126904463, + 0.127326552, + 0.121947189, + 0.125433886, + 0.120365002, + 0.12335412, + 0.126383518, + 0.128603595, + 0.123623288, + 0.124439586, + 0.123612114, + 0.130604288, + 0.129593343, + 0.127862973, + 0.123046912, + 0.123133175, + 0.117651496, + 0.11778844, + 0.121584935, + 0.127266558, + 0.127635503, + 0.11977104, + 0.125398818, + 0.124956356, + 0.122441387, + 0.122984766, + 0.128045231, + 0.126895532, + 0.126076572, + 0.126854525, + 0.125299198, + 0.123040937, + 0.125369624, + 0.124795957, + 0.128728248, + 0.127091627, + 0.127126209, + 0.119520154, + 0.125767227, + 0.127001141, + 0.123595742, + 0.124235397, + 0.117551288, + 0.129048246, + 0.125796886, + 0.12825037, + 0.12581745, + 0.126931091, + 0.122246634, + 0.125022816, + 0.126914787, + 0.120603571, + 0.124985751, + 0.122157381, + 0.12536259, + 0.125753319, + 0.121856033, + 0.123539674, + 0.125851348, + 0.123957067, + 0.12364997, + 0.121640465, + 0.126824563, + 0.121472587, + 0.120211254, + 0.121835976, + 0.130236577 ], "implementation": "rust-libp2p", "version": "rust-v0.51", @@ -314,106 +312,106 @@ }, { "result": [ - 0.1884588, - 0.18756714, - 0.18300873, - 0.1936415, - 0.18156292, - 0.19067459, - 0.19769268, - 0.18656383, - 0.17837767, - 0.19460449, - 0.17657135, - 0.18910603, - 0.18485719, - 0.19088127, - 0.19560757, - 0.18177089, - 0.18868802, - 0.18856184, - 0.19105303, - 0.18880497, - 0.19321439, - 0.19345047, - 0.18769683, - 0.18487263, - 0.17981295, - 0.19212057, - 0.18694794, - 0.19257876, - 0.19548361, - 0.19591156, - 0.18226886, - 0.18280998, - 0.18057576, - 0.17874339, - 0.1932511, - 0.18708573, - 0.1950071, - 0.18806437, - 0.18655427, - 0.18641932, - 0.19514948, - 0.1959758, - 0.18190429, - 0.17720412, - 0.18691242, - 0.18178862, - 0.18175964, - 0.1881124, - 0.19493204, - 0.19136153, - 0.19619612, - 0.18911907, - 0.18776011, - 0.19090895, - 0.18848054, - 0.19609065, - 0.18877506, - 0.19381407, - 0.18677415, - 0.18977772, - 0.18802643, - 0.19339806, - 0.18219492, - 0.18959786, - 0.19078787, - 0.1894444, - 0.19280326, - 0.1858661, - 0.19484885, - 0.18035181, - 0.18633182, - 0.1868423, - 0.1804054, - 0.18347643, - 0.18067311, - 0.18760788, - 0.18179734, - 0.19659987, - 0.18166326, - 0.19459605, - 0.1829563, - 0.1951969, - 0.1953983, - 0.18802923, - 0.1836824, - 0.19265597, - 0.18820585, - 0.1936625, - 0.19276579, - 0.17885067, - 0.18569484, - 0.18491744, - 0.19376439, - 0.1853479, - 0.18714498, - 0.18907069, - 0.18930666, - 0.18393388, - 0.19271532, - 0.19143309 + 0.1905508, + 0.19120069, + 0.19208843, + 0.18447545, + 0.19727789, + 0.19536076, + 0.19549216, + 0.1909243, + 0.18881956, + 0.19217543, + 0.1877395, + 0.18598732, + 0.19317727, + 0.19503729, + 0.17881867, + 0.1934256, + 0.187884, + 0.18333447, + 0.19611809, + 0.18792787, + 0.19242029, + 0.19255786, + 0.18546608, + 0.18191247, + 0.18786986, + 0.1923337, + 0.18841194, + 0.18253963, + 0.18228842, + 0.1851186, + 0.19316866, + 0.19420747, + 0.18459386, + 0.1910244, + 0.18564709, + 0.19383651, + 0.18947494, + 0.1849043, + 0.18606955, + 0.18700443, + 0.19366558, + 0.18035644, + 0.18951121, + 0.18696323, + 0.18936445, + 0.17857671, + 0.1836147, + 0.18801275, + 0.19045018, + 0.18924312, + 0.19615361, + 0.19372635, + 0.18651393, + 0.19028859, + 0.1893717, + 0.18552811, + 0.18736637, + 0.19309106, + 0.18693604, + 0.19023037, + 0.1871291, + 0.18655825, + 0.18646562, + 0.18466365, + 0.18961416, + 0.18048154, + 0.18884529, + 0.18006688, + 0.1932698, + 0.18488555, + 0.19532463, + 0.19325395, + 0.19368966, + 0.19409521, + 0.18709031, + 0.18488774, + 0.1890471, + 0.18583038, + 0.18771419, + 0.18709807, + 0.18651003, + 0.19030699, + 0.18543595, + 0.1907468, + 0.19577229, + 0.19353405, + 0.19091126, + 0.18190527, + 0.18919502, + 0.18638895, + 0.19068405, + 0.18348704, + 0.18883169, + 0.18787478, + 0.19052736, + 0.18179108, + 0.19308127, + 0.19171245, + 0.19040409, + 0.19386716 ], "implementation": "https", "version": "https", @@ -421,106 +419,106 @@ }, { "result": [ - 0.12460541, - 0.06338739, - 0.060049094, - 0.12534183, - 0.06282792, - 0.12473893, - 0.123850085, - 0.061622698, - 0.124618195, - 0.12683493, - 0.06393353, - 0.11986306, - 0.12737766, - 0.06417233, - 0.126642, - 0.06333116, - 0.062203553, - 0.06355419, - 0.12368787, - 0.12854455, - 0.065005094, - 0.12189147, - 0.061708663, - 0.063397095, - 0.12363864, - 0.06245074, - 0.060843397, - 0.06305268, - 0.12158299, - 0.062071208, - 0.06400568, - 0.12168055, - 0.063808165, - 0.12591682, - 0.061409816, - 0.11779677, - 0.062342245, - 0.12656265, - 0.061757687, - 0.11773071, - 0.12370392, - 0.11993875, - 0.06118508, - 0.06278617, - 0.062142137, - 0.124610744, - 0.12213743, - 0.06137961, - 0.06265603, - 0.06284346, - 0.061817326, - 0.1258655, - 0.06183856, - 0.06289108, - 0.064864665, - 0.12664138, - 0.12846307, - 0.121588096, - 0.061272167, - 0.1261858, - 0.062228348, - 0.059017688, - 0.06450957, - 0.06075087, - 0.059225857, - 0.06335085, - 0.06388441, - 0.059180457, - 0.062583424, - 0.11892876, - 0.11927323, - 0.06371338, - 0.061664425, - 0.12375551, - 0.06225097, - 0.121605955, - 0.12460672, - 0.12971939, - 0.060148764, - 0.123078205, - 0.06143858, - 0.061138, - 0.11919744, - 0.13003084, - 0.11934041, - 0.05848857, - 0.06244507, - 0.061119255, - 0.06357628, - 0.1233313, - 0.12428866, - 0.119413674, - 0.12215978, - 0.060937118, - 0.061882664, - 0.063023865, - 0.1286349, - 0.11981622, - 0.12242536, - 0.12898855 + 0.11886548, + 0.06207159, + 0.059752, + 0.06366672, + 0.117640115, + 0.060913656, + 0.06061558, + 0.12187687, + 0.06273285, + 0.060223714, + 0.12654272, + 0.062961616, + 0.060779184, + 0.06332914, + 0.12676404, + 0.06256747, + 0.06139459, + 0.12560034, + 0.12362937, + 0.06257865, + 0.11634072, + 0.124720946, + 0.1265982, + 0.06111584, + 0.12737016, + 0.061775804, + 0.06400239, + 0.12289581, + 0.123719655, + 0.12401232, + 0.06303235, + 0.1276448, + 0.06232622, + 0.12518571, + 0.06395094, + 0.123611346, + 0.06388889, + 0.063405804, + 0.12394694, + 0.06245831, + 0.06416768, + 0.06461364, + 0.12265379, + 0.0635013, + 0.123194255, + 0.059708185, + 0.061085, + 0.12135438, + 0.06308459, + 0.06435049, + 0.12202259, + 0.05987249, + 0.118559346, + 0.12069713, + 0.061908245, + 0.06249194, + 0.1227838, + 0.061034348, + 0.06484004, + 0.12327383, + 0.118593454, + 0.12120287, + 0.05972468, + 0.12287883, + 0.11924952, + 0.12340003, + 0.063479245, + 0.060867403, + 0.062849715, + 0.12474931, + 0.06292324, + 0.062693946, + 0.061772607, + 0.060404472, + 0.06379947, + 0.11889992, + 0.06086896, + 0.12163995, + 0.06321763, + 0.12439474, + 0.06108236, + 0.12368068, + 0.124439366, + 0.06258205, + 0.060899056, + 0.12354212, + 0.062890604, + 0.062237974, + 0.06260137, + 0.11898126, + 0.12497839, + 0.06353188, + 0.0636649, + 0.0627121, + 0.06411397, + 0.061960503, + 0.06246588, + 0.064078934, + 0.12232631, + 0.06406221 ], "implementation": "go-libp2p", "version": "go-v0.27.0", @@ -528,113 +526,112 @@ }, { "result": [ - 0.062081397, - 0.06375749, - 0.058778632, - 0.06496431, - 0.059300344, - 0.064085774, - 0.062336672, - 0.060751226, - 0.05926829, - 0.060248934, - 0.06266038, - 0.060531963, - 0.06149564, - 0.062249243, - 0.062247727, - 0.06292039, - 0.061806973, - 0.06481583, - 0.06136999, - 0.06324397, - 0.06510487, - 0.06120873, - 0.06061488, - 0.06371168, - 0.060612608, - 0.0600205, - 0.06331719, - 0.061534096, - 0.06007528, - 0.06160426, - 0.061419323, - 0.060130056, - 0.06376396, - 0.0638334, - 0.062379222, - 0.062089693, - 0.059746526, - 0.06131145, - 0.06275574, - 0.062170308, - 0.060669128, - 0.05972382, - 0.061504025, - 0.059780255, - 0.06165352, - 0.06170672, - 0.061490387, - 0.06243981, - 0.06246258, - 0.061520863, - 0.061153352, - 0.05962738, - 0.062306397, - 0.0650918, - 0.061314303, - 0.06424656, - 0.059145585, - 0.06277721, - 0.06420389, - 0.06322815, - 0.06254778, - 0.06056936, - 0.061299443, - 0.06358756, - 0.06076693, - 0.0640196, - 0.06335136, - 0.059180327, - 0.061590698, - 0.06332971, - 0.060137033, - 0.06171905, - 0.06153724, - 0.06268148, - 0.06376706, - 0.06443098, - 0.063577496, - 0.060746897, - 0.062080245, - 0.06451008, - 0.062860094, - 0.06262935, - 0.06121269, - 0.06163481, - 0.062346857, - 0.06360294, - 0.06312665, - 0.06285668, - 0.06282775, - 0.06316835, - 0.06440914, - 0.06345475, - 0.062310416, - 0.062573135, - 0.059951175, - 0.062110145, - 0.063234456, - 0.06274714, - 0.062973484, - 0.06406037 + 0.062166207, + 0.06347945, + 0.0634769, + 0.06262155, + 0.061401874, + 0.06067336, + 0.059668176, + 0.06126384, + 0.059219595, + 0.063664526, + 0.06478484, + 0.062126044, + 0.06131495, + 0.06097344, + 0.06302132, + 0.061447747, + 0.06006903, + 0.06428919, + 0.060735032, + 0.06438137, + 0.060805395, + 0.062184226, + 0.06131604, + 0.061692588, + 0.061749745, + 0.06237051, + 0.06424101, + 0.06246468, + 0.062390648, + 0.06321125, + 0.059326556, + 0.061613392, + 0.061730187, + 0.061770275, + 0.061853573, + 0.06375709, + 0.062096745, + 0.061394863, + 0.061692376, + 0.0592694, + 0.06454182, + 0.05867471, + 0.06171774, + 0.06226178, + 0.0617235, + 0.0628771, + 0.06174907, + 0.060809057, + 0.06382027, + 0.058840185, + 0.059617076, + 0.0630149, + 0.062986195, + 0.062970676, + 0.06340244, + 0.061709, + 0.065071106, + 0.06310097, + 0.06299079, + 0.062262863, + 0.062212706, + 0.061375078, + 0.06079732, + 0.061787553, + 0.06130792, + 0.0644198, + 0.061684314, + 0.06173436, + 0.062170528, + 0.06256191, + 0.0613262, + 0.06285372, + 0.062032223, + 0.062053975, + 0.06308158, + 0.061542917, + 0.06062959, + 0.06387708, + 0.060190577, + 0.060683966, + 0.061599143, + 0.060212366, + 0.06250237, + 0.061295517, + 0.06188249, + 0.06060551, + 0.061811384, + 0.064418614, + 0.06039328, + 0.05935275, + 0.06322118, + 0.062921494, + 0.063168146, + 0.06294009, + 0.06133466, + 0.06270723, + 0.06076044, + 0.06282397, + 0.058681328, + 0.06131034 ], "implementation": "go-libp2p", "version": "go-v0.27.0", "transportStack": "quic-v1" } - ], - "comparisons": [] + ] } ] } \ No newline at end of file diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index db618af46..32b256d31 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -8,8 +8,6 @@ export type Benchmark = { name: string, unit: "bit/s" | "s", results: Result[], - comparisons: Comparison[], - } export type Result = { diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index c0cc355ff..dbd836436 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -12,58 +12,33 @@ async function main(clientPublicIP: string, serverPublicIP: string) { const benchmarkResults: BenchmarkResults = { benchmarks: [ - // { - // name: "Dummy", - // unit: "s", - // results: runBenchmarkAcrossVersions({ - // clientPublicIP, - // serverPublicIP, - // uploadBytes: 0, - // downloadBytes: 0, - // unit: "s", - // iterations: 1, - // }), - // comparisons: [], - // }, - { + runBenchmarkAcrossVersions({ name: "Single Connection throughput – Upload 100 MiB", - unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 100 << 20, - downloadBytes: 0, - unit: "bit/s", - iterations: 1, - }), - comparisons: [], - }, - { + clientPublicIP, + serverPublicIP, + uploadBytes: 100 << 20, + downloadBytes: 0, + unit: "bit/s", + iterations: 1, + }), + runBenchmarkAcrossVersions({ name: "Single Connection throughput – Download 100 MiB", - unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 0, - downloadBytes: 100 << 20, - unit: "bit/s", - iterations: 1, - }), - comparisons: [], - }, - { + clientPublicIP, + serverPublicIP, + uploadBytes: 0, + downloadBytes: 100 << 20, + unit: "bit/s", + iterations: 1, + }), + runBenchmarkAcrossVersions({ name: "Connection establishment + 1 byte round trip latencies", + clientPublicIP, + serverPublicIP, + uploadBytes: 1, + downloadBytes: 1, unit: "s", - results: runBenchmarkAcrossVersions({ - clientPublicIP, - serverPublicIP, - uploadBytes: 1, - downloadBytes: 1, - unit: "s", - iterations: 100, - }), - comparisons: [], - } + iterations: 100, + }), ], }; @@ -74,6 +49,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { } interface ArgsRunBenchmarkAcrossVersions { + name: string, clientPublicIP: string; serverPublicIP: string; uploadBytes: number, @@ -82,12 +58,17 @@ interface ArgsRunBenchmarkAcrossVersions { iterations: number, } -function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Result[] { +function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Benchmark { + console.error(`= Benchmark ${args.name}`) + const results: Result[] = []; + for (const version of versions) { + console.error(`== Version ${version.implementation}/${version.id}`) + // The `if` is a hack for zig. if (version.serverAddress == undefined) { - console.error(`== Starting ${version.id} server.`); + console.error(`=== Starting ${version.id} server.`); let serverCMD: string if (version.implementation === "zig-libp2p") { // Hack! @@ -127,7 +108,11 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Resul } }; - return results; + return { + name: args.name, + unit: "bit/s", + results, + }; } interface ArgsRunBenchmark { From 618805c25e9368c38dedef26fb7f44f35ce46142 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 28 Apr 2023 18:13:17 +0900 Subject: [PATCH 064/101] Fix unit again --- perf/runner/benchmark-results.json | 4 ++-- perf/runner/src/index.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index d59664ffd..e4a6e4ed6 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -94,7 +94,7 @@ }, { "name": "Connection establishment + 1 byte round trip latencies", - "unit": "bit/s", + "unit": "s", "results": [ { "result": [ @@ -634,4 +634,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index dbd836436..3a3358d1a 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -110,7 +110,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench return { name: args.name, - unit: "bit/s", + unit: args.unit, results, }; } From c2831ccc619f53736734a18faa9726288da95384 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 1 May 2023 15:51:23 +0900 Subject: [PATCH 065/101] Rename ssh key from mxinden to perf --- perf/terraform/region/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/perf/terraform/region/main.tf b/perf/terraform/region/main.tf index d4b952d13..81a3db2bc 100644 --- a/perf/terraform/region/main.tf +++ b/perf/terraform/region/main.tf @@ -111,7 +111,7 @@ resource "aws_security_group" "restricted_inbound" { }) } -resource "aws_key_pair" "mxinden" { +resource "aws_key_pair" "perf" { key_name = "user-public-key" public_key = file("./user.pub") } @@ -122,7 +122,7 @@ resource "aws_instance" "node" { subnet_id = aws_subnet.perf.id - key_name = aws_key_pair.mxinden.key_name + key_name = aws_key_pair.perf.key_name vpc_security_group_ids = [aws_security_group.restricted_inbound.id] From fb214bc77ad9909c8b2b5f378e7c8d0d54c830ce Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 1 May 2023 19:28:20 +0900 Subject: [PATCH 066/101] Pass IP and not multiaddr to client binary --- perf/impl/go/v0.27/main.go | 21 +++++++++++------ perf/impl/https/main.go | 43 ++++------------------------------- perf/impl/rust/v0.51/Makefile | 2 +- perf/runner/src/index.ts | 20 +--------------- 4 files changed, 21 insertions(+), 65 deletions(-) diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go/v0.27/main.go index cdd41b838..e6ee668b8 100644 --- a/perf/impl/go/v0.27/main.go +++ b/perf/impl/go/v0.27/main.go @@ -15,15 +15,11 @@ import ( func main() { runServer := flag.Bool("run-server", false, "Should run as server") - // --server-address - serverAddr := flag.String("server-address", "", "Server address") - // --secret-key-seed + serverIPAddr := flag.String("server-ip-address", "", "Server address") + transport := flag.String("transport", "tcp", "Transport to use") secretKeySeed := flag.Uint64("secret-key-seed", 0, "Server secret key seed") - // --upload-bytes uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") - // --download-bytes downloadBytes := flag.Int("download-bytes", 0, "Download bytes") - // --n-times nTimes := flag.Int("n-times", 0, "N times") flag.Parse() @@ -54,7 +50,18 @@ func main() { select {} // run forever, exit on interrupt } - serverInfo, err := peer.AddrInfoFromString(*serverAddr) + var multiAddrStr string + switch *transport { + case "tcp": + multiAddrStr = fmt.Sprintf("/ip4/%s/tcp/4001/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", *serverIPAddr) + case "quic-v1": + multiAddrStr = fmt.Sprintf("/ip4/%s/udp/4001/quic-v1/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", *serverIPAddr) + default: + fmt.Println("Invalid transport. Accepted values: 'tcp' or 'quic-v1'") + return + } + + serverInfo, err := peer.AddrInfoFromString(multiAddrStr) if err != nil { panic(err) } diff --git a/perf/impl/https/main.go b/perf/impl/https/main.go index c4d54239d..abeb4b3c3 100644 --- a/perf/impl/https/main.go +++ b/perf/impl/https/main.go @@ -17,10 +17,7 @@ import ( "math/big" "net" "net/http" - "strconv" "time" - - "github.com/multiformats/go-multiaddr" ) const ( @@ -74,8 +71,7 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) ([]tim startTime := time.Now() resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) if err != nil { - fmt.Printf("Error sending request: %v\n", err) - continue + return durations, err } respBody, err := ioutil.ReadAll(resp.Body) @@ -147,15 +143,11 @@ type Latencies struct { func main() { runServer := flag.Bool("run-server", false, "Should run as server") - // --server-address - serverAddr := flag.String("server-address", "", "Server address") - // --secret-key-seed + serverIPAddr := flag.String("server-ip-address", "", "Server address") + _ = flag.String("transport", "", "Transport to use") _ = flag.Uint64("secret-key-seed", 0, "Server secret key seed") - // --upload-bytes uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") - // --download-bytes downloadBytes := flag.Int("download-bytes", 0, "Download bytes") - // --n-times nTimes := flag.Int("n-times", 0, "N times") flag.Parse() @@ -185,38 +177,13 @@ func main() { } } else { // Client mode - if *serverAddr == "" || *nTimes <= 0 { + if *serverIPAddr == "" || *nTimes <= 0 { fmt.Println("Error: Please provide valid server-address and n-times flags for client mode.") return } - // Parse the multiaddr and extract the IP address and TCP port - serverAddr, err := multiaddr.NewMultiaddr(*serverAddr) - if err != nil { - fmt.Printf("Error parsing server-address: %v\n", err) - return - } - ipBytes, err := serverAddr.ValueForProtocol(multiaddr.P_IP4) - if err != nil { - ipBytes, err = serverAddr.ValueForProtocol(multiaddr.P_IP6) - if err != nil { - fmt.Printf("Error getting IP address from multiaddr: %v\n", err) - return - } - } - ip := net.ParseIP(ipBytes) - portStr, err := serverAddr.ValueForProtocol(multiaddr.P_TCP) - if err != nil { - fmt.Printf("Error getting TCP port from multiaddr: %v\n", err) - return - } - port, err := strconv.Atoi(portStr) - if err != nil { - fmt.Printf("Error parsing TCP port: %v\n", err) - return - } // Run the client and print the results - durations, err := runClient(fmt.Sprintf("%s:%d", ip.String(), port), *uploadBytes, *downloadBytes, *nTimes) + durations, err := runClient(fmt.Sprintf("%s:%d", *serverIPAddr, 4001), *uploadBytes, *downloadBytes, *nTimes) if err != nil { panic(err) } diff --git a/perf/impl/rust/v0.51/Makefile b/perf/impl/rust/v0.51/Makefile index 21b4461da..1b1402fe6 100644 --- a/perf/impl/rust/v0.51/Makefile +++ b/perf/impl/rust/v0.51/Makefile @@ -1,5 +1,5 @@ image_name := rust-v0.51 -commitSha := 66a28b37d8deb4d0e38e61f5d3ca0d34368f5770 +commitSha := f515473f7f94597d55056df88cc9f784c35d202f all: image.json diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 3a3358d1a..85ab36c4e 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -134,26 +134,8 @@ interface Latencies { function runBenchmark(args: ArgsRunBenchmark): Latencies { console.error(`=== Starting ${args.transportStack} client.`); - let serverAddress = args.serverAddress; - - if (serverAddress == undefined) { - switch (args.transportStack) { - case 'tcp': - serverAddress = `/ip4/${args.serverPublicIP}/tcp/4001`; - break; - case 'quic-v1': - serverAddress = `/ip4/${args.serverPublicIP}/udp/4001/quic-v1`; - break; - default: - console.error("Unsupported transport stack ${args.transportStack}"); - process.exit(1); - - } - serverAddress = serverAddress + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN"; - } - // TODO: Remove static --n-times. - const binFlags = `--server-address ${serverAddress} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` + const binFlags = `--server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` const dockerCMD = `docker run --init --rm --network host ${args.dockerImageId} ${binFlags}` const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${dockerCMD}; done'` From 00cd4341b63b1789c74b69712a33e48afd2e0f91 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 4 May 2023 16:48:54 +0900 Subject: [PATCH 067/101] Build on machines & run outside of Docker - Build binaries on remote machines. This e.g. enables Mac users to use the tooling without additional steps. - Don't use Docker to run perf binaries. Instead run the binaries right away. Removes a layer of potential performance degradation. --- perf/Makefile | 17 - perf/impl/Makefile | 14 + perf/impl/{go => go-libp2p}/.gitignore | 0 perf/impl/{go => go-libp2p}/v0.27/Dockerfile | 0 perf/impl/go-libp2p/v0.27/Makefile | 6 + perf/impl/{go => go-libp2p}/v0.27/README.md | 0 perf/impl/{go => go-libp2p}/v0.27/go.mod | 0 perf/impl/{go => go-libp2p}/v0.27/go.sum | 0 perf/impl/{go => go-libp2p}/v0.27/main.go | 0 perf/impl/{go => go-libp2p}/v0.27/perf.go | 0 perf/impl/go/v0.27/Makefile | 11 - perf/impl/https/Dockerfile | 14 - perf/impl/https/Makefile | 12 - perf/impl/https/v0.1/Makefile | 6 + perf/impl/https/{ => v0.1}/go.mod | 0 perf/impl/https/{ => v0.1}/go.sum | 0 perf/impl/https/{ => v0.1}/main.go | 0 perf/impl/{rust => rust-libp2p}/.gitignore | 0 perf/impl/rust-libp2p/v0.51/Makefile | 23 + perf/impl/rust/v0.51/Makefile | 24 - perf/runner/benchmark-results.json | 1052 +++++++++--------- perf/runner/src/index.ts | 65 +- perf/runner/src/versions.ts | 17 +- perf/terraform/user-data.sh | 2 + 24 files changed, 608 insertions(+), 655 deletions(-) delete mode 100644 perf/Makefile create mode 100644 perf/impl/Makefile rename perf/impl/{go => go-libp2p}/.gitignore (100%) rename perf/impl/{go => go-libp2p}/v0.27/Dockerfile (100%) create mode 100644 perf/impl/go-libp2p/v0.27/Makefile rename perf/impl/{go => go-libp2p}/v0.27/README.md (100%) rename perf/impl/{go => go-libp2p}/v0.27/go.mod (100%) rename perf/impl/{go => go-libp2p}/v0.27/go.sum (100%) rename perf/impl/{go => go-libp2p}/v0.27/main.go (100%) rename perf/impl/{go => go-libp2p}/v0.27/perf.go (100%) delete mode 100644 perf/impl/go/v0.27/Makefile delete mode 100644 perf/impl/https/Dockerfile delete mode 100644 perf/impl/https/Makefile create mode 100644 perf/impl/https/v0.1/Makefile rename perf/impl/https/{ => v0.1}/go.mod (100%) rename perf/impl/https/{ => v0.1}/go.sum (100%) rename perf/impl/https/{ => v0.1}/main.go (100%) rename perf/impl/{rust => rust-libp2p}/.gitignore (100%) create mode 100644 perf/impl/rust-libp2p/v0.51/Makefile delete mode 100644 perf/impl/rust/v0.51/Makefile diff --git a/perf/Makefile b/perf/Makefile deleted file mode 100644 index 1e715fe2c..000000000 --- a/perf/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -GO_SUBDIRS := $(wildcard impl/go/*/.) -RUST_SUBDIRS := $(wildcard impl/rust/*/.) -ZIG_SUBDIRS := $(wildcard impl/zig/*/.) -HTTPS_SUBDIRS := $(wildcard impl/https/.) - -all: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(ZIG_SUBDIRS) $(HTTPS_SUBDIRS) -$(GO_SUBDIRS): - $(MAKE) -C $@ -$(RUST_SUBDIRS): - $(MAKE) -C $@ -$(ZIG_SUBDIRS): - $(MAKE) -C $@ -$(HTTPS_SUBDIRS): - $(MAKE) -C $@ - - -.PHONY: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(ZIG_SUBDIRS) $(HTTPS_SUBDIRS) all diff --git a/perf/impl/Makefile b/perf/impl/Makefile new file mode 100644 index 000000000..e744dd1aa --- /dev/null +++ b/perf/impl/Makefile @@ -0,0 +1,14 @@ +GO_SUBDIRS := $(wildcard go-libp2p/*/.) +RUST_SUBDIRS := $(wildcard rust-libp2p/*/.) +HTTPS_SUBDIRS := $(wildcard https/*/.) + +all: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) +$(RUST_SUBDIRS): + $(MAKE) -C $@ +$(GO_SUBDIRS): + $(MAKE) -C $@ +$(HTTPS_SUBDIRS): + $(MAKE) -C $@ + + +.PHONY: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(HTTPS_SUBDIRS) all diff --git a/perf/impl/go/.gitignore b/perf/impl/go-libp2p/.gitignore similarity index 100% rename from perf/impl/go/.gitignore rename to perf/impl/go-libp2p/.gitignore diff --git a/perf/impl/go/v0.27/Dockerfile b/perf/impl/go-libp2p/v0.27/Dockerfile similarity index 100% rename from perf/impl/go/v0.27/Dockerfile rename to perf/impl/go-libp2p/v0.27/Dockerfile diff --git a/perf/impl/go-libp2p/v0.27/Makefile b/perf/impl/go-libp2p/v0.27/Makefile new file mode 100644 index 000000000..9668f0c42 --- /dev/null +++ b/perf/impl/go-libp2p/v0.27/Makefile @@ -0,0 +1,6 @@ +all: perf + +perf: + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . + +.PHONY: all diff --git a/perf/impl/go/v0.27/README.md b/perf/impl/go-libp2p/v0.27/README.md similarity index 100% rename from perf/impl/go/v0.27/README.md rename to perf/impl/go-libp2p/v0.27/README.md diff --git a/perf/impl/go/v0.27/go.mod b/perf/impl/go-libp2p/v0.27/go.mod similarity index 100% rename from perf/impl/go/v0.27/go.mod rename to perf/impl/go-libp2p/v0.27/go.mod diff --git a/perf/impl/go/v0.27/go.sum b/perf/impl/go-libp2p/v0.27/go.sum similarity index 100% rename from perf/impl/go/v0.27/go.sum rename to perf/impl/go-libp2p/v0.27/go.sum diff --git a/perf/impl/go/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go similarity index 100% rename from perf/impl/go/v0.27/main.go rename to perf/impl/go-libp2p/v0.27/main.go diff --git a/perf/impl/go/v0.27/perf.go b/perf/impl/go-libp2p/v0.27/perf.go similarity index 100% rename from perf/impl/go/v0.27/perf.go rename to perf/impl/go-libp2p/v0.27/perf.go diff --git a/perf/impl/go/v0.27/Makefile b/perf/impl/go/v0.27/Makefile deleted file mode 100644 index efaef774f..000000000 --- a/perf/impl/go/v0.27/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -image_name := go-v0.27 - -image.json: Dockerfile main.go go.mod go.sum - IMAGE_NAME=${image_name} docker build -t ${image_name} . - docker image inspect ${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -.PHONY: clean - -clean: - rm image.json diff --git a/perf/impl/https/Dockerfile b/perf/impl/https/Dockerfile deleted file mode 100644 index eac77ccca..000000000 --- a/perf/impl/https/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -# Build Go Binary -FROM golang:1.20-alpine AS builder - -WORKDIR /app -COPY go.mod go.sum ./ -RUN go mod download -COPY *.go ./ -RUN go build -o perf . - -FROM alpine - -COPY --from=builder /app/perf /app/perf - -ENTRYPOINT [ "/app/perf" ] \ No newline at end of file diff --git a/perf/impl/https/Makefile b/perf/impl/https/Makefile deleted file mode 100644 index 731064867..000000000 --- a/perf/impl/https/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -image_name := https - -all: image.json - -image.json: -# TODO: Consider removing sudo - docker build -t ${image_name} . - docker image inspect ${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -clean: - rm image.json diff --git a/perf/impl/https/v0.1/Makefile b/perf/impl/https/v0.1/Makefile new file mode 100644 index 000000000..9668f0c42 --- /dev/null +++ b/perf/impl/https/v0.1/Makefile @@ -0,0 +1,6 @@ +all: perf + +perf: + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . + +.PHONY: all diff --git a/perf/impl/https/go.mod b/perf/impl/https/v0.1/go.mod similarity index 100% rename from perf/impl/https/go.mod rename to perf/impl/https/v0.1/go.mod diff --git a/perf/impl/https/go.sum b/perf/impl/https/v0.1/go.sum similarity index 100% rename from perf/impl/https/go.sum rename to perf/impl/https/v0.1/go.sum diff --git a/perf/impl/https/main.go b/perf/impl/https/v0.1/main.go similarity index 100% rename from perf/impl/https/main.go rename to perf/impl/https/v0.1/main.go diff --git a/perf/impl/rust/.gitignore b/perf/impl/rust-libp2p/.gitignore similarity index 100% rename from perf/impl/rust/.gitignore rename to perf/impl/rust-libp2p/.gitignore diff --git a/perf/impl/rust-libp2p/v0.51/Makefile b/perf/impl/rust-libp2p/v0.51/Makefile new file mode 100644 index 000000000..bf2e55f8a --- /dev/null +++ b/perf/impl/rust-libp2p/v0.51/Makefile @@ -0,0 +1,23 @@ +image_name := rust-v0.51 +commitSha := f515473f7f94597d55056df88cc9f784c35d202f + +all: perf + +perf: rust-libp2p-${commitSha}/target/release/perf + cp ./rust-libp2p-${commitSha}/target/release/perf . + +rust-libp2p-${commitSha}/target/release/perf: rust-libp2p-${commitSha} + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)/rust-libp2p-${commitSha}":/usr/src/myapp -w /usr/src/myapp rust:1.69 cargo build --release --bin perf + +rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip + unzip -o rust-libp2p-${commitSha}.zip + +rust-libp2p-${commitSha}.zip: +# TODO: Change to libp2p + wget -O $@ "https://github.com/mxinden/rust-libp2p/archive/${commitSha}.zip" + +clean: + rm rust-libp2p-*.zip + rm -rf rust-libp2p-* + +.PHONY: all clean run diff --git a/perf/impl/rust/v0.51/Makefile b/perf/impl/rust/v0.51/Makefile deleted file mode 100644 index 1b1402fe6..000000000 --- a/perf/impl/rust/v0.51/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -image_name := rust-v0.51 -commitSha := f515473f7f94597d55056df88cc9f784c35d202f - -all: image.json - -image.json: rust-libp2p-${commitSha} -# TODO: Consider removing sudo - cd rust-libp2p-${commitSha} && docker build -t ${image_name} -f protocols/perf/Dockerfile . - docker image inspect ${image_name} -f "{{.Id}}" | \ - xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ - -rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip - unzip -o rust-libp2p-${commitSha}.zip - -rust-libp2p-${commitSha}.zip: -# TODO: Change to libp2p - wget -O $@ "https://github.com/mxinden/rust-libp2p/archive/${commitSha}.zip" - -clean: - rm image.json - rm rust-libp2p-*.zip - rm -rf rust-libp2p-* - -.PHONY: all clean diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index e4a6e4ed6..efae8fa7e 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,42 +6,42 @@ "results": [ { "result": [ - 24350509.655656375 + 20290461.854966406 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "tcp" }, { "result": [ - 60663340.88260239 + 53647941.63433479 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "quic-v1" }, { "result": [ - 293240024.41811824 + 299414670.3268659 ], "implementation": "https", - "version": "https", + "version": "v0.1", "transportStack": "tcp" }, { "result": [ - 264059213.2216462 + 265595689.8856188 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "tcp" }, { "result": [ - 615340873.6224145 + 632056139.5154513 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "quic-v1" } ] @@ -52,42 +52,42 @@ "results": [ { "result": [ - 19440868.43741449 + 23993107.455116663 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "tcp" }, { "result": [ - 45763061.98269354 + 51007769.31364293 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "quic-v1" }, { "result": [ - 302546864.6759939 + 295734786.15972674 ], "implementation": "https", - "version": "https", + "version": "v0.1", "transportStack": "tcp" }, { "result": [ - 297542786.14435023 + 259730181.32670394 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "tcp" }, { "result": [ - 601906170.7198751 + 634222072.0199658 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "quic-v1" } ] @@ -98,540 +98,540 @@ "results": [ { "result": [ - 0.117531215, - 0.119477231, - 0.127241314, - 0.123838376, - 0.126217281, - 0.123786636, - 0.12467958, - 0.123438347, - 0.125642011, - 0.124928052, - 0.122122493, - 0.118084278, - 0.120487079, - 0.126291729, - 0.123366993, - 0.122684732, - 0.128289217, - 0.128280574, - 0.128451502, - 0.125156331, - 0.128532382, - 0.12511481, - 0.120080922, - 0.125052891, - 0.128270126, - 0.117955838, - 0.124216025, - 0.120151138, - 0.120900373, - 0.124190145, - 0.125512223, - 0.125198228, - 0.126168804, - 0.121633532, - 0.115684048, - 0.123711036, - 0.119018693, - 0.128783925, - 0.125229119, - 0.126767544, - 0.127907333, - 0.119027267, - 0.126271684, - 0.120223078, - 0.128007503, - 0.123304871, - 0.127853049, - 0.127922427, - 0.121222788, - 0.119177537, - 0.127096945, - 0.121200177, - 0.124658115, - 0.122214894, - 0.124448714, - 0.121902116, - 0.123600603, - 0.127504034, - 0.123739287, - 0.122509289, - 0.120164122, - 0.127016085, - 0.124842619, - 0.127785936, - 0.122218441, - 0.121571746, - 0.122432379, - 0.12162545, - 0.122377491, - 0.123179156, - 0.123372804, - 0.126278693, - 0.124852896, - 0.123329491, - 0.122193762, - 0.121078517, - 0.123470548, - 0.122604349, - 0.122051216, - 0.1252449, - 0.127407171, - 0.126614329, - 0.126718561, - 0.125360279, - 0.123016905, - 0.117310408, - 0.127781929, - 0.125049815, - 0.12014819, - 0.128220601, - 0.121267966, - 0.124953428, - 0.128022598, - 0.127121062, - 0.122899784, - 0.127152937, - 0.123185042, - 0.121124426, - 0.124188753, - 0.122067442 + 0.127828854, + 0.120534387, + 0.12044871, + 0.125737917, + 0.118503398, + 0.126308489, + 0.125622508, + 0.128124063, + 0.123360196, + 0.125409024, + 0.121635772, + 0.120267774, + 0.123290571, + 0.116399527, + 0.129182089, + 0.124196457, + 0.123145711, + 0.125422459, + 0.125460983, + 0.124068713, + 0.124166576, + 0.118302336, + 0.124427211, + 0.123611906, + 0.122429595, + 0.12508232, + 0.12342625, + 0.128447371, + 0.12399178, + 0.127087593, + 0.12443394, + 0.126314451, + 0.128266032, + 0.124901336, + 0.120399578, + 0.123844069, + 0.123465545, + 0.126041535, + 0.127494366, + 0.121576234, + 0.121962232, + 0.127439657, + 0.124313683, + 0.128025549, + 0.12720989, + 0.127093446, + 0.125278966, + 0.128942384, + 0.123069833, + 0.123261723, + 0.121481512, + 0.122424114, + 0.121566236, + 0.122907267, + 0.12080229, + 0.118436975, + 0.126521897, + 0.128883921, + 0.120129619, + 0.128584914, + 0.124406185, + 0.130316659, + 0.124205897, + 0.124278855, + 0.123542628, + 0.124181753, + 0.125956835, + 0.127277402, + 0.124634619, + 0.126092548, + 0.123038641, + 0.130131343, + 0.125360625, + 0.124763501, + 0.1251226, + 0.120595955, + 0.126249329, + 0.12340895, + 0.126857356, + 0.124856843, + 0.126279967, + 0.12308499, + 0.124558394, + 0.125211736, + 0.125498407, + 0.12834632, + 0.127284325, + 0.126912314, + 0.124714709, + 0.126572113, + 0.121492794, + 0.122410126, + 0.120395254, + 0.122346675, + 0.126625206, + 0.12599842, + 0.129794383, + 0.122657057, + 0.12685624, + 0.123413465 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "tcp" }, { "result": [ - 0.126492701, - 0.128645231, - 0.12764948, - 0.12103475, - 0.122596624, - 0.126592365, - 0.127436689, - 0.128119098, - 0.124821297, - 0.11943138, - 0.123570282, - 0.123472562, - 0.125432298, - 0.12417364, - 0.123524911, - 0.126522503, - 0.125163512, - 0.120606514, - 0.124866123, - 0.125376311, - 0.128783539, - 0.125887119, - 0.121722658, - 0.12600124, - 0.120812495, - 0.128430569, - 0.124644469, - 0.127735154, - 0.128627366, - 0.124496423, - 0.124060574, - 0.126146926, - 0.12785907, - 0.126904463, - 0.127326552, - 0.121947189, - 0.125433886, - 0.120365002, - 0.12335412, - 0.126383518, - 0.128603595, - 0.123623288, - 0.124439586, - 0.123612114, - 0.130604288, - 0.129593343, - 0.127862973, - 0.123046912, - 0.123133175, - 0.117651496, - 0.11778844, - 0.121584935, - 0.127266558, - 0.127635503, - 0.11977104, - 0.125398818, - 0.124956356, - 0.122441387, - 0.122984766, - 0.128045231, - 0.126895532, - 0.126076572, - 0.126854525, - 0.125299198, - 0.123040937, - 0.125369624, - 0.124795957, - 0.128728248, - 0.127091627, - 0.127126209, - 0.119520154, - 0.125767227, - 0.127001141, - 0.123595742, - 0.124235397, - 0.117551288, - 0.129048246, - 0.125796886, - 0.12825037, - 0.12581745, - 0.126931091, - 0.122246634, - 0.125022816, - 0.126914787, - 0.120603571, - 0.124985751, - 0.122157381, - 0.12536259, - 0.125753319, - 0.121856033, - 0.123539674, - 0.125851348, - 0.123957067, - 0.12364997, - 0.121640465, - 0.126824563, - 0.121472587, - 0.120211254, - 0.121835976, - 0.130236577 + 0.12802408, + 0.122713897, + 0.128928205, + 0.127677123, + 0.125205912, + 0.127346237, + 0.116990178, + 0.126939974, + 0.118920149, + 0.119986906, + 0.124122801, + 0.127368665, + 0.123561798, + 0.123797555, + 0.126631929, + 0.120634662, + 0.126897599, + 0.125655693, + 0.122072076, + 0.123699567, + 0.125254531, + 0.124928335, + 0.12494319, + 0.120571841, + 0.122472147, + 0.126978375, + 0.122925217, + 0.118877029, + 0.125302872, + 0.120568438, + 0.12716571, + 0.119667499, + 0.119869435, + 0.124565743, + 0.125531023, + 0.124037777, + 0.127407129, + 0.122902725, + 0.127932368, + 0.127466375, + 0.127796412, + 0.123671928, + 0.123381076, + 0.117923919, + 0.127655303, + 0.128970701, + 0.122032089, + 0.122538667, + 0.124745604, + 0.124514985, + 0.120547457, + 0.126386589, + 0.129679912, + 0.124575461, + 0.124567503, + 0.122718095, + 0.125609052, + 0.128579484, + 0.127560495, + 0.122333435, + 0.128028228, + 0.120569618, + 0.122770157, + 0.127501598, + 0.122502054, + 0.126455323, + 0.124679869, + 0.125821033, + 0.124665604, + 0.123072073, + 0.126874507, + 0.128231908, + 0.12164182, + 0.125037447, + 0.12312374, + 0.125803004, + 0.124508016, + 0.129500988, + 0.125664771, + 0.121573835, + 0.127312568, + 0.117237058, + 0.116595371, + 0.124720144, + 0.121799046, + 0.117370059, + 0.117767304, + 0.12743704, + 0.126441177, + 0.121974507, + 0.127723686, + 0.128062865, + 0.123713384, + 0.120718512, + 0.123899464, + 0.128723666, + 0.127744297, + 0.125239858, + 0.11992982, + 0.128296616 ], "implementation": "rust-libp2p", - "version": "rust-v0.51", + "version": "v0.51", "transportStack": "quic-v1" }, { "result": [ - 0.1905508, - 0.19120069, - 0.19208843, - 0.18447545, - 0.19727789, - 0.19536076, - 0.19549216, - 0.1909243, - 0.18881956, - 0.19217543, - 0.1877395, - 0.18598732, - 0.19317727, - 0.19503729, - 0.17881867, - 0.1934256, - 0.187884, - 0.18333447, - 0.19611809, - 0.18792787, - 0.19242029, - 0.19255786, - 0.18546608, - 0.18191247, - 0.18786986, - 0.1923337, - 0.18841194, - 0.18253963, - 0.18228842, - 0.1851186, - 0.19316866, - 0.19420747, - 0.18459386, - 0.1910244, - 0.18564709, - 0.19383651, - 0.18947494, - 0.1849043, - 0.18606955, - 0.18700443, - 0.19366558, - 0.18035644, - 0.18951121, - 0.18696323, - 0.18936445, - 0.17857671, - 0.1836147, - 0.18801275, - 0.19045018, - 0.18924312, - 0.19615361, - 0.19372635, - 0.18651393, - 0.19028859, - 0.1893717, - 0.18552811, - 0.18736637, - 0.19309106, - 0.18693604, - 0.19023037, - 0.1871291, - 0.18655825, - 0.18646562, - 0.18466365, - 0.18961416, - 0.18048154, - 0.18884529, - 0.18006688, - 0.1932698, - 0.18488555, - 0.19532463, - 0.19325395, - 0.19368966, - 0.19409521, - 0.18709031, - 0.18488774, - 0.1890471, - 0.18583038, - 0.18771419, - 0.18709807, - 0.18651003, - 0.19030699, - 0.18543595, - 0.1907468, - 0.19577229, - 0.19353405, - 0.19091126, - 0.18190527, - 0.18919502, - 0.18638895, - 0.19068405, - 0.18348704, - 0.18883169, - 0.18787478, - 0.19052736, - 0.18179108, - 0.19308127, - 0.19171245, - 0.19040409, - 0.19386716 + 0.18320343, + 0.18536061, + 0.18361744, + 0.19435881, + 0.19297308, + 0.17911123, + 0.18771777, + 0.18616855, + 0.19002189, + 0.1932833, + 0.18328913, + 0.1849363, + 0.19637023, + 0.19462414, + 0.18167907, + 0.19653203, + 0.19244458, + 0.19403593, + 0.19658187, + 0.19360423, + 0.1878126, + 0.1950962, + 0.18683565, + 0.18880358, + 0.19160251, + 0.1934229, + 0.19295235, + 0.19242506, + 0.19079773, + 0.18370089, + 0.19053127, + 0.18591598, + 0.19645037, + 0.18677087, + 0.1821941, + 0.18339914, + 0.18658818, + 0.1934576, + 0.1852235, + 0.18171275, + 0.19248205, + 0.18724504, + 0.19660091, + 0.18020825, + 0.19356246, + 0.19059129, + 0.1908433, + 0.18162169, + 0.19812965, + 0.18996501, + 0.18189964, + 0.1853105, + 0.19334716, + 0.19054043, + 0.18878776, + 0.19199143, + 0.19069456, + 0.19355537, + 0.18092379, + 0.19440931, + 0.188115, + 0.18938051, + 0.19417661, + 0.1900581, + 0.1790652, + 0.18985173, + 0.19375472, + 0.18476903, + 0.18864189, + 0.18627912, + 0.18755183, + 0.19773859, + 0.185586, + 0.18950075, + 0.18825252, + 0.19602655, + 0.19072296, + 0.19385633, + 0.1878541, + 0.18805191, + 0.18851843, + 0.19145073, + 0.17907362, + 0.1818605, + 0.1912801, + 0.18049575, + 0.17909673, + 0.1890659, + 0.1919892, + 0.19699329, + 0.18649152, + 0.19280715, + 0.19561869, + 0.19330662, + 0.18367936, + 0.18593276, + 0.18934114, + 0.19334432, + 0.19124785, + 0.1819501 ], "implementation": "https", - "version": "https", + "version": "v0.1", "transportStack": "tcp" }, { "result": [ - 0.11886548, - 0.06207159, - 0.059752, - 0.06366672, - 0.117640115, - 0.060913656, - 0.06061558, - 0.12187687, - 0.06273285, - 0.060223714, - 0.12654272, - 0.062961616, - 0.060779184, - 0.06332914, - 0.12676404, - 0.06256747, - 0.06139459, - 0.12560034, - 0.12362937, - 0.06257865, - 0.11634072, - 0.124720946, - 0.1265982, - 0.06111584, - 0.12737016, - 0.061775804, - 0.06400239, - 0.12289581, - 0.123719655, - 0.12401232, - 0.06303235, - 0.1276448, - 0.06232622, - 0.12518571, - 0.06395094, - 0.123611346, - 0.06388889, - 0.063405804, - 0.12394694, - 0.06245831, - 0.06416768, - 0.06461364, - 0.12265379, - 0.0635013, - 0.123194255, - 0.059708185, - 0.061085, - 0.12135438, - 0.06308459, - 0.06435049, - 0.12202259, - 0.05987249, - 0.118559346, - 0.12069713, - 0.061908245, - 0.06249194, - 0.1227838, - 0.061034348, - 0.06484004, - 0.12327383, - 0.118593454, - 0.12120287, - 0.05972468, - 0.12287883, - 0.11924952, - 0.12340003, - 0.063479245, - 0.060867403, - 0.062849715, - 0.12474931, - 0.06292324, - 0.062693946, - 0.061772607, - 0.060404472, - 0.06379947, - 0.11889992, - 0.06086896, - 0.12163995, - 0.06321763, - 0.12439474, - 0.06108236, - 0.12368068, - 0.124439366, - 0.06258205, - 0.060899056, - 0.12354212, - 0.062890604, - 0.062237974, - 0.06260137, - 0.11898126, - 0.12497839, - 0.06353188, - 0.0636649, - 0.0627121, - 0.06411397, - 0.061960503, - 0.06246588, - 0.064078934, - 0.12232631, - 0.06406221 + 0.121910445, + 0.11881714, + 0.12565878, + 0.120740406, + 0.12369829, + 0.059684623, + 0.062413216, + 0.12297799, + 0.05914709, + 0.121276975, + 0.1275316, + 0.12616104, + 0.06367172, + 0.06365608, + 0.11770963, + 0.12578832, + 0.11637737, + 0.12519154, + 0.06280298, + 0.12279162, + 0.1280496, + 0.06273546, + 0.06382796, + 0.123510554, + 0.12652722, + 0.063152574, + 0.061366368, + 0.061252348, + 0.122583106, + 0.06320014, + 0.06368281, + 0.12935217, + 0.1272645, + 0.12278854, + 0.06265062, + 0.061963823, + 0.060819846, + 0.061983608, + 0.12717623, + 0.06352975, + 0.063989244, + 0.063381314, + 0.063970394, + 0.060427155, + 0.12220286, + 0.06254202, + 0.12677895, + 0.06205927, + 0.12242437, + 0.061617523, + 0.061746463, + 0.06292769, + 0.12955624, + 0.120770946, + 0.06198795, + 0.12360525, + 0.06355573, + 0.06294512, + 0.06212846, + 0.12300296, + 0.12280484, + 0.121470906, + 0.12500018, + 0.06442808, + 0.06139656, + 0.062791884, + 0.060238913, + 0.06299706, + 0.06510424, + 0.062770784, + 0.12278812, + 0.06269702, + 0.0634597, + 0.06203319, + 0.1255534, + 0.060937285, + 0.1206148, + 0.12486283, + 0.06401831, + 0.12350103, + 0.124673195, + 0.06171527, + 0.12783773, + 0.11993122, + 0.124730706, + 0.060521364, + 0.059129454, + 0.061679672, + 0.12909296, + 0.12940763, + 0.06199324, + 0.06338893, + 0.061646536, + 0.06442368, + 0.06122898, + 0.061356246, + 0.061156437, + 0.11956378, + 0.12571876, + 0.121949255 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "tcp" }, { "result": [ - 0.062166207, - 0.06347945, - 0.0634769, - 0.06262155, - 0.061401874, - 0.06067336, - 0.059668176, - 0.06126384, - 0.059219595, - 0.063664526, - 0.06478484, - 0.062126044, - 0.06131495, - 0.06097344, - 0.06302132, - 0.061447747, - 0.06006903, - 0.06428919, - 0.060735032, - 0.06438137, - 0.060805395, - 0.062184226, - 0.06131604, - 0.061692588, - 0.061749745, - 0.06237051, - 0.06424101, - 0.06246468, - 0.062390648, - 0.06321125, - 0.059326556, - 0.061613392, - 0.061730187, - 0.061770275, - 0.061853573, - 0.06375709, - 0.062096745, - 0.061394863, - 0.061692376, - 0.0592694, - 0.06454182, - 0.05867471, - 0.06171774, - 0.06226178, - 0.0617235, - 0.0628771, - 0.06174907, - 0.060809057, - 0.06382027, - 0.058840185, - 0.059617076, - 0.0630149, - 0.062986195, - 0.062970676, - 0.06340244, - 0.061709, - 0.065071106, - 0.06310097, - 0.06299079, - 0.062262863, - 0.062212706, - 0.061375078, - 0.06079732, - 0.061787553, - 0.06130792, - 0.0644198, - 0.061684314, - 0.06173436, - 0.062170528, - 0.06256191, - 0.0613262, - 0.06285372, - 0.062032223, - 0.062053975, - 0.06308158, - 0.061542917, - 0.06062959, - 0.06387708, - 0.060190577, - 0.060683966, - 0.061599143, - 0.060212366, - 0.06250237, - 0.061295517, - 0.06188249, - 0.06060551, - 0.061811384, - 0.064418614, - 0.06039328, - 0.05935275, - 0.06322118, - 0.062921494, - 0.063168146, - 0.06294009, - 0.06133466, - 0.06270723, - 0.06076044, - 0.06282397, - 0.058681328, - 0.06131034 + 0.061366297, + 0.06141815, + 0.06235603, + 0.05939474, + 0.06039162, + 0.06285481, + 0.062587045, + 0.06076747, + 0.061709136, + 0.0651515, + 0.06375983, + 0.06174513, + 0.06441085, + 0.06124736, + 0.0633643, + 0.062006813, + 0.064214155, + 0.06199964, + 0.059042238, + 0.0638644, + 0.061607417, + 0.06152012, + 0.061881498, + 0.063524246, + 0.064039655, + 0.06134695, + 0.062953085, + 0.06384624, + 0.06427768, + 0.06291174, + 0.063121215, + 0.064400375, + 0.060993534, + 0.06326786, + 0.06498396, + 0.06366782, + 0.06421878, + 0.05991633, + 0.061237972, + 0.06097275, + 0.06281252, + 0.063318364, + 0.06220533, + 0.059357736, + 0.062972456, + 0.06279454, + 0.06431296, + 0.061344843, + 0.060761552, + 0.062238023, + 0.064125076, + 0.060153004, + 0.06452732, + 0.062090736, + 0.063264675, + 0.063170955, + 0.06424445, + 0.06410372, + 0.060594898, + 0.063670315, + 0.058708303, + 0.059632868, + 0.05994657, + 0.06230721, + 0.06079447, + 0.062781, + 0.0634743, + 0.061454855, + 0.06413592, + 0.06086088, + 0.06315938, + 0.062183496, + 0.060575858, + 0.06285511, + 0.064148664, + 0.06287306, + 0.06424426, + 0.06077488, + 0.0604213, + 0.06092073, + 0.061406802, + 0.060680717, + 0.06267789, + 0.061268207, + 0.062574886, + 0.06418872, + 0.06184111, + 0.06153584, + 0.061698426, + 0.06317972, + 0.05922345, + 0.06279262, + 0.06402876, + 0.06379871, + 0.06081787, + 0.06390525, + 0.06378799, + 0.06364002, + 0.063555226, + 0.058329925 ], "implementation": "go-libp2p", - "version": "go-v0.27.0", + "version": "v0.27", "transportStack": "quic-v1" } ] } ] -} +} \ No newline at end of file diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 85ab36c4e..a2ba9d809 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -5,10 +5,8 @@ import fs from 'fs'; import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; async function main(clientPublicIP: string, serverPublicIP: string) { - for (const version of versions) { - transferDockerImage(serverPublicIP, version.containerImageID); - transferDockerImage(clientPublicIP, version.containerImageID); - } + copyAndBuildPerfImplementations(serverPublicIP); + copyAndBuildPerfImplementations(clientPublicIP); const benchmarkResults: BenchmarkResults = { benchmarks: [ @@ -66,26 +64,25 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench for (const version of versions) { console.error(`== Version ${version.implementation}/${version.id}`) - // The `if` is a hack for zig. - if (version.serverAddress == undefined) { - console.error(`=== Starting ${version.id} server.`); - let serverCMD: string - if (version.implementation === "zig-libp2p") { - // Hack! - serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server'`; - } else { - serverCMD = `ssh ec2-user@${args.serverPublicIP} 'docker stop $(docker ps -aq); docker run --init -d --restart always --network host ${version.containerImageID} --run-server --secret-key-seed 0'`; - } - const serverSTDOUT = execCommand(serverCMD); - console.error(serverSTDOUT); - } + // ssh user@your-server "kill \$(cat pidfile) && rm pidfile" + // ssh user@your-server "nohup your-command > output.log 2>&1 & echo \$! > pidfile" + + console.error(`=== Starting server ${version.implementation}/${version.id}`); + + let killCMD = `ssh ec2-user@${args.serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; + const killSTDOUT = execCommand(killCMD); + console.error(killSTDOUT); + + let serverCMD = `ssh ec2-user@${args.serverPublicIP} 'nohup ./impl/${version.implementation}/${version.id}/perf --run-server --secret-key-seed 0 > server.log 2>&1 & echo \$! > pidfile '`; + const serverSTDOUT = execCommand(serverCMD); + console.error(serverSTDOUT); for (const transportStack of version.transportStacks) { - const latencies = runBenchmark({ + const latencies = runClient({ clientPublicIP: args.clientPublicIP, serverPublicIP: args.serverPublicIP, - serverAddress: version.serverAddress, - dockerImageId: version.containerImageID, + id: version.id, + implementation: version.implementation, transportStack: transportStack, uploadBytes: args.uploadBytes, downloadBytes: args.downloadBytes, @@ -119,7 +116,8 @@ interface ArgsRunBenchmark { clientPublicIP: string; serverPublicIP: string; serverAddress?: string; - dockerImageId: string; + id: string, + implementation: string, transportStack: string, uploadBytes: number, downloadBytes: number, @@ -131,13 +129,12 @@ interface Latencies { } -function runBenchmark(args: ArgsRunBenchmark): Latencies { - console.error(`=== Starting ${args.transportStack} client.`); +function runClient(args: ArgsRunBenchmark): Latencies { + console.error(`=== Starting client ${args.implementation}/${args.id}/${args.transportStack}`); // TODO: Remove static --n-times. - const binFlags = `--server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` - const dockerCMD = `docker run --init --rm --network host ${args.dockerImageId} ${binFlags}` - const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${dockerCMD}; done'` + const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` + const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` const stdout = execCommand(cmd); // TODO: Does it really still make sense for the binary to return an array? @@ -168,18 +165,12 @@ function execCommand(cmd: string): string { } } -async function transferDockerImage(serverIp: string, imageSha256: string): Promise { - const imageName = `image-${imageSha256.slice(0, 12)}`; - const tarballName = `${imageName}.tar`; - - // Save the Docker image as a tarball, transfer it using rsync, load it on the remote server, and clean up tarball files locally. - console.error(`== Transferring Docker image ${imageSha256} to ${serverIp}`); - execCommand(`docker save -o ${tarballName} ${imageSha256} && - rsync -avz --progress ./${tarballName} ec2-user@${serverIp}:/tmp/ && - ssh ec2-user@${serverIp} 'docker load -i /tmp/${tarballName}' && - rm ${tarballName}`); +function copyAndBuildPerfImplementations(ip: string) { + const stdout = execCommand(`rsync -avz --progress ../impl ec2-user@${ip}:/home/ec2-user`); + console.log(stdout.toString()); - console.error(`=== Docker image ${imageSha256} transferred successfully to ${serverIp}`); + const stdout2 = execCommand(`ssh ec2-user@${ip} 'cd impl && make'`); + console.log(stdout2.toString()); } const argv = yargs diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 79f77fc4f..0abf377b4 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,39 +1,28 @@ -import rustv051 from "../../impl/rust/v0.51/image.json" -import go027 from "../../impl/go/v0.27/image.json" -import https from "../../impl/https/image.json" - export type Version = { id: string, implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https", - containerImageID: string, transportStacks: string[], - serverAddress?: string, } export const versions: Array = [ { - id: "rust-v0.51", + id: "v0.51", implementation: "rust-libp2p", - containerImageID: rustv051.imageID, transportStacks: ["tcp", "quic-v1"] }, { - id: "https", + id: "v0.1", implementation: "https", - containerImageID: https.imageID, transportStacks: ["tcp"] }, { - id: "go-v0.27.0", + id: "v0.27", implementation: "go-libp2p", - containerImageID: go027.imageID, transportStacks: ["tcp", "quic-v1"] }, // { // id: "zig-libp2p-v0.0.1", // implementation: "zig-libp2p", - // containerImageID: "marcop010/zig-libp2p-perf@sha256:6a9f11961092cbebef93a55f5160fdd8584b7a11957b37b70d513e0948164353", // transportStacks: ["quic-v1"], - // // serverAddress: "/ip4/13.56.168.61/udp/35052/quic-v1/p2p/12D3KooWKa5rDq3YhVzvAnvRoCrXhkWpA1CRsfY2hrBt2QYzLWih" // }, ] diff --git a/perf/terraform/user-data.sh b/perf/terraform/user-data.sh index e2286e9ae..f6fcb3e74 100644 --- a/perf/terraform/user-data.sh +++ b/perf/terraform/user-data.sh @@ -8,3 +8,5 @@ sudo yum install docker -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user + +sudo yum install make -y From d1b7d00091b8500491e575fb159e60401619e269 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 15:57:55 +0900 Subject: [PATCH 068/101] fix(perf/https): use duration Seconds() --- perf/impl/https/v0.1/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index abeb4b3c3..0849150c8 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -191,7 +191,7 @@ func main() { // Convert durations to seconds and marshal as JSON timesS := make([]float32, 0, len(durations)) for _, d := range durations { - timesS = append(timesS, float32(d.Nanoseconds())/1_000_000_000) + timesS = append(timesS, float32(d.Seconds())) } latencies := Latencies{ From 17a0d1d7b57b588f9087088ec1dd632fb3d5d33e Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 15:59:48 +0900 Subject: [PATCH 069/101] fix(perf/go-libp2p): use duration Seconds() --- perf/impl/go-libp2p/v0.27/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index e6ee668b8..92fea1940 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -85,7 +85,7 @@ func main() { // float32 because json timesS := make([]float32, 0, len(times)) for _, t := range times { - timesS = append(timesS, float32(t.Nanoseconds())/1_000_000_000) + timesS = append(timesS, float32(t.Seconds())) } latencies := Latencies{ From 1f87937e5f4474db7830cb4ec1fb338c5424ff55 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 16:05:18 +0900 Subject: [PATCH 070/101] fix: use uint64 for command line flags --- perf/impl/go-libp2p/v0.27/main.go | 8 ++++---- perf/impl/https/v0.1/main.go | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 92fea1940..327f9e6fd 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -18,9 +18,9 @@ func main() { serverIPAddr := flag.String("server-ip-address", "", "Server address") transport := flag.String("transport", "tcp", "Transport to use") secretKeySeed := flag.Uint64("secret-key-seed", 0, "Server secret key seed") - uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") - downloadBytes := flag.Int("download-bytes", 0, "Download bytes") - nTimes := flag.Int("n-times", 0, "N times") + uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") + downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") + nTimes := flag.Uint64("n-times", 0, "N times") flag.Parse() @@ -73,7 +73,7 @@ func main() { times := make([]time.Duration, 0, *nTimes) - for i := 0; i < *nTimes; i++ { + for i := 0; uint64(i) < *nTimes; i++ { start := time.Now() err := perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) if err != nil { diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index 0849150c8..4e776985b 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -53,7 +53,7 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { } } -func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) ([]time.Duration, error) { +func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes uint64) ([]time.Duration, error) { durations := make([]time.Duration, nTimes) client := &http.Client{ @@ -67,7 +67,7 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) ([]tim reqBody := make([]byte, 8+uploadBytes) binary.BigEndian.PutUint64(reqBody, uint64(downloadBytes)) - for i := 0; i < nTimes; i++ { + for i := 0; uint64(i) < nTimes; i++ { startTime := time.Now() resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) if err != nil { @@ -78,7 +78,7 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes int) ([]tim if err != nil { fmt.Printf("Error reading response: %v\n", err) return durations, err - } else if len(respBody) != downloadBytes { + } else if uint64(len(respBody)) != downloadBytes { fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) return durations, err } @@ -146,9 +146,9 @@ func main() { serverIPAddr := flag.String("server-ip-address", "", "Server address") _ = flag.String("transport", "", "Transport to use") _ = flag.Uint64("secret-key-seed", 0, "Server secret key seed") - uploadBytes := flag.Int("upload-bytes", 0, "Upload bytes") - downloadBytes := flag.Int("download-bytes", 0, "Download bytes") - nTimes := flag.Int("n-times", 0, "N times") + uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") + downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") + nTimes := flag.Uint64("n-times", 0, "N times") flag.Parse() if *runServer { From 14cde8c59c47526c89dbcfad1ca29a8d2314f6f0 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 16:14:30 +0900 Subject: [PATCH 071/101] Move schema tool and remove test data --- perf/dashboard/benchmark-result-type.ts | 25 --- perf/dashboard/benchmarks.schema.json | 98 ----------- perf/dashboard/example-data.json | 161 ------------------ perf/{dashboard => runner}/util/.gitignore | 0 perf/{dashboard => runner}/util/README.md | 0 perf/{dashboard => runner}/util/main.ts | 0 .../util/package-lock.json | 0 perf/{dashboard => runner}/util/package.json | 0 perf/{dashboard => runner}/util/tsconfig.json | 0 9 files changed, 284 deletions(-) delete mode 100644 perf/dashboard/benchmark-result-type.ts delete mode 100644 perf/dashboard/benchmarks.schema.json delete mode 100644 perf/dashboard/example-data.json rename perf/{dashboard => runner}/util/.gitignore (100%) rename perf/{dashboard => runner}/util/README.md (100%) rename perf/{dashboard => runner}/util/main.ts (100%) rename perf/{dashboard => runner}/util/package-lock.json (100%) rename perf/{dashboard => runner}/util/package.json (100%) rename perf/{dashboard => runner}/util/tsconfig.json (100%) diff --git a/perf/dashboard/benchmark-result-type.ts b/perf/dashboard/benchmark-result-type.ts deleted file mode 100644 index 2cff246af..000000000 --- a/perf/dashboard/benchmark-result-type.ts +++ /dev/null @@ -1,25 +0,0 @@ -export type BenchmarkResults = { - benchmarks: Benchmark[], - // For referencing this schema in JSON - "$schema"?: string -}; - -export type Benchmark = { - name: string, - unit: "bits/s" | "s", - results: Result[], - comparisons: Comparison[], - -} - -export type Result = { - result: number, - implementation: string, - transportStack: string, - version: string -}; - -export type Comparison = { - name: string, - result: number, -} \ No newline at end of file diff --git a/perf/dashboard/benchmarks.schema.json b/perf/dashboard/benchmarks.schema.json deleted file mode 100644 index 3a2e993df..000000000 --- a/perf/dashboard/benchmarks.schema.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/definitions/BenchmarkResults", - "definitions": { - "BenchmarkResults": { - "type": "object", - "properties": { - "benchmarks": { - "type": "array", - "items": { - "$ref": "#/definitions/Benchmark" - } - }, - "$schema": { - "type": "string" - } - }, - "required": [ - "benchmarks" - ], - "additionalProperties": false - }, - "Benchmark": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "unit": { - "type": "string", - "enum": [ - "bits/s", - "s" - ] - }, - "results": { - "type": "array", - "items": { - "$ref": "#/definitions/Result" - } - }, - "comparisons": { - "type": "array", - "items": { - "$ref": "#/definitions/Comparison" - } - } - }, - "required": [ - "name", - "unit", - "results", - "comparisons" - ], - "additionalProperties": false - }, - "Result": { - "type": "object", - "properties": { - "result": { - "type": "number" - }, - "implementation": { - "type": "string" - }, - "transportStack": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "result", - "implementation", - "transportStack", - "version" - ], - "additionalProperties": false - }, - "Comparison": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "result": { - "type": "number" - } - }, - "required": [ - "name", - "result" - ], - "additionalProperties": false - } - } -} \ No newline at end of file diff --git a/perf/dashboard/example-data.json b/perf/dashboard/example-data.json deleted file mode 100644 index 2388d068c..000000000 --- a/perf/dashboard/example-data.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "./benchmarks.schema.json", - "benchmarks": [ - { - "name": "Single Connection throughput – Upload", - "unit": "bits/s", - "comparisons": [ - { - "name": "http", - "result": 1234 - } - ], - "results": [ - { - "result": 1100, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.24.2" - }, - { - "result": 1000, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.25.1" - }, - { - "result": 8234, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.26.2" - }, - { - "result": 4000, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.50.0" - }, - { - "result": 8000, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.51.0" - }, - { - "result": 6000, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.52.0" - }, - { - "result": 9001, - "implementation": "zig-libp2p", - "transportStack": "quic-v1", - "version": "v0.0.1" - }, - { - "result": 9002, - "implementation": "zig-libp2p", - "transportStack": "quic-v1", - "version": "v0.0.2" - }, - { - "result": 201, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.41.0" - }, - { - "result": 302, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.42.0" - }, - { - "result": 501, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.43.0" - } - ] - }, - { - "name": "Single Connection 1 byte round trip latency", - "unit": "s", - "comparisons": [ - { - "name": "http", - "result": 1.234 - } - ], - "results": [ - { - "result": 0.100, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.24.2" - }, - { - "result": 0.100, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.25.1" - }, - { - "result": 0.834, - "implementation": "go-libp2p", - "transportStack": "quic-v1", - "version": "v0.26.2" - }, - { - "result": 0.400, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.50.0" - }, - { - "result": 0.800, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.51.0" - }, - { - "result": 0.600, - "implementation": "rust-libp2p", - "transportStack": "quic-v1", - "version": "v0.52.0" - }, - { - "result": 0.901, - "implementation": "zig-libp2p", - "transportStack": "quic-v1", - "version": "v0.0.1" - }, - { - "result": 0.902, - "implementation": "zig-libp2p", - "transportStack": "quic-v1", - "version": "v0.0.2" - }, - { - "result": 0.201, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.41.0" - }, - { - "result": 0.302, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.42.0" - }, - { - "result": 0.501, - "implementation": "js-libp2p", - "transportStack": "tcp+noise+yamux", - "version": "v0.43.0" - } - ] - } - ] -} \ No newline at end of file diff --git a/perf/dashboard/util/.gitignore b/perf/runner/util/.gitignore similarity index 100% rename from perf/dashboard/util/.gitignore rename to perf/runner/util/.gitignore diff --git a/perf/dashboard/util/README.md b/perf/runner/util/README.md similarity index 100% rename from perf/dashboard/util/README.md rename to perf/runner/util/README.md diff --git a/perf/dashboard/util/main.ts b/perf/runner/util/main.ts similarity index 100% rename from perf/dashboard/util/main.ts rename to perf/runner/util/main.ts diff --git a/perf/dashboard/util/package-lock.json b/perf/runner/util/package-lock.json similarity index 100% rename from perf/dashboard/util/package-lock.json rename to perf/runner/util/package-lock.json diff --git a/perf/dashboard/util/package.json b/perf/runner/util/package.json similarity index 100% rename from perf/dashboard/util/package.json rename to perf/runner/util/package.json diff --git a/perf/dashboard/util/tsconfig.json b/perf/runner/util/tsconfig.json similarity index 100% rename from perf/dashboard/util/tsconfig.json rename to perf/runner/util/tsconfig.json From 6ef0d6cbce6eb4d55c204a1924faefe427574007 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 16:16:14 +0900 Subject: [PATCH 072/101] Remove commented out code --- perf/runner/src/index.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index a2ba9d809..8323a6a3c 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -64,9 +64,6 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench for (const version of versions) { console.error(`== Version ${version.implementation}/${version.id}`) - // ssh user@your-server "kill \$(cat pidfile) && rm pidfile" - // ssh user@your-server "nohup your-command > output.log 2>&1 & echo \$! > pidfile" - console.error(`=== Starting server ${version.implementation}/${version.id}`); let killCMD = `ssh ec2-user@${args.serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; From b21af98651837b66cd43b37b14fe7340fcf775ad Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 16:26:09 +0900 Subject: [PATCH 073/101] Improve perf/README --- perf/README.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/perf/README.md b/perf/README.md index 23caae3a1..4b05627dd 100644 --- a/perf/README.md +++ b/perf/README.md @@ -1,18 +1,32 @@ -# libp2p perf testing +# libp2p performance benchmarking -## Setup +This project includes the following components: + +- `terraform/`: a Terraform scripts to provision infrastructure +- `impl/`: implementations of the [libp2p perf protocol](https://github.com/libp2p/specs/pull/478) running on top of e.g. go-libp2p, rust-libp2p or Go's std-library https stack +- `runner/`: a set of scripts building and running the above implementations on the above infrastructure, reporting the results in `benchmark-results.json` + +Benchmark results can be visualized with https://observablehq.com/@mxinden-workspace/libp2p-perf. + +## Provision infrastructure 1. `cd terraform` 2. Save your public SSH key as the file `./user.pub`. 3. `terraform init` 4. `terraform apply` -## Execute +## Build and run implementations 1. `cd runner` 2. `npm ci` 3. `npm run start -- --client-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate client_public_ip) --server-public-ip $(terraform output -raw -state ../terraform/terraform.tfstate server_public_ip)` -## Add benchmark binary +## Deprovision infrastructure + +1. `cd terraform` +3. `terraform destroy` + +## Adding a new implementation -See `runner/src/versions.ts`. +1. Add implementation to `impl/`. +2. Reference implementation in `runner/src/versions.ts`. From fa41f02dd85e72a04004e11edc469db4d9fe4d3d Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 8 May 2023 16:38:56 +0900 Subject: [PATCH 074/101] Replace RSA with eliptic curve --- perf/impl/https/v0.1/main.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index 4e776985b..cfb9ba1c7 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -2,18 +2,19 @@ package main import ( "bytes" - "encoding/json" - "io/ioutil" + "crypto/ecdsa" + "crypto/elliptic" "crypto/rand" - "crypto/rsa" "crypto/tls" "crypto/x509" "crypto/x509/pkix" "encoding/binary" + "encoding/json" "encoding/pem" "flag" "fmt" "io" + "io/ioutil" "math/big" "net" "net/http" @@ -91,8 +92,8 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes uint64) ([] } func generateEphemeralCertificate() (tls.Certificate, error) { - // Generate a private key - privKey, err := rsa.GenerateKey(rand.Reader, 2048) + // Generate an ECDSA private key + privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { return tls.Certificate{}, err } @@ -126,7 +127,11 @@ func generateEphemeralCertificate() (tls.Certificate, error) { // PEM encode the certificate and private key certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER}) - privKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privKey)}) + privKeyBytes, err := x509.MarshalECPrivateKey(privKey) + if err != nil { + return tls.Certificate{}, err + } + privKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "EC PRIVATE KEY", Bytes: privKeyBytes}) // Create a tls.Certificate from the PEM encoded certificate and private key cert, err := tls.X509KeyPair(certPEM, privKeyPEM) @@ -152,7 +157,6 @@ func main() { flag.Parse() if *runServer { - // Generate an ephemeral TLS certificate and private key cert, err := generateEphemeralCertificate() if err != nil { From e1d681092cfad560fa35ee20bccc1a1b3e82cf72 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 10 May 2023 15:02:11 +0900 Subject: [PATCH 075/101] Increase iterations and commit results --- perf/runner/benchmark-results.json | 5610 +++++++++++++++++++++++++--- perf/runner/src/index.ts | 6 +- 2 files changed, 5103 insertions(+), 513 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index efae8fa7e..b48a1b8ea 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,7 +6,16 @@ "results": [ { "result": [ - 20290461.854966406 + 24297848.965686653, + 21923293.0555712, + 21673455.25199101, + 20648639.851346083, + 23050220.29519616, + 23354010.21369026, + 22609840.711642783, + 23737695.901063852, + 24181213.226368435, + 23613709.527208574 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -14,7 +23,16 @@ }, { "result": [ - 53647941.63433479 + 48015820.5309386, + 55310640.224539585, + 61938887.22992043, + 98827657.42509778, + 45395940.92430345, + 100603753.41099809, + 71979617.00712337, + 116886172.67991772, + 84047998.03957845, + 59653860.205058016 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -22,7 +40,16 @@ }, { "result": [ - 299414670.3268659 + 294969298.9385426, + 309328415.11726046, + 310148492.97909164, + 310234806.0960345, + 307254422.1394683, + 294533881.77456516, + 326936373.0028434, + 321825133.404075, + 316732380.34808207, + 309343917.2322349 ], "implementation": "https", "version": "v0.1", @@ -30,7 +57,16 @@ }, { "result": [ - 265595689.8856188 + 271976899.8501771, + 283430038.77114886, + 270248612.31371295, + 260217859.2738469, + 274343812.12800866, + 291368790.4747234, + 268021151.04887787, + 271109007.23476994, + 274563664.2702893, + 295567992.37695616 ], "implementation": "go-libp2p", "version": "v0.27", @@ -38,7 +74,16 @@ }, { "result": [ - 632056139.5154513 + 633162414.0126168, + 649114453.9991273, + 623913167.8159407, + 617251972.3516471, + 626352210.0723246, + 602895557.568256, + 610521089.4347842, + 619133118.5123696, + 631877934.9725114, + 606560852.5597066 ], "implementation": "go-libp2p", "version": "v0.27", @@ -52,7 +97,16 @@ "results": [ { "result": [ - 23993107.455116663 + 23931659.643195994, + 22389029.16893598, + 23506058.158813752, + 24431439.92130016, + 19141195.485931523, + 24121731.163703118, + 20853926.38317422, + 21303279.463220824, + 23916906.64143749, + 24163076.553794984 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -60,7 +114,16 @@ }, { "result": [ - 51007769.31364293 + 29907431.52825819, + 31563154.76576576, + 27263031.31975764, + 47989509.37945617, + 35624839.751651496, + 44701337.1676974, + 18458648.78085266, + 29327317.117728654, + 42888018.68802828, + 39632293.52634057 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -68,7 +131,16 @@ }, { "result": [ - 295734786.15972674 + 282796314.3671489, + 290646906.51175123, + 263808325.50556374, + 286250896.55929726, + 288718359.6148498, + 297905402.35799825, + 268806331.32099956, + 262884718.77087423, + 288606312.82271475, + 283002944.2588033 ], "implementation": "https", "version": "v0.1", @@ -76,7 +148,16 @@ }, { "result": [ - 259730181.32670394 + 286495714.9829712, + 279471522.606618, + 277632014.25100857, + 293305408.16950905, + 279802455.372108, + 282629260.2439027, + 252406959.8130326, + 265896505.9870716, + 281306417.3321556, + 279630398.6081096 ], "implementation": "go-libp2p", "version": "v0.27", @@ -84,7 +165,16 @@ }, { "result": [ - 634222072.0199658 + 613134750.9353501, + 628762416.4643462, + 614806408.6504056, + 627440373.9237688, + 602642613.2850794, + 613932595.8479267, + 628395688.2954804, + 634345136.7826666, + 637952373.0214682, + 628142064.5341487 ], "implementation": "go-libp2p", "version": "v0.27", @@ -98,106 +188,1006 @@ "results": [ { "result": [ - 0.127828854, - 0.120534387, - 0.12044871, - 0.125737917, - 0.118503398, - 0.126308489, - 0.125622508, - 0.128124063, - 0.123360196, - 0.125409024, - 0.121635772, - 0.120267774, - 0.123290571, - 0.116399527, - 0.129182089, - 0.124196457, - 0.123145711, - 0.125422459, - 0.125460983, - 0.124068713, - 0.124166576, - 0.118302336, - 0.124427211, - 0.123611906, - 0.122429595, - 0.12508232, - 0.12342625, - 0.128447371, - 0.12399178, - 0.127087593, - 0.12443394, - 0.126314451, - 0.128266032, - 0.124901336, - 0.120399578, - 0.123844069, - 0.123465545, - 0.126041535, - 0.127494366, - 0.121576234, - 0.121962232, - 0.127439657, - 0.124313683, - 0.128025549, - 0.12720989, - 0.127093446, - 0.125278966, - 0.128942384, - 0.123069833, - 0.123261723, - 0.121481512, - 0.122424114, - 0.121566236, - 0.122907267, - 0.12080229, - 0.118436975, - 0.126521897, - 0.128883921, - 0.120129619, - 0.128584914, - 0.124406185, - 0.130316659, - 0.124205897, - 0.124278855, - 0.123542628, - 0.124181753, - 0.125956835, - 0.127277402, - 0.124634619, - 0.126092548, - 0.123038641, - 0.130131343, - 0.125360625, - 0.124763501, - 0.1251226, - 0.120595955, - 0.126249329, - 0.12340895, - 0.126857356, - 0.124856843, - 0.126279967, - 0.12308499, - 0.124558394, - 0.125211736, - 0.125498407, - 0.12834632, - 0.127284325, - 0.126912314, - 0.124714709, - 0.126572113, - 0.121492794, - 0.122410126, - 0.120395254, - 0.122346675, - 0.126625206, - 0.12599842, - 0.129794383, - 0.122657057, - 0.12685624, - 0.123413465 + 0.118708025, + 0.120662575, + 0.12077141, + 0.122032007, + 0.12679386, + 0.127471021, + 0.127703286, + 0.124456247, + 0.126256011, + 0.127428117, + 0.128788393, + 0.124595846, + 0.126765333, + 0.120161089, + 0.128168983, + 0.130045079, + 0.124847787, + 0.120375786, + 0.126149762, + 0.121507935, + 0.123929109, + 0.126584443, + 0.124447938, + 0.124345444, + 0.127087835, + 0.122631148, + 0.120826701, + 0.122239615, + 0.12653323, + 0.126088594, + 0.12211283, + 0.120554862, + 0.122688752, + 0.122637588, + 0.123746209, + 0.128505612, + 0.119691029, + 0.127658395, + 0.124587116, + 0.122507846, + 0.121651037, + 0.126443226, + 0.125645957, + 0.125356695, + 0.12508606, + 0.122325756, + 0.122489518, + 0.124691128, + 0.117970015, + 0.125844691, + 0.128364252, + 0.127122802, + 0.125322411, + 0.120463484, + 0.11772758, + 0.127847295, + 0.125020985, + 0.121457264, + 0.121668718, + 0.128815939, + 0.12546786, + 0.12092391, + 0.124230375, + 0.121840079, + 0.125565518, + 0.126575812, + 0.124049459, + 0.125619629, + 0.126204958, + 0.127695068, + 0.128820585, + 0.124046756, + 0.122700304, + 0.127424603, + 0.127950874, + 0.123313375, + 0.123691833, + 0.125756906, + 0.122742648, + 0.124052248, + 0.125057288, + 0.129164301, + 0.127552354, + 0.123751195, + 0.125162921, + 0.12508124, + 0.127162664, + 0.122878798, + 0.121421035, + 0.127226063, + 0.123386515, + 0.123162674, + 0.124578475, + 0.128678368, + 0.125575896, + 0.122732913, + 0.125365954, + 0.125408901, + 0.121266582, + 0.123748713, + 0.125357876, + 0.122400784, + 0.12813542, + 0.12616047, + 0.123170462, + 0.121823135, + 0.118384558, + 0.125197619, + 0.122086086, + 0.124248491, + 0.12322321, + 0.12343038, + 0.126588438, + 0.122080794, + 0.12051462, + 0.125885823, + 0.126471138, + 0.120803506, + 0.122824592, + 0.121590597, + 0.125033763, + 0.129228072, + 0.121651954, + 0.120225807, + 0.123019678, + 0.124525159, + 0.128295908, + 0.126310442, + 0.119700262, + 0.124729085, + 0.125501854, + 0.130710789, + 0.126842895, + 0.127503638, + 0.128660203, + 0.117822177, + 0.127250142, + 0.128082319, + 0.121559025, + 0.119798573, + 0.123236233, + 0.128433038, + 0.126820261, + 0.128878975, + 0.123451981, + 0.125856069, + 0.122498154, + 0.12151196, + 0.125353686, + 0.126887558, + 0.127173614, + 0.118470161, + 0.124264679, + 0.130104999, + 0.124676678, + 0.123821018, + 0.130664593, + 0.121481383, + 0.126264708, + 0.124020668, + 0.128515466, + 0.126762388, + 0.123192222, + 0.125533746, + 0.124787269, + 0.119874023, + 0.124173855, + 0.121524975, + 0.129321582, + 0.128294448, + 0.130031141, + 0.124263198, + 0.126759214, + 0.129250536, + 0.118551014, + 0.126320116, + 0.124223076, + 0.120577845, + 0.124484885, + 0.128548059, + 0.122795707, + 0.124533399, + 0.127014953, + 0.118749467, + 0.119451069, + 0.119713436, + 0.127614323, + 0.125727012, + 0.121612066, + 0.125468601, + 0.122883611, + 0.12201574, + 0.123054948, + 0.125455077, + 0.119418582, + 0.123583782, + 0.122735563, + 0.122881766, + 0.122697339, + 0.127380866, + 0.126882196, + 0.122456005, + 0.118151034, + 0.125599191, + 0.124438903, + 0.12661281, + 0.125406779, + 0.128615534, + 0.123357254, + 0.121754512, + 0.119024195, + 0.124562114, + 0.127618854, + 0.122793415, + 0.11756141, + 0.126656776, + 0.122907544, + 0.126787245, + 0.12833515, + 0.118627955, + 0.127416851, + 0.12436124, + 0.124889796, + 0.125945733, + 0.128859302, + 0.124007921, + 0.119686557, + 0.123732717, + 0.124347037, + 0.127730455, + 0.124986743, + 0.125823057, + 0.124722544, + 0.123611282, + 0.122789136, + 0.12688706, + 0.125288333, + 0.123141177, + 0.117551557, + 0.123979958, + 0.125871081, + 0.121379819, + 0.127712625, + 0.127231455, + 0.12650458, + 0.121119709, + 0.122816276, + 0.128649107, + 0.128850058, + 0.121321224, + 0.122361302, + 0.129035606, + 0.123317588, + 0.124701733, + 0.123005721, + 0.128695215, + 0.12684932, + 0.119553361, + 0.124199946, + 0.128187433, + 0.12185619, + 0.125065404, + 0.124123695, + 0.120282288, + 0.121731667, + 0.122419776, + 0.125521889, + 0.126512338, + 0.128669831, + 0.126115017, + 0.126412252, + 0.127238272, + 0.126808225, + 0.128631127, + 0.129319925, + 0.125399222, + 0.127903976, + 0.128804396, + 0.125618085, + 0.118882093, + 0.121209951, + 0.127249784, + 0.120187602, + 0.121931453, + 0.127155943, + 0.122429256, + 0.123409502, + 0.122504741, + 0.129989166, + 0.122145042, + 0.126937676, + 0.126972719, + 0.120692021, + 0.125696201, + 0.124660727, + 0.117844194, + 0.129356703, + 0.123823274, + 0.126521087, + 0.128965648, + 0.117390969, + 0.123514944, + 0.122392453, + 0.121935222, + 0.12756497, + 0.123542481, + 0.129943382, + 0.125515099, + 0.125728489, + 0.123740808, + 0.123487472, + 0.123046592, + 0.129047833, + 0.122876118, + 0.121986615, + 0.127786389, + 0.122316263, + 0.125890442, + 0.125771029, + 0.127109217, + 0.122519393, + 0.124374593, + 0.127475971, + 0.12841399, + 0.123537575, + 0.120339219, + 0.127332273, + 0.125507393, + 0.123801009, + 0.126589086, + 0.125250908, + 0.125807669, + 0.123474058, + 0.125156174, + 0.122130043, + 0.118624929, + 0.12374655, + 0.128478434, + 0.123204801, + 0.124430866, + 0.123658112, + 0.120494037, + 0.119714225, + 0.123213917, + 0.120615621, + 0.128174296, + 0.1226347, + 0.125389929, + 0.122287528, + 0.125457602, + 0.12446302, + 0.126251889, + 0.121502582, + 0.121559097, + 0.123194607, + 0.12138731, + 0.125391952, + 0.124398384, + 0.118450586, + 0.12797538, + 0.123256652, + 0.121917324, + 0.124193694, + 0.126767608, + 0.125145827, + 0.119557915, + 0.121883824, + 0.125269004, + 0.121650708, + 0.127348147, + 0.120850509, + 0.121883313, + 0.120661541, + 0.126544364, + 0.129665741, + 0.128015657, + 0.122706812, + 0.124696905, + 0.126537264, + 0.127582166, + 0.126088394, + 0.117669263, + 0.128862292, + 0.120629074, + 0.126972384, + 0.118719469, + 0.12854843, + 0.124496807, + 0.127609562, + 0.128177356, + 0.116743496, + 0.124631597, + 0.12556167, + 0.121610203, + 0.1271917, + 0.124742791, + 0.124687169, + 0.121643251, + 0.123609053, + 0.124607956, + 0.126043977, + 0.124775413, + 0.121618859, + 0.121765353, + 0.122560934, + 0.12627415, + 0.124218292, + 0.121637179, + 0.121441486, + 0.123172533, + 0.116086712, + 0.123396818, + 0.123397175, + 0.121071348, + 0.122808139, + 0.122640596, + 0.125466402, + 0.125758782, + 0.122730715, + 0.124810406, + 0.124107244, + 0.126649347, + 0.122686957, + 0.121606572, + 0.124531283, + 0.127690974, + 0.127621042, + 0.123592264, + 0.125437923, + 0.128248422, + 0.118492231, + 0.12814658, + 0.120478989, + 0.129087989, + 0.123796032, + 0.128364445, + 0.127642972, + 0.121363946, + 0.125370163, + 0.124506184, + 0.128365308, + 0.126320579, + 0.118599321, + 0.122432984, + 0.128793055, + 0.124908536, + 0.121700574, + 0.126190845, + 0.124303329, + 0.124427597, + 0.121768009, + 0.12145053, + 0.124591516, + 0.125149043, + 0.120107462, + 0.12144375, + 0.12620275, + 0.123140928, + 0.122833321, + 0.124768853, + 0.123952554, + 0.123675231, + 0.127788006, + 0.127365369, + 0.12298062, + 0.12187875, + 0.119704229, + 0.128194999, + 0.126878729, + 0.124284258, + 0.12397844, + 0.125826281, + 0.127090371, + 0.121701266, + 0.11843701, + 0.126240394, + 0.121935838, + 0.121749631, + 0.128317138, + 0.120530313, + 0.124095521, + 0.12300321, + 0.122640858, + 0.12715408, + 0.121425435, + 0.124091821, + 0.12355822, + 0.126694163, + 0.126344139, + 0.122369002, + 0.121919684, + 0.124335537, + 0.129083543, + 0.123586821, + 0.120713705, + 0.126267739, + 0.120734878, + 0.125496993, + 0.125220125, + 0.126856802, + 0.117644961, + 0.120789424, + 0.121800139, + 0.124910586, + 0.122091305, + 0.128638447, + 0.126087312, + 0.123305591, + 0.122750389, + 0.116614303, + 0.125475119, + 0.122465428, + 0.12846518, + 0.121882168, + 0.122254546, + 0.127411837, + 0.11960812, + 0.122404237, + 0.128508182, + 0.125171846, + 0.124712012, + 0.125459089, + 0.123329175, + 0.124672436, + 0.125259747, + 0.128858257, + 0.126468237, + 0.124368451, + 0.130351368, + 0.127369262, + 0.121500793, + 0.123598792, + 0.122532301, + 0.122571628, + 0.122799141, + 0.124624203, + 0.12499586, + 0.121482448, + 0.12624135, + 0.12869017, + 0.121448593, + 0.122976252, + 0.128528206, + 0.127439097, + 0.125220187, + 0.117347656, + 0.126560977, + 0.126574602, + 0.1264887, + 0.1267374, + 0.123171611, + 0.127413182, + 0.121474389, + 0.127160425, + 0.122704632, + 0.126746832, + 0.122827553, + 0.120944239, + 0.12358963, + 0.120540575, + 0.123428224, + 0.127479287, + 0.120795305, + 0.1242035, + 0.120840548, + 0.124040857, + 0.127436257, + 0.126717277, + 0.1233267, + 0.124330677, + 0.127384514, + 0.126018032, + 0.128209784, + 0.128380457, + 0.117926897, + 0.126539691, + 0.127666137, + 0.122362602, + 0.121349405, + 0.120606255, + 0.127245569, + 0.128070949, + 0.120689964, + 0.121428688, + 0.123703771, + 0.124458828, + 0.127023436, + 0.120055223, + 0.11845161, + 0.126670745, + 0.123207839, + 0.12536674, + 0.128027806, + 0.119678191, + 0.12421942, + 0.128393847, + 0.123170968, + 0.126362818, + 0.120421532, + 0.125358841, + 0.120850771, + 0.121604425, + 0.119270007, + 0.12168543, + 0.127830932, + 0.124881268, + 0.116318907, + 0.12577126, + 0.121497322, + 0.127337352, + 0.121701358, + 0.126407904, + 0.119584828, + 0.121911832, + 0.121276192, + 0.130158126, + 0.120556224, + 0.117555729, + 0.127171708, + 0.127195048, + 0.127026879, + 0.124852314, + 0.124936895, + 0.124937796, + 0.129108752, + 0.118748289, + 0.116190264, + 0.126111907, + 0.126969363, + 0.12056375, + 0.120761434, + 0.122067771, + 0.130359562, + 0.128372694, + 0.123860983, + 0.121794642, + 0.126248524, + 0.120535125, + 0.126531058, + 0.130068954, + 0.11847431, + 0.128594568, + 0.122891794, + 0.12738214, + 0.120833265, + 0.121898448, + 0.127075573, + 0.126263808, + 0.124968507, + 0.123397542, + 0.124143292, + 0.127479703, + 0.120592492, + 0.119875056, + 0.128460716, + 0.123958736, + 0.127568277, + 0.127781663, + 0.128133478, + 0.123716792, + 0.118598284, + 0.121407372, + 0.130970191, + 0.120786601, + 0.123322656, + 0.124764632, + 0.124661859, + 0.124612326, + 0.12548674, + 0.129476433, + 0.124168595, + 0.128055817, + 0.118358365, + 0.120641944, + 0.124224126, + 0.126290823, + 0.125278809, + 0.125901407, + 0.12685111, + 0.1253736, + 0.122164583, + 0.128690753, + 0.127187753, + 0.125706458, + 0.127445161, + 0.127187643, + 0.125775951, + 0.122038696, + 0.128658776, + 0.12637352, + 0.122914699, + 0.128283749, + 0.130492569, + 0.122256899, + 0.119737936, + 0.128993444, + 0.121581071, + 0.120487116, + 0.127292314, + 0.122585767, + 0.126272892, + 0.124786883, + 0.128370112, + 0.124320778, + 0.127123773, + 0.118116483, + 0.12030875, + 0.124343081, + 0.121268323, + 0.125640672, + 0.117906432, + 0.121493772, + 0.128157537, + 0.125868086, + 0.125282702, + 0.122109776, + 0.128047162, + 0.127368283, + 0.119750144, + 0.124888294, + 0.123702031, + 0.120321041, + 0.125878322, + 0.125966197, + 0.122599236, + 0.122242553, + 0.126575059, + 0.120624012, + 0.121512001, + 0.123488425, + 0.123344484, + 0.128709612, + 0.123603417, + 0.120225376, + 0.128993678, + 0.123421664, + 0.122817232, + 0.128531938, + 0.120735704, + 0.125373799, + 0.130442401, + 0.127212341, + 0.125431325, + 0.128614419, + 0.119823355, + 0.126060956, + 0.124071242, + 0.126025494, + 0.123664993, + 0.125874931, + 0.125410462, + 0.125341629, + 0.123561612, + 0.121348819, + 0.126519083, + 0.129641126, + 0.128369736, + 0.1270326, + 0.122643411, + 0.130335636, + 0.122884658, + 0.118272182, + 0.123533369, + 0.12609263, + 0.121682292, + 0.120629068, + 0.120569267, + 0.123580159, + 0.120203402, + 0.126185112, + 0.121444203, + 0.121475969, + 0.123075684, + 0.123682459, + 0.124589355, + 0.128951833, + 0.125675886, + 0.126936425, + 0.124901865, + 0.123974106, + 0.126529423, + 0.121974594, + 0.125566367, + 0.126057913, + 0.124137342, + 0.12229817, + 0.127670474, + 0.127469237, + 0.123217858, + 0.12568672, + 0.122654888, + 0.125534722, + 0.118792222, + 0.125462763, + 0.124721141, + 0.121508708, + 0.128311548, + 0.126842334, + 0.118496367, + 0.125859987, + 0.126248144, + 0.123137315, + 0.125300683, + 0.122439069, + 0.129392165, + 0.125849052, + 0.129845989, + 0.126703274, + 0.125190979, + 0.128519545, + 0.123092, + 0.120687211, + 0.129171557, + 0.124294436, + 0.124526468, + 0.125755208, + 0.127177957, + 0.128544891, + 0.127168738, + 0.124006849, + 0.124145643, + 0.129372241, + 0.129012454, + 0.121438754, + 0.117831685, + 0.128551696, + 0.121506502, + 0.124678482, + 0.121477997, + 0.128700692, + 0.127253363, + 0.126539606, + 0.124882526, + 0.123918902, + 0.125211135, + 0.123568144, + 0.125355109, + 0.125977871, + 0.118225544, + 0.121642704, + 0.122584262, + 0.123157348, + 0.126483, + 0.120502923, + 0.126009827, + 0.118471407, + 0.129787112, + 0.125589278, + 0.129246447, + 0.122869423, + 0.120594325, + 0.123595625, + 0.122205773, + 0.130757361, + 0.123851417, + 0.122219278, + 0.126843391, + 0.119860535, + 0.121696554, + 0.126991602, + 0.126339997, + 0.127107798, + 0.126972719, + 0.125628058, + 0.125498955, + 0.123518539, + 0.125159876, + 0.121288675, + 0.128436277, + 0.123129448, + 0.127470069, + 0.12199195, + 0.122569466, + 0.121546961, + 0.12134348, + 0.12730293, + 0.123346913, + 0.128866412, + 0.116174637, + 0.124433903, + 0.121879944, + 0.119400009, + 0.128309335, + 0.125196594, + 0.117576639, + 0.125583058, + 0.119800431, + 0.125989089, + 0.211182392, + 0.122819653, + 0.125077049, + 0.128852321, + 0.127613961, + 0.121645157, + 0.120610156, + 0.126771718, + 0.128935345, + 0.12568224, + 0.124357445, + 0.124615656, + 0.126930331, + 0.124564043, + 0.12894806, + 0.125746363, + 0.123498516, + 0.128347137, + 0.125479797, + 0.126636429, + 0.125649323, + 0.121443494, + 0.123076507, + 0.126102919, + 0.12722818, + 0.121323595, + 0.122664504, + 0.124913911, + 0.125400792, + 0.12503465, + 0.123785995, + 0.127949277, + 0.123598342, + 0.128898625, + 0.126318133, + 0.130042324, + 0.118617025, + 0.122698428, + 0.12556356, + 0.121356561, + 0.127255794, + 0.122617624, + 0.126295653, + 0.121575749, + 0.128225376, + 0.12437902, + 0.126231308, + 0.125773485, + 0.12599691, + 0.124428501, + 0.127311434, + 0.121722436, + 0.129828073, + 0.124635345, + 0.122017604, + 0.127119545, + 0.124568167, + 0.123392982, + 0.126373696, + 0.120544656, + 0.124298853, + 0.129051395, + 0.119645725, + 0.121438671, + 0.125417224, + 0.125964596, + 0.121632923, + 0.116135448, + 0.126396976, + 0.125964214, + 0.128518227, + 0.125687181, + 0.121694281, + 0.125358352, + 0.117691343, + 0.120351113, + 0.121537077, + 0.122042303, + 0.127463024, + 0.12466857, + 0.125382543, + 0.123746638, + 0.116298812, + 0.121423264, + 0.120475443, + 0.121752377, + 0.125658695, + 0.120409831, + 0.124832495, + 0.121688548, + 0.123499222, + 0.129204216, + 0.117874985, + 0.128353729, + 0.121448481, + 0.125081013, + 0.117831902, + 0.119783717, + 0.123543022, + 0.122971699, + 0.130128204, + 0.124027431, + 0.121741278, + 0.119385131, + 0.128621844, + 0.125887877, + 0.128105237, + 0.126129841, + 0.122885491, + 0.124339695, + 0.129073732, + 0.119722181 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -205,106 +1195,1006 @@ }, { "result": [ - 0.12802408, - 0.122713897, - 0.128928205, - 0.127677123, - 0.125205912, - 0.127346237, - 0.116990178, - 0.126939974, - 0.118920149, - 0.119986906, - 0.124122801, - 0.127368665, - 0.123561798, - 0.123797555, - 0.126631929, - 0.120634662, - 0.126897599, - 0.125655693, - 0.122072076, - 0.123699567, - 0.125254531, - 0.124928335, - 0.12494319, - 0.120571841, - 0.122472147, - 0.126978375, - 0.122925217, - 0.118877029, - 0.125302872, - 0.120568438, - 0.12716571, - 0.119667499, - 0.119869435, - 0.124565743, - 0.125531023, - 0.124037777, - 0.127407129, - 0.122902725, - 0.127932368, - 0.127466375, - 0.127796412, - 0.123671928, - 0.123381076, - 0.117923919, - 0.127655303, - 0.128970701, - 0.122032089, - 0.122538667, - 0.124745604, - 0.124514985, - 0.120547457, - 0.126386589, - 0.129679912, - 0.124575461, - 0.124567503, - 0.122718095, - 0.125609052, - 0.128579484, - 0.127560495, - 0.122333435, - 0.128028228, - 0.120569618, - 0.122770157, - 0.127501598, - 0.122502054, - 0.126455323, - 0.124679869, - 0.125821033, - 0.124665604, - 0.123072073, - 0.126874507, - 0.128231908, - 0.12164182, - 0.125037447, - 0.12312374, - 0.125803004, - 0.124508016, - 0.129500988, - 0.125664771, - 0.121573835, - 0.127312568, - 0.117237058, - 0.116595371, - 0.124720144, - 0.121799046, - 0.117370059, - 0.117767304, - 0.12743704, - 0.126441177, - 0.121974507, - 0.127723686, - 0.128062865, - 0.123713384, - 0.120718512, - 0.123899464, - 0.128723666, - 0.127744297, - 0.125239858, - 0.11992982, - 0.128296616 + 0.126427283, + 0.126639491, + 0.1284042, + 0.121062064, + 0.121080054, + 0.120722333, + 0.126809679, + 0.124606006, + 0.126953052, + 0.127275054, + 0.126893788, + 0.120690643, + 0.124782345, + 0.12376636, + 0.124409218, + 0.121934569, + 0.126059402, + 0.123041083, + 0.126883935, + 0.120976244, + 0.124318065, + 0.127972634, + 0.12591272, + 0.12208319, + 0.123096152, + 0.130254472, + 0.123266405, + 0.125967042, + 0.126196169, + 0.126246183, + 0.129036002, + 0.1294959, + 0.122148963, + 0.128364317, + 0.121812, + 0.126804534, + 0.126782317, + 0.12226457, + 0.129046882, + 0.128836326, + 0.12270442, + 0.125740978, + 0.127389762, + 0.124516025, + 0.127776194, + 0.122216276, + 0.128772514, + 0.120797881, + 0.121131089, + 0.126087016, + 0.127638627, + 0.123411002, + 0.125202036, + 0.123656934, + 0.126014066, + 0.127351519, + 0.124810139, + 0.129566987, + 0.121584296, + 0.129101253, + 0.123543319, + 0.128711177, + 0.126593587, + 0.123120692, + 0.124879345, + 0.119605972, + 0.121034833, + 0.123575685, + 0.121287195, + 0.124198099, + 0.128658572, + 0.126166582, + 0.127467894, + 0.11684427, + 0.129945233, + 0.122897049, + 0.123373884, + 0.125581591, + 0.129057346, + 0.127854919, + 0.121963566, + 0.121799308, + 0.128902446, + 0.120142592, + 0.129090871, + 0.127704303, + 0.119914726, + 0.121967206, + 0.123984104, + 0.12654447, + 0.120464366, + 0.122400346, + 0.121797529, + 0.121776581, + 0.121978104, + 0.120988268, + 0.123818315, + 0.123815139, + 0.125776187, + 0.120749136, + 0.121794162, + 0.129243146, + 0.124830459, + 0.120737602, + 0.125334177, + 0.121855616, + 0.125485499, + 0.129314633, + 0.129292819, + 0.12479226, + 0.130217829, + 0.118973538, + 0.126172337, + 0.130490425, + 0.123954726, + 0.123299593, + 0.120981597, + 0.126968383, + 0.124436593, + 0.121204074, + 0.118131875, + 0.12876057, + 0.12609008, + 0.127601178, + 0.128949856, + 0.120233554, + 0.118891816, + 0.127729327, + 0.122162188, + 0.129370424, + 0.12799954, + 0.122461444, + 0.128720642, + 0.129066555, + 0.125494192, + 0.125643125, + 0.129021828, + 0.11904766, + 0.125912714, + 0.129241953, + 0.122787071, + 0.118109302, + 0.128362654, + 0.130929991, + 0.125649078, + 0.126869263, + 0.12753982, + 0.123188621, + 0.121000586, + 0.127568723, + 0.127981197, + 0.121993256, + 0.127633151, + 0.12651283, + 0.13079801, + 0.123160974, + 0.120030324, + 0.125860749, + 0.122644047, + 0.126100882, + 0.126622699, + 0.125960571, + 0.126811853, + 0.12588583, + 0.128769141, + 0.123027679, + 0.123050587, + 0.123750419, + 0.127118019, + 0.126084586, + 0.125848955, + 0.128205903, + 0.118899399, + 0.126568957, + 0.126385305, + 0.126237855, + 0.122971394, + 0.120980754, + 0.127630994, + 0.12842184, + 0.124549226, + 0.123023915, + 0.123916887, + 0.121952272, + 0.121612533, + 0.124899404, + 0.126746972, + 0.125913628, + 0.125950887, + 0.122967389, + 0.13045976, + 0.125228474, + 0.125963499, + 0.12665382, + 0.122203732, + 0.125914893, + 0.126731003, + 0.120349677, + 0.127807451, + 0.121739668, + 0.126101408, + 0.128315264, + 0.128296433, + 0.121834037, + 0.127889821, + 0.12758563, + 0.116516551, + 0.123825766, + 0.128840586, + 0.127956487, + 0.124025297, + 0.125903363, + 0.120119418, + 0.123430069, + 0.122029366, + 0.124776865, + 0.12951056, + 0.128364219, + 0.128117324, + 0.122731197, + 0.12598211, + 0.122039921, + 0.124322882, + 0.12397259, + 0.123740571, + 0.118959391, + 0.128392645, + 0.129920515, + 0.127867895, + 0.129655329, + 0.126395992, + 0.12730455, + 0.125850316, + 0.122765556, + 0.124162491, + 0.122004763, + 0.123462174, + 0.120232418, + 0.123502218, + 0.1280879, + 0.127386559, + 0.125708982, + 0.125003644, + 0.123614868, + 0.127631965, + 0.123459165, + 0.127905555, + 0.120990462, + 0.12689305, + 0.12887982, + 0.126603081, + 0.124314372, + 0.129056441, + 0.126660409, + 0.123658361, + 0.124732278, + 0.120634189, + 0.12578913, + 0.12563144, + 0.127827399, + 0.125813367, + 0.127208793, + 0.122926934, + 0.12269252, + 0.122848874, + 0.123240353, + 0.129269732, + 0.127295552, + 0.118997598, + 0.126478144, + 0.119008909, + 0.125778247, + 0.127631332, + 0.126520194, + 0.124302078, + 0.122927138, + 0.126727821, + 0.120223955, + 0.121789164, + 0.123749191, + 0.125078203, + 0.126325643, + 0.127934501, + 0.124142522, + 0.12297735, + 0.122909708, + 0.128806475, + 0.121096937, + 0.12227398, + 0.121466062, + 0.127494629, + 0.126683584, + 0.118053669, + 0.121573317, + 0.120148358, + 0.12476187, + 0.130110632, + 0.124791665, + 0.128123398, + 0.126722583, + 0.129070747, + 0.122606586, + 0.12150397, + 0.125400543, + 0.125304648, + 0.121861615, + 0.125722989, + 0.126227635, + 0.122192517, + 0.121024053, + 0.118915716, + 0.119513252, + 0.127977142, + 0.124257395, + 0.124010128, + 0.124605773, + 0.128983739, + 0.127658863, + 0.124209718, + 0.127485735, + 0.12318995, + 0.118923128, + 0.127333067, + 0.12880284, + 0.128484158, + 0.125732466, + 0.12693404, + 0.126523341, + 0.127077419, + 0.127129362, + 0.12859089, + 0.120723918, + 0.12483247, + 0.12562043, + 0.124220527, + 0.124161906, + 0.123745394, + 0.129156112, + 0.124593748, + 0.125420321, + 0.128483341, + 0.123760652, + 0.123837664, + 0.123690879, + 0.127784214, + 0.129935821, + 0.124160996, + 0.12899945, + 0.119847319, + 0.123585174, + 0.12767847, + 0.1210094, + 0.127562886, + 0.127701149, + 0.122839323, + 0.124494497, + 0.123998306, + 0.124505204, + 0.126860443, + 0.119902082, + 0.128031331, + 0.125729639, + 0.126454775, + 0.12306565, + 0.121804665, + 0.120606683, + 0.125591412, + 0.123543147, + 0.120438921, + 0.12191651, + 0.125509302, + 0.127847459, + 0.124794839, + 0.124727059, + 0.117727133, + 0.128594553, + 0.123375765, + 0.124079651, + 0.128191525, + 0.124689144, + 0.130177201, + 0.126694518, + 0.119963213, + 0.124367579, + 0.124731213, + 0.122277994, + 0.125514722, + 0.125818035, + 0.128888341, + 0.125018017, + 0.122221059, + 0.123417187, + 0.122303741, + 0.123923499, + 0.128311929, + 0.128470498, + 0.124562808, + 0.126221506, + 0.119854214, + 0.130974279, + 0.127780019, + 0.121067062, + 0.129816984, + 0.121850612, + 0.128945117, + 0.123391309, + 0.128097336, + 0.123887499, + 0.122845915, + 0.123752022, + 0.123820681, + 0.31320782, + 0.119870921, + 0.123584415, + 0.125990253, + 0.126598661, + 0.122657799, + 0.124682095, + 0.126030408, + 0.126319706, + 0.119671318, + 0.125215629, + 0.123835856, + 0.128475166, + 0.123639003, + 0.124266449, + 0.126129043, + 0.119878938, + 0.129403882, + 0.123975727, + 0.118961299, + 0.128422659, + 0.124198546, + 0.126092262, + 0.121990043, + 0.11827628, + 0.124725166, + 0.124555197, + 0.120740672, + 0.12911852, + 0.125587268, + 0.123974493, + 0.130128358, + 0.126869532, + 0.13059831, + 0.128789777, + 0.123107774, + 0.122776071, + 0.122191144, + 0.120113761, + 0.12190685, + 0.128695148, + 0.122256487, + 0.125990874, + 0.124671699, + 0.122131789, + 0.128936197, + 0.130509278, + 0.121940426, + 0.128350302, + 0.122995697, + 0.126266445, + 0.125267288, + 0.124347105, + 0.121382013, + 0.124742654, + 0.123079194, + 0.126476014, + 0.128183936, + 0.122139721, + 0.125446585, + 0.12656421, + 0.123300722, + 0.125824049, + 0.124968666, + 0.122285354, + 0.123584461, + 0.125175016, + 0.127003473, + 0.116672027, + 0.122966117, + 0.126231634, + 0.127480773, + 0.128763706, + 0.123457583, + 0.125783149, + 0.127386743, + 0.128021669, + 0.122011874, + 0.120010024, + 0.123998151, + 0.124096757, + 0.12475286, + 0.127872062, + 0.117668961, + 0.128280813, + 0.123889684, + 0.12404086, + 0.119174282, + 0.129306702, + 0.120849001, + 0.125518529, + 0.129379481, + 0.126726251, + 0.122885339, + 0.128595479, + 0.123527532, + 0.125233929, + 0.122436365, + 0.129651528, + 0.125806195, + 0.130548333, + 0.122519164, + 0.128953847, + 0.125924258, + 0.122918602, + 0.124190591, + 0.1229526, + 0.125566343, + 0.126663887, + 0.123039252, + 0.124050089, + 0.127427832, + 0.128723744, + 0.127912692, + 0.124838789, + 0.127732046, + 0.126166975, + 0.129564449, + 0.124984996, + 0.126807169, + 0.124789188, + 0.119001941, + 0.121765167, + 0.124015649, + 0.130294115, + 0.129024799, + 0.122589255, + 0.12269728, + 0.119768963, + 0.129488012, + 0.121334832, + 0.124866031, + 0.128742521, + 0.128826759, + 0.124392516, + 0.128229636, + 0.12649408, + 0.127022941, + 0.125122404, + 0.116553469, + 0.128772565, + 0.12287117, + 0.129035139, + 0.120110226, + 0.123495238, + 0.123362388, + 0.123438511, + 0.12286, + 0.127908688, + 0.127784878, + 0.123993166, + 0.125832607, + 0.125591907, + 0.124625248, + 0.126265688, + 0.122326559, + 0.127637968, + 0.125898537, + 0.127701732, + 0.127172898, + 0.124178155, + 0.128922437, + 0.127042068, + 0.121811385, + 0.122055317, + 0.120129988, + 0.127855383, + 0.118504362, + 0.121727382, + 0.124925925, + 0.128984629, + 0.123815905, + 0.123793691, + 0.123251501, + 0.127476628, + 0.125360982, + 0.126200257, + 0.123815094, + 0.122303261, + 0.125500847, + 0.129266485, + 0.124375451, + 0.123156509, + 0.130680347, + 0.120764752, + 0.127301397, + 0.126045906, + 0.128679243, + 0.122231822, + 0.126955251, + 0.126388957, + 0.119040876, + 0.120233052, + 0.127436827, + 0.121164272, + 0.127591878, + 0.125771195, + 0.121340572, + 0.12767778, + 0.126596435, + 0.124841065, + 0.125162219, + 0.118668548, + 0.121613435, + 0.128818248, + 0.124057939, + 0.12758781, + 0.118188963, + 0.124972803, + 0.122699959, + 0.122277977, + 0.130703821, + 0.129262199, + 0.126661469, + 0.127302428, + 0.121965419, + 0.129314988, + 0.119957092, + 0.12488089, + 0.125887369, + 0.126011348, + 0.128472118, + 0.12617858, + 0.130631286, + 0.121835237, + 0.128671149, + 0.129975865, + 0.124998416, + 0.127628517, + 0.124731603, + 0.121047393, + 0.127329396, + 0.120076513, + 0.124936014, + 0.128646689, + 0.118817745, + 0.125727006, + 0.124887645, + 0.125873158, + 0.125900921, + 0.122242681, + 0.125615208, + 0.127282005, + 0.127288306, + 0.123798252, + 0.128461662, + 0.123981956, + 0.126021135, + 0.128707726, + 0.121904132, + 0.12834162, + 0.123690254, + 0.128415082, + 0.125994995, + 0.126748947, + 0.122520944, + 0.125752256, + 0.128682327, + 0.129837805, + 0.126726789, + 0.125811779, + 0.122096178, + 0.123088403, + 0.126605564, + 0.124370852, + 0.119155627, + 0.122790975, + 0.124578493, + 0.127397242, + 0.126912294, + 0.125937167, + 0.118638748, + 0.127238218, + 0.121309422, + 0.123278012, + 0.129621206, + 0.122432997, + 0.125877527, + 0.119249902, + 0.124339922, + 0.125499141, + 0.124036913, + 0.125261496, + 0.122931167, + 0.129388668, + 0.12961722, + 0.127650893, + 0.11991279, + 0.121981024, + 0.127753584, + 0.128979344, + 0.128104252, + 0.129342231, + 0.130999719, + 0.123206705, + 0.122906183, + 0.126827476, + 0.127825589, + 0.128353806, + 0.121248911, + 0.12939161, + 0.123191907, + 0.127276728, + 0.120771834, + 0.125304107, + 0.124657158, + 0.123941147, + 0.130288201, + 0.12669272, + 0.12692159, + 0.122329338, + 0.122725352, + 0.127673088, + 0.123095819, + 0.126261196, + 0.118813819, + 0.125932855, + 0.128606275, + 0.123799329, + 0.12786575, + 0.127717275, + 0.120013408, + 0.119894849, + 0.125674733, + 0.12382155, + 0.123051761, + 0.119628689, + 0.126077826, + 0.127276641, + 0.12508391, + 0.124822157, + 0.11920296, + 0.120244837, + 0.126633934, + 0.118846889, + 0.124259033, + 0.1238431, + 0.122316475, + 0.123218672, + 0.121962244, + 0.126641684, + 0.126880238, + 0.123209573, + 0.125130457, + 0.126843295, + 0.123714723, + 0.122567297, + 0.123313705, + 0.121216623, + 0.12758153, + 0.126033298, + 0.130408734, + 0.117993348, + 0.127527957, + 0.121763983, + 0.121512494, + 0.12900524, + 0.124626721, + 0.123090838, + 0.128398871, + 0.127067598, + 0.126320993, + 0.121688371, + 0.127043609, + 0.123056966, + 0.127852424, + 0.122256198, + 0.125777639, + 0.125635891, + 0.128641317, + 0.125214641, + 0.127850402, + 0.121944183, + 0.127619407, + 0.12812443, + 0.123991653, + 0.126945584, + 0.122479043, + 0.129669549, + 0.127576916, + 0.124613726, + 0.128896069, + 0.125136712, + 0.12078652, + 0.123700815, + 0.124406577, + 0.127655523, + 0.125911767, + 0.123543399, + 0.127101622, + 0.12784041, + 0.120995831, + 0.123165347, + 0.124943642, + 0.128710413, + 0.125860166, + 0.125219722, + 0.125206463, + 0.126932707, + 0.128372758, + 0.121742246, + 0.125698642, + 0.123018958, + 0.120908664, + 0.124434972, + 0.126604267, + 0.122796422, + 0.125592425, + 0.128303023, + 0.127865531, + 0.128112462, + 0.127381817, + 0.121945019, + 0.121890609, + 0.124247875, + 0.127738335, + 0.125973491, + 0.128064681, + 0.123183342, + 0.122898941, + 0.12899048, + 0.121037142, + 0.127140282, + 0.12686606, + 0.127458747, + 0.121794649, + 0.123078358, + 0.124802397, + 0.123447701, + 0.12932276, + 0.128880596, + 0.119129043, + 0.123150829, + 0.129651306, + 0.12087089, + 0.12471444, + 0.127361851, + 0.125006316, + 0.122136898, + 0.123403867, + 0.119163968, + 0.121971591, + 0.129749389, + 0.118987045, + 0.120284383, + 0.126216887, + 0.120929656, + 0.125043539, + 0.123506821, + 0.122983832, + 0.1205175, + 0.127548939, + 0.12522921, + 0.124035011, + 0.123091133, + 0.121147925, + 0.127663767, + 0.120374664, + 0.121116575, + 0.122267551, + 0.122153601, + 0.127951648, + 0.128164386, + 0.125253761, + 0.125415463, + 0.122598375, + 0.128432407, + 0.130582995, + 0.126899994, + 0.128414916, + 0.126373219, + 0.123981373, + 0.121873773, + 0.125840815, + 0.127195931, + 0.124135579, + 0.12568795, + 0.122198042, + 0.12194487, + 0.122087149, + 0.122982318, + 0.126052944, + 0.129191123, + 0.126439947, + 0.127826122, + 0.125470619, + 0.122717387, + 0.12957499, + 0.127274043, + 0.125876938, + 0.123042243, + 0.120981838, + 0.12604874, + 0.127898366, + 0.12896276, + 0.124053732, + 0.128543288, + 0.12108993, + 0.122350274, + 0.125852482, + 0.126652965, + 0.12197611, + 0.130576281, + 0.125948148, + 0.122234684, + 0.123819033, + 0.123549218, + 0.128365284, + 0.122677271, + 0.127414228, + 0.118850222, + 0.128743901, + 0.126847512, + 0.124162821, + 0.127409985, + 0.120921997, + 0.123259261, + 0.121831856, + 0.120166595, + 0.119632058, + 0.128098606, + 0.1221301, + 0.121654507, + 0.123503589, + 0.126706424, + 0.12272931, + 0.124762938, + 0.124088626, + 0.123793816, + 0.121801364, + 0.128210767, + 0.129317054, + 0.118865815, + 0.123737665, + 0.1179243, + 0.12771188, + 0.120319165, + 0.123366628, + 0.123775061, + 0.124520594, + 0.124483217, + 0.122116665, + 0.126980952, + 0.123669908, + 0.127882985, + 0.125743355, + 0.122055457, + 0.124944892, + 0.125305796, + 0.127280434, + 0.125725284, + 0.128842909, + 0.121854083, + 0.127640051, + 0.127804997, + 0.120943191, + 0.123656357, + 0.130592065, + 0.129389828, + 0.126093037, + 0.12372843, + 0.127388089, + 0.12984663, + 0.119854353, + 0.122749966, + 0.125213089, + 0.123081339, + 0.127889623, + 0.126836248, + 0.127430383, + 0.125572346, + 0.123425591, + 0.122586176, + 0.127782336, + 0.123759487, + 0.128617837, + 0.128974091, + 0.123510528, + 0.126112586, + 0.123956158, + 0.12643124, + 0.127204469, + 0.128717102, + 0.128777956, + 0.126728499, + 0.127182335, + 0.119682346, + 0.122890542, + 0.122180322 ], "implementation": "rust-libp2p", "version": "v0.51", @@ -312,106 +2202,1006 @@ }, { "result": [ - 0.18320343, - 0.18536061, - 0.18361744, - 0.19435881, - 0.19297308, - 0.17911123, - 0.18771777, - 0.18616855, - 0.19002189, - 0.1932833, - 0.18328913, - 0.1849363, - 0.19637023, - 0.19462414, - 0.18167907, - 0.19653203, - 0.19244458, - 0.19403593, - 0.19658187, - 0.19360423, - 0.1878126, - 0.1950962, - 0.18683565, - 0.18880358, - 0.19160251, - 0.1934229, - 0.19295235, - 0.19242506, - 0.19079773, - 0.18370089, - 0.19053127, - 0.18591598, - 0.19645037, - 0.18677087, - 0.1821941, - 0.18339914, - 0.18658818, - 0.1934576, - 0.1852235, - 0.18171275, - 0.19248205, - 0.18724504, - 0.19660091, - 0.18020825, - 0.19356246, - 0.19059129, - 0.1908433, - 0.18162169, - 0.19812965, - 0.18996501, - 0.18189964, - 0.1853105, - 0.19334716, - 0.19054043, - 0.18878776, - 0.19199143, - 0.19069456, - 0.19355537, - 0.18092379, - 0.19440931, - 0.188115, - 0.18938051, - 0.19417661, - 0.1900581, - 0.1790652, - 0.18985173, - 0.19375472, - 0.18476903, - 0.18864189, - 0.18627912, - 0.18755183, - 0.19773859, - 0.185586, - 0.18950075, - 0.18825252, - 0.19602655, - 0.19072296, - 0.19385633, - 0.1878541, - 0.18805191, - 0.18851843, - 0.19145073, - 0.17907362, - 0.1818605, - 0.1912801, - 0.18049575, - 0.17909673, - 0.1890659, - 0.1919892, - 0.19699329, - 0.18649152, - 0.19280715, - 0.19561869, - 0.19330662, - 0.18367936, - 0.18593276, - 0.18934114, - 0.19334432, - 0.19124785, - 0.1819501 + 0.18524794, + 0.19591586, + 0.18794625, + 0.19430587, + 0.18854661, + 0.18042985, + 0.18792032, + 0.18520518, + 0.18903744, + 0.19118784, + 0.1904892, + 0.1907086, + 0.19375764, + 0.18987583, + 0.19201988, + 0.18464862, + 0.18792336, + 0.1852576, + 0.19047278, + 0.19335862, + 0.19190504, + 0.1920972, + 0.18961377, + 0.18865576, + 0.18338314, + 0.1814949, + 0.1868589, + 0.18584011, + 0.18568592, + 0.18345672, + 0.18673599, + 0.18805434, + 0.19341005, + 0.1894355, + 0.18732508, + 0.18142572, + 0.1950999, + 0.18738842, + 0.18656, + 0.18677732, + 0.1852896, + 0.19015548, + 0.18813369, + 0.1875003, + 0.1872505, + 0.1915355, + 0.18359421, + 0.19224681, + 0.19550455, + 0.1898403, + 0.18919228, + 0.18454397, + 0.18179876, + 0.18743584, + 0.19353746, + 0.18035059, + 0.18898939, + 0.19032146, + 0.19219083, + 0.19319399, + 0.18642883, + 0.19179262, + 0.1898807, + 0.18595271, + 0.1771849, + 0.19010052, + 0.19548638, + 0.18873699, + 0.18843974, + 0.18929069, + 0.18538259, + 0.19199778, + 0.18723476, + 0.18270639, + 0.1924653, + 0.19105528, + 0.18446097, + 0.1941712, + 0.19275537, + 0.18205252, + 0.18880984, + 0.18162598, + 0.18720096, + 0.18469231, + 0.19209906, + 0.18387002, + 0.18158957, + 0.18732606, + 0.18867417, + 0.19059275, + 0.18799573, + 0.18171892, + 0.19094992, + 0.17508917, + 0.18934695, + 0.19404241, + 0.18604176, + 0.19051708, + 0.17681356, + 0.19186726, + 0.193644, + 0.18876322, + 0.19445023, + 0.19391657, + 0.1923686, + 0.18509148, + 0.19180611, + 0.18317753, + 0.18923691, + 0.18348204, + 0.18443108, + 0.18465899, + 0.19423671, + 0.18829283, + 0.19155431, + 0.18782051, + 0.1904013, + 0.1803181, + 0.18520196, + 0.18516903, + 0.19338836, + 0.19188984, + 0.17700537, + 0.19144236, + 0.18716136, + 0.18656388, + 0.19015707, + 0.18361528, + 0.19082782, + 0.1800265, + 0.19511913, + 0.18467073, + 0.18545921, + 0.19101618, + 0.19066224, + 0.19137996, + 0.18701626, + 0.17869624, + 0.19145525, + 0.19452327, + 0.18502325, + 0.18511638, + 0.18884985, + 0.1862163, + 0.19592598, + 0.18634993, + 0.17895363, + 0.19242224, + 0.19178946, + 0.18049131, + 0.17920804, + 0.18324515, + 0.19579327, + 0.18329345, + 0.19029912, + 0.18928128, + 0.18610837, + 0.18968491, + 0.1829416, + 0.18846734, + 0.18896092, + 0.18879291, + 0.1879794, + 0.1854974, + 0.18452324, + 0.18303902, + 0.19204596, + 0.1895932, + 0.19313788, + 0.17639224, + 0.17703938, + 0.1847542, + 0.17546484, + 0.18713948, + 0.19117013, + 0.18638946, + 0.18162228, + 0.18729688, + 0.17699867, + 0.18693982, + 0.19052646, + 0.18156548, + 0.18709382, + 0.19278015, + 0.1896199, + 0.18952389, + 0.18640058, + 0.19075428, + 0.19322644, + 0.19208236, + 0.19192673, + 0.18374221, + 0.1917465, + 0.19248451, + 0.19243759, + 0.1917859, + 0.18543811, + 0.18505703, + 0.1908011, + 0.18557584, + 0.18018146, + 0.18869944, + 0.19370513, + 0.19017862, + 0.19141689, + 0.18312092, + 0.19299868, + 0.19368888, + 0.18976845, + 0.18727216, + 0.18706843, + 0.18768978, + 0.1833888, + 0.18748814, + 0.18876882, + 0.18915719, + 0.18461412, + 0.18649657, + 0.17689373, + 0.19010153, + 0.19569857, + 0.18293121, + 0.18309419, + 0.18818483, + 0.18902631, + 0.18812412, + 0.18628155, + 0.18650894, + 0.1829142, + 0.18748952, + 0.1804082, + 0.18561281, + 0.18513432, + 0.18402345, + 0.1915269, + 0.18955414, + 0.1772279, + 0.18903598, + 0.18152907, + 0.18848369, + 0.17757688, + 0.18615861, + 0.1935507, + 0.18890674, + 0.18511511, + 0.19113828, + 0.18684058, + 0.1854391, + 0.19129044, + 0.19189744, + 0.18676503, + 0.18026575, + 0.1781368, + 0.1936407, + 0.19122945, + 0.18413998, + 0.18613681, + 0.18325199, + 0.18867755, + 0.18140174, + 0.18767534, + 0.18975246, + 0.18142007, + 0.1834588, + 0.18874815, + 0.1910428, + 0.18121667, + 0.18741111, + 0.19014554, + 0.18512729, + 0.19320841, + 0.188819, + 0.18620905, + 0.18759724, + 0.18503727, + 0.17987268, + 0.18218672, + 0.18483171, + 0.19372337, + 0.19160135, + 0.19407468, + 0.18704776, + 0.18870555, + 0.18681976, + 0.19176313, + 0.1850153, + 0.19045642, + 0.18986188, + 0.19229676, + 0.18889639, + 0.18845104, + 0.1938119, + 0.19328597, + 0.18485154, + 0.1846728, + 0.19324027, + 0.18908314, + 0.19424601, + 0.19135652, + 0.18129922, + 0.18344013, + 0.19006315, + 0.18662606, + 0.18558776, + 0.1920658, + 0.19044772, + 0.17981257, + 0.1929344, + 0.19212542, + 0.19316268, + 0.18213168, + 0.18900198, + 0.17883952, + 0.19055045, + 0.18772106, + 0.18837062, + 0.18485804, + 0.1816302, + 0.18554497, + 0.18169215, + 0.18909901, + 0.18699868, + 0.18630879, + 0.19151002, + 0.18277721, + 0.18154804, + 0.18197079, + 0.1924471, + 0.19137815, + 0.19023483, + 0.18120018, + 0.18717463, + 0.18973036, + 0.18612172, + 0.1933415, + 0.18388808, + 0.1926496, + 0.18669227, + 0.19370985, + 0.18980293, + 0.1818448, + 0.191825, + 0.19179839, + 0.18053931, + 0.18802343, + 0.18753482, + 0.18471532, + 0.18307956, + 0.18840198, + 0.18788482, + 0.19364427, + 0.19532135, + 0.1894343, + 0.19087546, + 0.19106166, + 0.18924148, + 0.17970476, + 0.18528299, + 0.17849615, + 0.19079487, + 0.18791576, + 0.18569219, + 0.18868266, + 0.19195792, + 0.1960681, + 0.19172007, + 0.19232918, + 0.18723945, + 0.19049202, + 0.19443652, + 0.18845406, + 0.1869535, + 0.19019918, + 0.18017761, + 0.18612966, + 0.18490861, + 0.18453631, + 0.18766353, + 0.19128367, + 0.18566437, + 0.19463056, + 0.18422556, + 0.19562812, + 0.18341747, + 0.18361051, + 0.18452011, + 0.1852424, + 0.1884736, + 0.191309, + 0.18567751, + 0.18804386, + 0.18694726, + 0.18783243, + 0.19160694, + 0.19284923, + 0.18996094, + 0.19119658, + 0.18650064, + 0.19081415, + 0.19098322, + 0.18615815, + 0.1876749, + 0.18875204, + 0.18435673, + 0.18991607, + 0.18332464, + 0.18626732, + 0.18806148, + 0.18405925, + 0.19032763, + 0.1796134, + 0.19125262, + 0.1934207, + 0.18837142, + 0.19013134, + 0.18419896, + 0.19153322, + 0.18478127, + 0.18782775, + 0.18470383, + 0.1784864, + 0.19352543, + 0.19159181, + 0.18225853, + 0.18191224, + 0.1780829, + 0.18728504, + 0.19113885, + 0.19069141, + 0.18463032, + 0.17854065, + 0.18462192, + 0.18920869, + 0.18359956, + 0.18052056, + 0.19069646, + 0.19608122, + 0.18474232, + 0.17949478, + 0.19180478, + 0.18347996, + 0.18630701, + 0.18451412, + 0.18426535, + 0.18745072, + 0.19018869, + 0.19284503, + 0.18088777, + 0.18872002, + 0.18147682, + 0.18506354, + 0.18446796, + 0.18425767, + 0.19375171, + 0.19163328, + 0.19096859, + 0.18770754, + 0.18276449, + 0.18884858, + 0.19428355, + 0.1912395, + 0.19365346, + 0.18364209, + 0.18452744, + 0.17526086, + 0.19227587, + 0.19494994, + 0.18482134, + 0.17863503, + 0.18615724, + 0.18223217, + 0.18360369, + 0.18150704, + 0.18638352, + 0.18614048, + 0.19086057, + 0.19260077, + 0.18365768, + 0.1867621, + 0.18591444, + 0.18595347, + 0.18699345, + 0.19013655, + 0.19243863, + 0.17720611, + 0.1847709, + 0.18767647, + 0.1918419, + 0.19317268, + 0.18340749, + 0.19033617, + 0.18988234, + 0.17674725, + 0.18042941, + 0.1853999, + 0.1864383, + 0.19038017, + 0.19341215, + 0.18896578, + 0.18756945, + 0.19396606, + 0.17685246, + 0.18621211, + 0.18899478, + 0.18346664, + 0.18489602, + 0.18596123, + 0.19468644, + 0.18998958, + 0.18466775, + 0.18569121, + 0.18893069, + 0.18735223, + 0.18268748, + 0.18904209, + 0.19176732, + 0.18544976, + 0.18457036, + 0.18594328, + 0.18683904, + 0.18347412, + 0.18196584, + 0.19370376, + 0.19318762, + 0.19214694, + 0.18547086, + 0.18764608, + 0.18787856, + 0.18934245, + 0.18028358, + 0.18880798, + 0.18400767, + 0.19365738, + 0.19417077, + 0.19163826, + 0.1871758, + 0.19313608, + 0.18893112, + 0.19657317, + 0.18128586, + 0.17593937, + 0.18906105, + 0.1935324, + 0.18952669, + 0.18111193, + 0.19017942, + 0.18277681, + 0.19343413, + 0.1872557, + 0.19190304, + 0.19466734, + 0.18614785, + 0.18788727, + 0.18607792, + 0.1867022, + 0.1889459, + 0.18052, + 0.18883474, + 0.1800873, + 0.18911181, + 0.19120799, + 0.1917927, + 0.19357534, + 0.18032679, + 0.18736538, + 0.18581453, + 0.1912708, + 0.18918255, + 0.18970996, + 0.18809263, + 0.18620972, + 0.1908646, + 0.19203587, + 0.19012062, + 0.17687032, + 0.19059464, + 0.1849498, + 0.19057325, + 0.17894469, + 0.1864818, + 0.18983693, + 0.1948062, + 0.19363369, + 0.18786985, + 0.18500079, + 0.18485284, + 0.19187938, + 0.18808393, + 0.18465404, + 0.17723341, + 0.18322611, + 0.19639507, + 0.18483758, + 0.18291178, + 0.18642865, + 0.19183007, + 0.18510501, + 0.19059977, + 0.19005772, + 0.19116472, + 0.18791269, + 0.18633656, + 0.1896293, + 0.18651503, + 0.1949546, + 0.18250239, + 0.18987599, + 0.17833613, + 0.19000189, + 0.18769841, + 0.18325391, + 0.18705507, + 0.18601859, + 0.1847015, + 0.18413983, + 0.18925229, + 0.18645042, + 0.18734767, + 0.18631223, + 0.1773735, + 0.1911044, + 0.17884104, + 0.18753575, + 0.17563751, + 0.18343766, + 0.19169809, + 0.17871672, + 0.19150074, + 0.18967196, + 0.18736611, + 0.1919503, + 0.1848084, + 0.18440166, + 0.18747635, + 0.18949722, + 0.1960136, + 0.19044293, + 0.18854968, + 0.18916698, + 0.1842706, + 0.19627984, + 0.1934773, + 0.18841065, + 0.1820662, + 0.18558323, + 0.187851, + 0.1895967, + 0.18293783, + 0.18673748, + 0.18456462, + 0.18580535, + 0.1903732, + 0.18762349, + 0.18252088, + 0.1774874, + 0.188435, + 0.19018726, + 0.18314803, + 0.18985619, + 0.18445681, + 0.1918975, + 0.18494177, + 0.19153363, + 0.19145931, + 0.19303991, + 0.187884, + 0.19005246, + 0.18713364, + 0.18636099, + 0.17827454, + 0.18503997, + 0.18458563, + 0.17507657, + 0.18553019, + 0.18889783, + 0.19107404, + 0.19433635, + 0.18595009, + 0.1891247, + 0.19354814, + 0.18013677, + 0.18387862, + 0.18928015, + 0.1911583, + 0.19411966, + 0.17965546, + 0.1826555, + 0.18442343, + 0.18400696, + 0.1846489, + 0.18457966, + 0.18482421, + 0.186002, + 0.18880433, + 0.18864326, + 0.18796283, + 0.19276671, + 0.18305169, + 0.18376891, + 0.18453082, + 0.18611465, + 0.18614456, + 0.1862241, + 0.1908965, + 0.18873484, + 0.1940514, + 0.1872482, + 0.19248074, + 0.18927845, + 0.17659658, + 0.18377775, + 0.19198509, + 0.18759729, + 0.18337385, + 0.19082141, + 0.18308872, + 0.1875434, + 0.19367637, + 0.19386756, + 0.19227947, + 0.19340345, + 0.1887513, + 0.18982333, + 0.1860038, + 0.18730503, + 0.1866988, + 0.18173814, + 0.1863281, + 0.19399753, + 0.19049987, + 0.18766856, + 0.18876942, + 0.18720753, + 0.188302, + 0.19355738, + 0.18499444, + 0.19016661, + 0.18458542, + 0.17879796, + 0.18846872, + 0.19091451, + 0.18610035, + 0.18763839, + 0.19129188, + 0.1750825, + 0.19352566, + 0.18610162, + 0.18609174, + 0.18404521, + 0.18979047, + 0.19500081, + 0.1875946, + 0.1869609, + 0.18412253, + 0.19109114, + 0.19232842, + 0.19125354, + 0.18014143, + 0.18060516, + 0.18162686, + 0.18691278, + 0.1844199, + 0.1912215, + 0.18728912, + 0.18832475, + 0.183075, + 0.18708476, + 0.18762273, + 0.18135269, + 0.18880214, + 0.19133823, + 0.17720762, + 0.17996627, + 0.19164169, + 0.18833254, + 0.19102228, + 0.19447245, + 0.18132246, + 0.19372949, + 0.19276187, + 0.19079621, + 0.18625061, + 0.18882757, + 0.19314504, + 0.18237343, + 0.18839873, + 0.19045521, + 0.19312134, + 0.19095148, + 0.19057584, + 0.18735133, + 0.18135402, + 0.18340158, + 0.183522, + 0.17962545, + 0.18389851, + 0.18712981, + 0.18718822, + 0.18614963, + 0.18444254, + 0.1939569, + 0.19320072, + 0.18803735, + 0.17520604, + 0.18348356, + 0.18744968, + 0.19496496, + 0.18637691, + 0.17892247, + 0.18706241, + 0.18969901, + 0.18619393, + 0.191969, + 0.19370082, + 0.19241337, + 0.1781465, + 0.1848462, + 0.1885704, + 0.19183445, + 0.1935026, + 0.18533275, + 0.18172206, + 0.18906221, + 0.18950513, + 0.18326128, + 0.18611991, + 0.18538944, + 0.19186778, + 0.18567774, + 0.19148552, + 0.19196652, + 0.18752776, + 0.19582267, + 0.18985444, + 0.19485874, + 0.18906131, + 0.18347046, + 0.1816845, + 0.1910355, + 0.19383648, + 0.1889277, + 0.18581787, + 0.1801495, + 0.19108605, + 0.192792, + 0.18321748, + 0.19185306, + 0.18041229, + 0.19335009, + 0.18966109, + 0.18572006, + 0.1820242, + 0.19376683, + 0.18522754, + 0.19392629, + 0.18494494, + 0.18268901, + 0.18357557, + 0.18529353, + 0.18622844, + 0.18632713, + 0.18934643, + 0.18644169, + 0.18134576, + 0.18412821, + 0.19020668, + 0.1830647, + 0.18161058, + 0.1854414, + 0.19151825, + 0.18907265, + 0.18841116, + 0.18465431, + 0.19188471, + 0.18623483, + 0.1930334, + 0.18624929, + 0.18669517, + 0.18834542, + 0.17718652, + 0.19196948, + 0.18198931, + 0.18757853, + 0.19110017, + 0.18900405, + 0.18392175, + 0.18292536, + 0.18605357, + 0.19201787, + 0.18791941, + 0.18860418, + 0.19175616, + 0.1833055, + 0.19468476, + 0.18844387, + 0.19018388, + 0.18257552, + 0.18325597, + 0.1831569, + 0.18405952, + 0.1841893, + 0.19270279, + 0.18473738, + 0.19154595, + 0.18925674, + 0.18820097, + 0.18990457, + 0.18342479, + 0.1883575, + 0.18609914, + 0.18407565, + 0.18555853, + 0.186173, + 0.18632352, + 0.18489523, + 0.18325795, + 0.18894415, + 0.18730015, + 0.18012197, + 0.18721719, + 0.19199906, + 0.18162072, + 0.19100372, + 0.18344215, + 0.18284963, + 0.1900041, + 0.18487018, + 0.19348997, + 0.19345942, + 0.18446274, + 0.1883541, + 0.18453799, + 0.18518706, + 0.19285399, + 0.19113672, + 0.18961784, + 0.18165508, + 0.19008589, + 0.19005103, + 0.19012193, + 0.1865979, + 0.18314604, + 0.18323402, + 0.19439068, + 0.18983452, + 0.189389, + 0.18690363, + 0.18561633, + 0.18531574, + 0.19328548, + 0.17741984, + 0.19136788, + 0.1901003, + 0.19243135, + 0.1915578, + 0.1933532, + 0.18713564, + 0.18331595, + 0.18305627, + 0.18874313, + 0.19292498, + 0.18575555, + 0.19544935, + 0.18991081, + 0.19623516, + 0.18130925, + 0.18657489, + 0.18727171, + 0.18466525, + 0.18829219, + 0.19558918, + 0.18271032, + 0.1927778, + 0.18632072, + 0.19245307, + 0.17867348, + 0.18664844, + 0.17901124, + 0.18634723, + 0.18164803, + 0.18581408, + 0.18963115, + 0.18893193, + 0.18861178, + 0.18145634, + 0.19621325, + 0.18438685, + 0.18182021, + 0.18388388, + 0.18300377, + 0.1876391, + 0.1915926, + 0.1832556, + 0.19337611, + 0.180336, + 0.1814114, + 0.1861167, + 0.18693757, + 0.17517857, + 0.18050852 ], "implementation": "https", "version": "v0.1", @@ -419,106 +3209,1006 @@ }, { "result": [ - 0.121910445, - 0.11881714, - 0.12565878, - 0.120740406, - 0.12369829, - 0.059684623, - 0.062413216, - 0.12297799, - 0.05914709, - 0.121276975, - 0.1275316, - 0.12616104, - 0.06367172, - 0.06365608, - 0.11770963, - 0.12578832, - 0.11637737, - 0.12519154, - 0.06280298, - 0.12279162, - 0.1280496, - 0.06273546, - 0.06382796, - 0.123510554, - 0.12652722, - 0.063152574, - 0.061366368, - 0.061252348, - 0.122583106, - 0.06320014, - 0.06368281, - 0.12935217, - 0.1272645, - 0.12278854, - 0.06265062, - 0.061963823, - 0.060819846, - 0.061983608, - 0.12717623, - 0.06352975, - 0.063989244, - 0.063381314, - 0.063970394, - 0.060427155, - 0.12220286, - 0.06254202, - 0.12677895, - 0.06205927, - 0.12242437, - 0.061617523, - 0.061746463, - 0.06292769, - 0.12955624, - 0.120770946, - 0.06198795, - 0.12360525, - 0.06355573, - 0.06294512, - 0.06212846, - 0.12300296, - 0.12280484, - 0.121470906, - 0.12500018, - 0.06442808, - 0.06139656, - 0.062791884, - 0.060238913, - 0.06299706, - 0.06510424, - 0.062770784, - 0.12278812, - 0.06269702, - 0.0634597, - 0.06203319, - 0.1255534, - 0.060937285, - 0.1206148, - 0.12486283, - 0.06401831, - 0.12350103, - 0.124673195, - 0.06171527, - 0.12783773, - 0.11993122, - 0.124730706, - 0.060521364, - 0.059129454, - 0.061679672, - 0.12909296, - 0.12940763, - 0.06199324, - 0.06338893, - 0.061646536, - 0.06442368, - 0.06122898, - 0.061356246, - 0.061156437, - 0.11956378, - 0.12571876, - 0.121949255 + 0.061098557, + 0.122677565, + 0.06257435, + 0.12778594, + 0.06030236, + 0.120866634, + 0.059993576, + 0.11949572, + 0.063703716, + 0.12161578, + 0.12833966, + 0.060368165, + 0.06083092, + 0.06434434, + 0.06212958, + 0.064340495, + 0.06267771, + 0.05979742, + 0.12569734, + 0.12185507, + 0.060186822, + 0.12204336, + 0.1253036, + 0.06388343, + 0.12525854, + 0.060852796, + 0.12181904, + 0.12621278, + 0.06088263, + 0.06077933, + 0.122408405, + 0.062213145, + 0.062452976, + 0.11801532, + 0.061045542, + 0.061853305, + 0.061790224, + 0.06273316, + 0.06274884, + 0.12646689, + 0.12734273, + 0.12246875, + 0.1249662, + 0.061987977, + 0.11975378, + 0.061279792, + 0.1268083, + 0.12563269, + 0.12662059, + 0.12286781, + 0.12367272, + 0.11728802, + 0.12375009, + 0.06279944, + 0.12192425, + 0.06239667, + 0.12655386, + 0.06404017, + 0.064299986, + 0.12665547, + 0.06050855, + 0.06136467, + 0.060857967, + 0.061802648, + 0.12003638, + 0.12764299, + 0.12649962, + 0.061260782, + 0.12821585, + 0.060611945, + 0.05921954, + 0.12346959, + 0.12886742, + 0.12087482, + 0.06347828, + 0.12528199, + 0.12031462, + 0.0639886, + 0.06375981, + 0.062880166, + 0.12184213, + 0.12205527, + 0.1265297, + 0.06211663, + 0.123978555, + 0.12635484, + 0.12275845, + 0.06304368, + 0.061689246, + 0.11894658, + 0.06258468, + 0.120178185, + 0.065006085, + 0.0614003, + 0.06413384, + 0.06079768, + 0.12121103, + 0.06176101, + 0.061813965, + 0.12407761, + 0.06251261, + 0.1257532, + 0.063454546, + 0.12669946, + 0.12516311, + 0.062470052, + 0.06350435, + 0.06023116, + 0.12063188, + 0.12461037, + 0.063436404, + 0.11992528, + 0.0627828, + 0.06090916, + 0.06218947, + 0.06533247, + 0.1251869, + 0.061812624, + 0.06406887, + 0.06068265, + 0.12016556, + 0.12591602, + 0.1255677, + 0.12684308, + 0.060802583, + 0.12464005, + 0.06320735, + 0.062168337, + 0.062212307, + 0.12706186, + 0.061864033, + 0.059248224, + 0.12288502, + 0.061336495, + 0.06262787, + 0.06167879, + 0.12735505, + 0.061855666, + 0.061602697, + 0.06014244, + 0.060404032, + 0.060984675, + 0.12594001, + 0.062800124, + 0.062351476, + 0.06164358, + 0.06446282, + 0.06223159, + 0.06269588, + 0.06364729, + 0.12880242, + 0.12187908, + 0.06106908, + 0.060302358, + 0.06079494, + 0.12459275, + 0.06158942, + 0.12282457, + 0.116887435, + 0.12473626, + 0.1240523, + 0.12327415, + 0.12284162, + 0.124004245, + 0.06136621, + 0.12402576, + 0.12296199, + 0.06371356, + 0.12377531, + 0.12236627, + 0.12501334, + 0.06215816, + 0.12511283, + 0.06324485, + 0.06353244, + 0.12514012, + 0.12459142, + 0.062042885, + 0.11690081, + 0.06428719, + 0.12253537, + 0.061031543, + 0.06271566, + 0.11956, + 0.12740672, + 0.12106079, + 0.064277776, + 0.06302115, + 0.06078906, + 0.058266472, + 0.06300843, + 0.12190898, + 0.05923906, + 0.1181524, + 0.06096946, + 0.122085094, + 0.059712157, + 0.061239794, + 0.059939064, + 0.060928002, + 0.12593703, + 0.11892305, + 0.06272017, + 0.064566515, + 0.12500943, + 0.06372904, + 0.06234713, + 0.12592904, + 0.11872868, + 0.12349243, + 0.06395257, + 0.1254166, + 0.062703826, + 0.06210299, + 0.06329495, + 0.059193835, + 0.06371434, + 0.06042314, + 0.12626241, + 0.12590183, + 0.06360637, + 0.06365295, + 0.059588425, + 0.12816073, + 0.12911351, + 0.122024596, + 0.12822922, + 0.06087176, + 0.06288519, + 0.062819794, + 0.061675992, + 0.12638642, + 0.11536737, + 0.121176355, + 0.06313858, + 0.062790245, + 0.12160163, + 0.12305948, + 0.061529107, + 0.12033623, + 0.06349496, + 0.1205994, + 0.06288893, + 0.122656286, + 0.124886885, + 0.12304814, + 0.11650175, + 0.06180165, + 0.06174836, + 0.060449217, + 0.06156516, + 0.11905319, + 0.11786273, + 0.063385285, + 0.061827533, + 0.060296495, + 0.12642768, + 0.12568541, + 0.060418844, + 0.12155877, + 0.0630776, + 0.060743947, + 0.11996708, + 0.12793581, + 0.06313965, + 0.1284523, + 0.1255258, + 0.11923882, + 0.12739412, + 0.062143434, + 0.12604997, + 0.062129293, + 0.12340442, + 0.12136363, + 0.12741889, + 0.060423043, + 0.060728177, + 0.063859165, + 0.12740701, + 0.061496567, + 0.12379834, + 0.123021364, + 0.122087, + 0.12207956, + 0.06427016, + 0.061886005, + 0.06274253, + 0.120108515, + 0.061090786, + 0.063569725, + 0.060752984, + 0.062854566, + 0.12819423, + 0.06261461, + 0.12504536, + 0.06347985, + 0.063427135, + 0.06226781, + 0.12977119, + 0.064651854, + 0.124234535, + 0.061459504, + 0.12986355, + 0.119209856, + 0.124751404, + 0.063733175, + 0.12614915, + 0.12631008, + 0.12482989, + 0.12034548, + 0.1224444, + 0.06347581, + 0.118853256, + 0.124902815, + 0.061748292, + 0.1272086, + 0.061634257, + 0.06182192, + 0.12184995, + 0.060232755, + 0.12607664, + 0.06371958, + 0.12011516, + 0.061288483, + 0.117623225, + 0.12403134, + 0.12314628, + 0.06067355, + 0.12679115, + 0.060680486, + 0.122696385, + 0.06344334, + 0.06192609, + 0.061302215, + 0.062244542, + 0.061868303, + 0.0619339, + 0.06382878, + 0.1273313, + 0.06337379, + 0.06319447, + 0.12662446, + 0.12401527, + 0.122991055, + 0.12641264, + 0.12264216, + 0.06309408, + 0.122137345, + 0.06408302, + 0.12173261, + 0.12841131, + 0.124441914, + 0.12634987, + 0.061986707, + 0.064391375, + 0.063534975, + 0.122105986, + 0.064148754, + 0.12087193, + 0.1275767, + 0.124816924, + 0.12768798, + 0.123407744, + 0.06090919, + 0.06412758, + 0.062706694, + 0.061906293, + 0.12088335, + 0.06230492, + 0.12216677, + 0.12617236, + 0.12092181, + 0.11947854, + 0.118327886, + 0.116609104, + 0.121868506, + 0.11771331, + 0.06424832, + 0.12217119, + 0.0631032, + 0.06383693, + 0.12570591, + 0.12525968, + 0.12170119, + 0.12865895, + 0.12331589, + 0.12220424, + 0.061786372, + 0.12108162, + 0.060363963, + 0.063529514, + 0.06174939, + 0.12166741, + 0.119854756, + 0.11992821, + 0.12016259, + 0.12408515, + 0.1259497, + 0.12625326, + 0.059979994, + 0.063992456, + 0.06296323, + 0.12201907, + 0.06289185, + 0.060920395, + 0.06245094, + 0.12098013, + 0.063023835, + 0.12112317, + 0.061431702, + 0.12099802, + 0.060997713, + 0.06069562, + 0.1156374, + 0.06259204, + 0.121108875, + 0.061397847, + 0.061364565, + 0.12683481, + 0.1239895, + 0.12199623, + 0.12371302, + 0.06303822, + 0.123904705, + 0.06373938, + 0.12497988, + 0.06168437, + 0.061762985, + 0.062048923, + 0.060569096, + 0.061622765, + 0.12302462, + 0.11988064, + 0.060922846, + 0.12258299, + 0.06397334, + 0.058766793, + 0.12462706, + 0.11554163, + 0.061670348, + 0.06131367, + 0.118854515, + 0.12172762, + 0.0623502, + 0.06330903, + 0.061860055, + 0.06376819, + 0.06276494, + 0.06357121, + 0.12506407, + 0.12192823, + 0.0631195, + 0.12576704, + 0.06327021, + 0.05920159, + 0.12185841, + 0.1259599, + 0.06408476, + 0.12770161, + 0.1230431, + 0.12211784, + 0.12576449, + 0.11961059, + 0.06351152, + 0.1198752, + 0.06525488, + 0.121781625, + 0.12638734, + 0.06251528, + 0.06206309, + 0.063542515, + 0.06260917, + 0.12898925, + 0.062839456, + 0.061699014, + 0.12500338, + 0.062399905, + 0.063459046, + 0.116890036, + 0.058163855, + 0.060898986, + 0.121976696, + 0.12382451, + 0.06117277, + 0.061463483, + 0.062992096, + 0.12517282, + 0.12353551, + 0.06262687, + 0.06173612, + 0.061540145, + 0.12567279, + 0.12238838, + 0.12654354, + 0.12621146, + 0.06135368, + 0.12203463, + 0.06126906, + 0.06451874, + 0.121368885, + 0.060720246, + 0.063681684, + 0.0614191, + 0.064739615, + 0.064481474, + 0.12318916, + 0.06012208, + 0.12376385, + 0.060099784, + 0.120980844, + 0.06292485, + 0.061602972, + 0.06365584, + 0.0627104, + 0.063658886, + 0.11705061, + 0.06329363, + 0.121781625, + 0.12226321, + 0.060202073, + 0.12614657, + 0.061373, + 0.12353117, + 0.062471054, + 0.061343413, + 0.06418777, + 0.059270855, + 0.05882358, + 0.062205672, + 0.061868347, + 0.06340579, + 0.061123636, + 0.060697723, + 0.11871503, + 0.06212448, + 0.0636004, + 0.06491019, + 0.06427115, + 0.062795274, + 0.060539242, + 0.12750514, + 0.059909165, + 0.06354641, + 0.06120478, + 0.12920457, + 0.124803066, + 0.12569822, + 0.06234273, + 0.062379815, + 0.12301076, + 0.062037356, + 0.12706876, + 0.12775217, + 0.12815405, + 0.06502236, + 0.12418637, + 0.06366649, + 0.12165575, + 0.12473314, + 0.12309331, + 0.12540075, + 0.12773722, + 0.063183725, + 0.06194332, + 0.063115165, + 0.064503685, + 0.06362732, + 0.12624387, + 0.06288168, + 0.06080931, + 0.1206144, + 0.06183651, + 0.12972994, + 0.0627913, + 0.12643975, + 0.12600654, + 0.060561165, + 0.11908015, + 0.12842998, + 0.12820502, + 0.06314017, + 0.12675942, + 0.12744254, + 0.12307789, + 0.06124741, + 0.12446348, + 0.06025077, + 0.12062515, + 0.11767954, + 0.12114841, + 0.06347565, + 0.062389165, + 0.12471357, + 0.1267419, + 0.062019248, + 0.123556465, + 0.12412642, + 0.12194713, + 0.12459946, + 0.06373942, + 0.12405623, + 0.12525746, + 0.06053102, + 0.11909608, + 0.12103986, + 0.11888951, + 0.06283265, + 0.12484604, + 0.059830666, + 0.123886466, + 0.058721878, + 0.06505489, + 0.12024162, + 0.12088557, + 0.06497758, + 0.12537232, + 0.118689604, + 0.1185964, + 0.12487768, + 0.06234484, + 0.063239455, + 0.12181302, + 0.12500143, + 0.06144439, + 0.123892695, + 0.06322356, + 0.06075873, + 0.06400462, + 0.12386324, + 0.11797801, + 0.063977085, + 0.0610135, + 0.062170736, + 0.060455892, + 0.12700762, + 0.06192173, + 0.12656504, + 0.06069817, + 0.062323034, + 0.061751295, + 0.061373767, + 0.124465905, + 0.12777765, + 0.12406513, + 0.12224693, + 0.12786247, + 0.124376014, + 0.06329137, + 0.061780103, + 0.12600783, + 0.121166356, + 0.06139451, + 0.122465454, + 0.060811177, + 0.060406227, + 0.060910862, + 0.123562105, + 0.12718882, + 0.12698865, + 0.12500887, + 0.12385456, + 0.06134381, + 0.12768099, + 0.1207425, + 0.12633103, + 0.11933334, + 0.12735344, + 0.1217412, + 0.06198373, + 0.061577167, + 0.06328106, + 0.12780821, + 0.119899355, + 0.11884217, + 0.06499533, + 0.06288517, + 0.12572709, + 0.06370967, + 0.06299336, + 0.12635015, + 0.12317125, + 0.123528235, + 0.062334333, + 0.121721454, + 0.063040406, + 0.060503077, + 0.12710865, + 0.12593082, + 0.1253199, + 0.12506114, + 0.06298848, + 0.12187009, + 0.06138891, + 0.06143218, + 0.122595355, + 0.12975028, + 0.061990198, + 0.058604315, + 0.062395692, + 0.064368166, + 0.12264681, + 0.12276988, + 0.05964031, + 0.062926926, + 0.124987945, + 0.06080277, + 0.058830444, + 0.12656274, + 0.06184245, + 0.06136579, + 0.06321543, + 0.11963763, + 0.12161548, + 0.12862557, + 0.06399388, + 0.062242173, + 0.12279626, + 0.12319045, + 0.058754504, + 0.064145856, + 0.12058943, + 0.12828861, + 0.06317596, + 0.061631527, + 0.06312177, + 0.061301287, + 0.12093809, + 0.124914594, + 0.06147969, + 0.12385189, + 0.1215742, + 0.062185816, + 0.12535793, + 0.06329084, + 0.12793434, + 0.12645, + 0.11965113, + 0.062352303, + 0.12161365, + 0.06285597, + 0.06130183, + 0.12684996, + 0.12684952, + 0.06215544, + 0.06363185, + 0.06042371, + 0.12557791, + 0.12269417, + 0.062173452, + 0.059899837, + 0.12786733, + 0.12386554, + 0.063487515, + 0.0636747, + 0.058852226, + 0.0626843, + 0.0625849, + 0.12451706, + 0.12167628, + 0.063683465, + 0.060833704, + 0.12347144, + 0.11772073, + 0.0647329, + 0.059449628, + 0.124460675, + 0.12304892, + 0.061370965, + 0.12278317, + 0.058206007, + 0.121803716, + 0.06251409, + 0.11924211, + 0.12743121, + 0.12565333, + 0.06275442, + 0.06352349, + 0.064351365, + 0.060097106, + 0.060317084, + 0.059768893, + 0.121791475, + 0.060224358, + 0.12532583, + 0.060764983, + 0.12077303, + 0.123844974, + 0.061764415, + 0.06125195, + 0.061555646, + 0.1236463, + 0.12514667, + 0.121424094, + 0.06172146, + 0.059762105, + 0.061486755, + 0.12457161, + 0.06326, + 0.0633896, + 0.062122516, + 0.12490207, + 0.06013389, + 0.06422362, + 0.061419457, + 0.12797524, + 0.12363866, + 0.12677658, + 0.06458394, + 0.060979757, + 0.12931338, + 0.06284752, + 0.06489921, + 0.12469534, + 0.06318158, + 0.12170537, + 0.12484324, + 0.12612495, + 0.1209938, + 0.118906245, + 0.061212316, + 0.12493468, + 0.12464009, + 0.062752806, + 0.12467642, + 0.0641423, + 0.1216294, + 0.1209582, + 0.060991958, + 0.061422933, + 0.12068459, + 0.12475638, + 0.123843476, + 0.122518815, + 0.061314374, + 0.06219265, + 0.12691875, + 0.06432875, + 0.06161244, + 0.06424724, + 0.06116942, + 0.121044785, + 0.06375235, + 0.06220792, + 0.12819417, + 0.12613277, + 0.11891829, + 0.058808018, + 0.06262901, + 0.121994704, + 0.061623022, + 0.12825878, + 0.12834923, + 0.12071676, + 0.12824294, + 0.12575309, + 0.06282522, + 0.12272275, + 0.06211538, + 0.124622494, + 0.12678842, + 0.12780456, + 0.12441278, + 0.118889384, + 0.12368323, + 0.06412907, + 0.06477927, + 0.06295068, + 0.058761925, + 0.062899806, + 0.059340063, + 0.058894932, + 0.11965655, + 0.124077566, + 0.058743656, + 0.11864628, + 0.119751774, + 0.06273457, + 0.12221417, + 0.121467434, + 0.120936885, + 0.12601312, + 0.1223208, + 0.06136741, + 0.0621674, + 0.124620505, + 0.12186019, + 0.06125989, + 0.06387756, + 0.06309048, + 0.06115474, + 0.060864925, + 0.12950446, + 0.12746058, + 0.12202926, + 0.061019138, + 0.12981099, + 0.061455812, + 0.11971428, + 0.0618985, + 0.12580271, + 0.062671095, + 0.061790176, + 0.123100474, + 0.12115817, + 0.062172294, + 0.0630974, + 0.1292075, + 0.12558155, + 0.060595244, + 0.061124552, + 0.06314932, + 0.06279811, + 0.064531155, + 0.062105816, + 0.124226145, + 0.12298026, + 0.12305574, + 0.061293487, + 0.061830226, + 0.060254183, + 0.1243921, + 0.12491277, + 0.06284794, + 0.06113546, + 0.063198164, + 0.12285613, + 0.0652593, + 0.12114529, + 0.06356058, + 0.12355269, + 0.06334004, + 0.061988022, + 0.06371018, + 0.12684947, + 0.062222466, + 0.06452483, + 0.061369646, + 0.058641843, + 0.058024712, + 0.059255727, + 0.06142778, + 0.061520416, + 0.12299057, + 0.1240438, + 0.062762305, + 0.1233913, + 0.06354816, + 0.060491633, + 0.12533638, + 0.120681874, + 0.12654531, + 0.12492515, + 0.12168613, + 0.120121546, + 0.059344687, + 0.12227504, + 0.059349224, + 0.061782755, + 0.12443372, + 0.12758052, + 0.12190324, + 0.06323058, + 0.06377576, + 0.11574595, + 0.061041545, + 0.06135239, + 0.063873164, + 0.11965734, + 0.12018278, + 0.061995443, + 0.06311943, + 0.062282298, + 0.117936656, + 0.06358508, + 0.12773158, + 0.12461038, + 0.12293449, + 0.060854096, + 0.06118873, + 0.062328547, + 0.11787681, + 0.061586753, + 0.06342965, + 0.12292409, + 0.119889475, + 0.12385673, + 0.061602287, + 0.061503604, + 0.122390024, + 0.12681009, + 0.06074304, + 0.063694805, + 0.06460628, + 0.12174, + 0.062427726, + 0.060504176, + 0.06104154, + 0.060948625, + 0.0609405, + 0.12081094 ], "implementation": "go-libp2p", "version": "v0.27", @@ -526,106 +4216,1006 @@ }, { "result": [ - 0.061366297, - 0.06141815, - 0.06235603, - 0.05939474, - 0.06039162, - 0.06285481, - 0.062587045, - 0.06076747, - 0.061709136, - 0.0651515, - 0.06375983, - 0.06174513, - 0.06441085, - 0.06124736, - 0.0633643, - 0.062006813, - 0.064214155, - 0.06199964, - 0.059042238, - 0.0638644, - 0.061607417, - 0.06152012, - 0.061881498, - 0.063524246, - 0.064039655, - 0.06134695, - 0.062953085, - 0.06384624, - 0.06427768, - 0.06291174, - 0.063121215, - 0.064400375, - 0.060993534, - 0.06326786, - 0.06498396, - 0.06366782, - 0.06421878, - 0.05991633, - 0.061237972, - 0.06097275, - 0.06281252, - 0.063318364, - 0.06220533, - 0.059357736, - 0.062972456, - 0.06279454, - 0.06431296, - 0.061344843, - 0.060761552, - 0.062238023, - 0.064125076, - 0.060153004, - 0.06452732, - 0.062090736, - 0.063264675, - 0.063170955, - 0.06424445, - 0.06410372, - 0.060594898, - 0.063670315, - 0.058708303, - 0.059632868, - 0.05994657, - 0.06230721, - 0.06079447, - 0.062781, - 0.0634743, - 0.061454855, - 0.06413592, - 0.06086088, - 0.06315938, - 0.062183496, - 0.060575858, - 0.06285511, - 0.064148664, - 0.06287306, - 0.06424426, - 0.06077488, - 0.0604213, - 0.06092073, - 0.061406802, - 0.060680717, - 0.06267789, - 0.061268207, - 0.062574886, - 0.06418872, - 0.06184111, - 0.06153584, - 0.061698426, - 0.06317972, - 0.05922345, - 0.06279262, - 0.06402876, - 0.06379871, - 0.06081787, - 0.06390525, - 0.06378799, - 0.06364002, - 0.063555226, - 0.058329925 + 0.05979386, + 0.0614989, + 0.062057644, + 0.0629346, + 0.06084253, + 0.06274704, + 0.060138498, + 0.06168313, + 0.06249221, + 0.059208173, + 0.06315577, + 0.064342216, + 0.060861632, + 0.06126036, + 0.0606333, + 0.06253317, + 0.060403556, + 0.06038483, + 0.0645132, + 0.0636985, + 0.061929233, + 0.061765026, + 0.059337232, + 0.06328489, + 0.06281512, + 0.06109722, + 0.061478745, + 0.061853956, + 0.06432052, + 0.06203753, + 0.061623573, + 0.062024113, + 0.06343448, + 0.061724402, + 0.061243206, + 0.06135625, + 0.06527555, + 0.06260956, + 0.063790575, + 0.062603205, + 0.06271221, + 0.060480125, + 0.063212246, + 0.06289105, + 0.06414841, + 0.06258399, + 0.062755905, + 0.06096968, + 0.060282093, + 0.06320078, + 0.06204031, + 0.062469658, + 0.060154475, + 0.06227841, + 0.061607603, + 0.06294187, + 0.061856747, + 0.06370741, + 0.06157508, + 0.06274756, + 0.062030185, + 0.061531935, + 0.060438696, + 0.06317379, + 0.06250942, + 0.062877975, + 0.06079161, + 0.061781704, + 0.06282605, + 0.060677525, + 0.060185745, + 0.059562013, + 0.06184914, + 0.062941395, + 0.06266841, + 0.06186885, + 0.06369873, + 0.06320667, + 0.06289801, + 0.05978253, + 0.06366667, + 0.06116066, + 0.06428175, + 0.062050518, + 0.063048184, + 0.06055832, + 0.063025385, + 0.062117364, + 0.062324926, + 0.059716098, + 0.062684886, + 0.061443537, + 0.059105065, + 0.06423332, + 0.06210462, + 0.061752487, + 0.05933307, + 0.06337844, + 0.06265861, + 0.061626848, + 0.062014375, + 0.061660185, + 0.06400093, + 0.06269735, + 0.060753748, + 0.06418341, + 0.060211968, + 0.063170485, + 0.063441835, + 0.06301364, + 0.061521634, + 0.05989454, + 0.06359335, + 0.06003695, + 0.060188636, + 0.061473362, + 0.061123997, + 0.06094188, + 0.06238059, + 0.06219674, + 0.061772026, + 0.06302244, + 0.06217494, + 0.06420405, + 0.06289659, + 0.062873684, + 0.06372151, + 0.063877866, + 0.06170014, + 0.061899442, + 0.05930521, + 0.061791964, + 0.065101504, + 0.064989276, + 0.062589176, + 0.063712336, + 0.063643016, + 0.062825225, + 0.060757287, + 0.06384424, + 0.060841434, + 0.060667887, + 0.06038359, + 0.06306893, + 0.06158978, + 0.06308526, + 0.062179074, + 0.061404727, + 0.06363155, + 0.06086258, + 0.061433226, + 0.06251437, + 0.06185469, + 0.06378106, + 0.060349714, + 0.0617683, + 0.061294287, + 0.061439868, + 0.062053643, + 0.06141682, + 0.06316865, + 0.06431798, + 0.060288608, + 0.060308624, + 0.062582314, + 0.06297855, + 0.06232935, + 0.06172678, + 0.06423594, + 0.06368951, + 0.0627127, + 0.063415445, + 0.06462346, + 0.060237568, + 0.060226552, + 0.06392753, + 0.06298952, + 0.06081873, + 0.060775157, + 0.06408355, + 0.06211819, + 0.061403032, + 0.0643188, + 0.06205648, + 0.061182167, + 0.06278589, + 0.06137354, + 0.06444163, + 0.062767684, + 0.059858225, + 0.059899423, + 0.061598144, + 0.060082808, + 0.061800536, + 0.061146166, + 0.06150874, + 0.06220255, + 0.06374253, + 0.062975585, + 0.060746208, + 0.06361366, + 0.06064718, + 0.060326252, + 0.063673995, + 0.060362574, + 0.061759576, + 0.06434878, + 0.061801597, + 0.061751597, + 0.06268712, + 0.06439896, + 0.06359741, + 0.05931582, + 0.06360835, + 0.063618176, + 0.06148455, + 0.062682614, + 0.06508584, + 0.061175767, + 0.05927704, + 0.062290452, + 0.06253745, + 0.061925694, + 0.06459632, + 0.06180387, + 0.06227639, + 0.06159579, + 0.0617276, + 0.06339555, + 0.061987013, + 0.063767575, + 0.063278936, + 0.059473924, + 0.06335779, + 0.06458398, + 0.062495936, + 0.06226176, + 0.061254166, + 0.060763113, + 0.05875846, + 0.063741535, + 0.0609447, + 0.062923096, + 0.061072174, + 0.06363208, + 0.06420087, + 0.06207967, + 0.062252656, + 0.062823534, + 0.06353428, + 0.06304217, + 0.06528387, + 0.061899245, + 0.062377892, + 0.0636287, + 0.06358076, + 0.06275488, + 0.06503346, + 0.061556514, + 0.063839406, + 0.06246073, + 0.061890773, + 0.061340466, + 0.059371043, + 0.06015841, + 0.06289169, + 0.061485823, + 0.06227495, + 0.062264785, + 0.06239975, + 0.062895074, + 0.06374545, + 0.061236992, + 0.061852027, + 0.06423213, + 0.06392515, + 0.06014145, + 0.06428697, + 0.060686026, + 0.06354961, + 0.05985496, + 0.062677056, + 0.063709125, + 0.0621901, + 0.06230828, + 0.062765874, + 0.061910443, + 0.061705038, + 0.06363215, + 0.060811654, + 0.060879894, + 0.06282529, + 0.06075783, + 0.062227864, + 0.062732086, + 0.06360908, + 0.064911544, + 0.064153045, + 0.06169243, + 0.059889056, + 0.063457906, + 0.06365491, + 0.063651316, + 0.062058754, + 0.060719453, + 0.06034434, + 0.061166268, + 0.06277938, + 0.06292052, + 0.059201546, + 0.063161284, + 0.060935717, + 0.062285367, + 0.06371709, + 0.06281371, + 0.06152243, + 0.061419237, + 0.0601426, + 0.06225559, + 0.06233074, + 0.06439434, + 0.06165969, + 0.06076728, + 0.064408936, + 0.06293402, + 0.062192105, + 0.063760415, + 0.060685128, + 0.0644389, + 0.06314484, + 0.063121825, + 0.060743947, + 0.063668795, + 0.060660604, + 0.06271744, + 0.058328543, + 0.061411858, + 0.06189554, + 0.060102962, + 0.06431615, + 0.060885288, + 0.06374258, + 0.061255485, + 0.060424276, + 0.06279205, + 0.061910532, + 0.064550266, + 0.06110153, + 0.061334394, + 0.059249654, + 0.061582856, + 0.06166638, + 0.061446104, + 0.06369511, + 0.06147995, + 0.062022746, + 0.06435338, + 0.062320136, + 0.061921295, + 0.060921602, + 0.06372469, + 0.059915196, + 0.06441641, + 0.062130637, + 0.06195945, + 0.06069592, + 0.061742913, + 0.06417632, + 0.06350658, + 0.061873604, + 0.06091348, + 0.061492123, + 0.059304368, + 0.06412135, + 0.060104094, + 0.0637707, + 0.06258704, + 0.06350975, + 0.061825927, + 0.062071595, + 0.06430397, + 0.06437954, + 0.06046731, + 0.06410612, + 0.06244289, + 0.060224306, + 0.06141761, + 0.063339286, + 0.06368062, + 0.06120493, + 0.06137541, + 0.0594094, + 0.06267729, + 0.062760755, + 0.06237015, + 0.06215682, + 0.06228235, + 0.06282457, + 0.061552323, + 0.062088117, + 0.061403822, + 0.063143015, + 0.0618638, + 0.06165682, + 0.06284204, + 0.061789196, + 0.06313249, + 0.06179003, + 0.05904246, + 0.06340823, + 0.061967406, + 0.061541617, + 0.0637321, + 0.06195906, + 0.06358925, + 0.06425526, + 0.061410718, + 0.062804185, + 0.060278904, + 0.061348844, + 0.061958287, + 0.06306985, + 0.063841216, + 0.06377952, + 0.06095326, + 0.062317584, + 0.061831135, + 0.06287976, + 0.061591603, + 0.06335574, + 0.063638054, + 0.06300621, + 0.06183161, + 0.060828935, + 0.06424561, + 0.062007222, + 0.060872953, + 0.061587926, + 0.05841837, + 0.06090226, + 0.062893264, + 0.06187206, + 0.06366404, + 0.06215531, + 0.0640752, + 0.061135575, + 0.061393812, + 0.06363099, + 0.062193226, + 0.061784647, + 0.06169515, + 0.061955925, + 0.06236186, + 0.06310956, + 0.06434095, + 0.058605157, + 0.058241893, + 0.061688866, + 0.06202439, + 0.06189997, + 0.062434703, + 0.06232555, + 0.064332396, + 0.0618414, + 0.061250456, + 0.059787028, + 0.060930777, + 0.062661715, + 0.06380334, + 0.060944274, + 0.06418719, + 0.06348855, + 0.06316795, + 0.060639746, + 0.06297868, + 0.06227127, + 0.059747573, + 0.0640002, + 0.06148571, + 0.0607764, + 0.062461674, + 0.062380627, + 0.06278742, + 0.06357981, + 0.06163896, + 0.06327241, + 0.062274482, + 0.06381744, + 0.06347626, + 0.05827588, + 0.061138034, + 0.0632151, + 0.060229123, + 0.061270114, + 0.06267246, + 0.062692106, + 0.06231539, + 0.060769193, + 0.061368532, + 0.06075751, + 0.05929716, + 0.06179103, + 0.06419418, + 0.0624434, + 0.06092033, + 0.06116908, + 0.062283907, + 0.06174217, + 0.062652595, + 0.062773764, + 0.064602576, + 0.0629032, + 0.06079287, + 0.06312732, + 0.06256519, + 0.06322814, + 0.061317157, + 0.062558144, + 0.059749406, + 0.05980088, + 0.06146816, + 0.059700225, + 0.05925501, + 0.058709715, + 0.06263208, + 0.0635892, + 0.06127754, + 0.058073636, + 0.060395606, + 0.062980175, + 0.062253, + 0.063260496, + 0.06042692, + 0.06323225, + 0.06320897, + 0.06155976, + 0.06341107, + 0.06461691, + 0.06509862, + 0.059244685, + 0.06372436, + 0.06423378, + 0.060984038, + 0.06346932, + 0.062351085, + 0.062750496, + 0.06232268, + 0.062089987, + 0.0628622, + 0.06171485, + 0.061235707, + 0.062559515, + 0.06216701, + 0.06365875, + 0.06377454, + 0.06374699, + 0.061479732, + 0.06068172, + 0.06138454, + 0.06152995, + 0.063729495, + 0.05916323, + 0.06041075, + 0.064493924, + 0.06286075, + 0.0639641, + 0.0598729, + 0.06281571, + 0.062856816, + 0.06194866, + 0.06313351, + 0.061772507, + 0.06380168, + 0.06276818, + 0.061157312, + 0.063751616, + 0.063188456, + 0.060277607, + 0.06325138, + 0.06512414, + 0.061305415, + 0.062273193, + 0.060417358, + 0.061609734, + 0.062217303, + 0.060880408, + 0.060569335, + 0.061913934, + 0.06444328, + 0.060207047, + 0.06164716, + 0.064480714, + 0.06273292, + 0.06335622, + 0.062218167, + 0.062090505, + 0.06155317, + 0.0627704, + 0.060952976, + 0.06328552, + 0.062280163, + 0.061459187, + 0.061888028, + 0.05970221, + 0.062122222, + 0.0597407, + 0.058327984, + 0.061222583, + 0.062315445, + 0.061566573, + 0.063535646, + 0.06215149, + 0.062856615, + 0.06197932, + 0.06155451, + 0.06445024, + 0.064445965, + 0.062247932, + 0.05917135, + 0.060923513, + 0.06136525, + 0.062816456, + 0.061488234, + 0.063800745, + 0.061575547, + 0.06130228, + 0.06310618, + 0.061906185, + 0.06272591, + 0.06368562, + 0.06079202, + 0.061001748, + 0.05997783, + 0.061381154, + 0.06371883, + 0.06344037, + 0.06214938, + 0.061319023, + 0.059773207, + 0.06115178, + 0.06529025, + 0.06371798, + 0.064129755, + 0.06255588, + 0.0609593, + 0.060296375, + 0.063391164, + 0.0643208, + 0.06268255, + 0.06369317, + 0.061821412, + 0.06421077, + 0.06086433, + 0.061842367, + 0.06279925, + 0.06290217, + 0.059898548, + 0.06383062, + 0.060675934, + 0.06276366, + 0.059785724, + 0.06269804, + 0.060327776, + 0.06355544, + 0.061033607, + 0.06177277, + 0.06356359, + 0.064168565, + 0.059250753, + 0.06369532, + 0.061907504, + 0.061360195, + 0.061452452, + 0.06331769, + 0.06321592, + 0.063089624, + 0.06084608, + 0.062607065, + 0.060414653, + 0.06371047, + 0.059321288, + 0.062762626, + 0.0621076, + 0.061927795, + 0.062539496, + 0.062565565, + 0.06356398, + 0.064264365, + 0.06326479, + 0.062072203, + 0.061838903, + 0.0646521, + 0.061973702, + 0.06420902, + 0.0646915, + 0.063238904, + 0.06356952, + 0.06360718, + 0.060874417, + 0.06041922, + 0.059130058, + 0.06118578, + 0.062250856, + 0.06410639, + 0.06399072, + 0.06508581, + 0.06090668, + 0.06323747, + 0.061443124, + 0.05976701, + 0.058848005, + 0.062373713, + 0.061365414, + 0.06444588, + 0.062794365, + 0.06412159, + 0.062258974, + 0.06310725, + 0.06228619, + 0.06436208, + 0.063303985, + 0.060171414, + 0.061232474, + 0.06084174, + 0.06357324, + 0.06345992, + 0.063671134, + 0.06068351, + 0.06430609, + 0.06265557, + 0.06110075, + 0.065136455, + 0.059910703, + 0.062354036, + 0.060344014, + 0.060081746, + 0.06356441, + 0.060783196, + 0.062382977, + 0.059761215, + 0.06524583, + 0.061889578, + 0.061759107, + 0.06311186, + 0.06324214, + 0.059268165, + 0.061348207, + 0.062435903, + 0.06089429, + 0.06205786, + 0.06321492, + 0.06324156, + 0.06433786, + 0.063115135, + 0.06017287, + 0.06384268, + 0.060110845, + 0.06353545, + 0.062320348, + 0.063262254, + 0.06040462, + 0.059825834, + 0.06250469, + 0.060704, + 0.064890765, + 0.063007, + 0.060435154, + 0.06327815, + 0.06226422, + 0.059748843, + 0.06419631, + 0.059847493, + 0.061958812, + 0.062139746, + 0.06102512, + 0.063417464, + 0.06405791, + 0.06408854, + 0.061629616, + 0.062317874, + 0.06070151, + 0.062802985, + 0.064530745, + 0.061835118, + 0.06349172, + 0.06439148, + 0.06257857, + 0.0618435, + 0.0612463, + 0.059314977, + 0.061835606, + 0.06318485, + 0.05846553, + 0.060747154, + 0.06253624, + 0.06424052, + 0.06300817, + 0.0630872, + 0.06407303, + 0.06270849, + 0.06360294, + 0.06182536, + 0.0586877, + 0.06257508, + 0.06314644, + 0.06328054, + 0.06294638, + 0.06332351, + 0.061097328, + 0.062281944, + 0.060740136, + 0.061762482, + 0.06446493, + 0.060947508, + 0.06283282, + 0.060200904, + 0.05975719, + 0.061399903, + 0.06280819, + 0.062469244, + 0.061885603, + 0.06447722, + 0.061538026, + 0.059892207, + 0.061727017, + 0.062140662, + 0.060860913, + 0.063015096, + 0.061284184, + 0.06312262, + 0.061938345, + 0.06316551, + 0.060360573, + 0.064449936, + 0.06348923, + 0.06360755, + 0.064326376, + 0.06164371, + 0.059297927, + 0.061783917, + 0.06138533, + 0.06091118, + 0.062749654, + 0.063602544, + 0.06233289, + 0.064593695, + 0.05826391, + 0.06234892, + 0.06219125, + 0.061189026, + 0.058916453, + 0.06258262, + 0.061358728, + 0.06322487, + 0.06004748, + 0.06125965, + 0.06091724, + 0.062283725, + 0.062124405, + 0.06136791, + 0.060872372, + 0.0632676, + 0.060370337, + 0.06493723, + 0.06232615, + 0.06304331, + 0.061939873, + 0.05980563, + 0.060403984, + 0.064906195, + 0.06342987, + 0.06201962, + 0.062731, + 0.060963932, + 0.06344547, + 0.0609048, + 0.06363733, + 0.0628294, + 0.06383475, + 0.06265264, + 0.063161425, + 0.060189433, + 0.06246286, + 0.061266206, + 0.06319767, + 0.062539175, + 0.06061273, + 0.058746524, + 0.061816245, + 0.06374292, + 0.063560665, + 0.06317224, + 0.063223965, + 0.06303183, + 0.062025357, + 0.06335688, + 0.06375669, + 0.064367265, + 0.06306756, + 0.06368245, + 0.0640907, + 0.06307405, + 0.061457425, + 0.060045425, + 0.061761852, + 0.061942898, + 0.06431174, + 0.05982536, + 0.061410792, + 0.061968915, + 0.0620733, + 0.06280793, + 0.06380812, + 0.06142668, + 0.061766844, + 0.0649119, + 0.060845394, + 0.063008584, + 0.064966306, + 0.05803107, + 0.062541865, + 0.06417117, + 0.060877066, + 0.06134829, + 0.060287263, + 0.06326362, + 0.061103053, + 0.06101631, + 0.060647454, + 0.06449227, + 0.06128844, + 0.06360569, + 0.06276879, + 0.06486922, + 0.06345363, + 0.06441076, + 0.060451847, + 0.0627912, + 0.061479166, + 0.06382031, + 0.06380985, + 0.059796836, + 0.060898013, + 0.061231285, + 0.061917424, + 0.0632277, + 0.061581664, + 0.059430394, + 0.06280849, + 0.060878523, + 0.06413634, + 0.061140038, + 0.06255095, + 0.06420944, + 0.061289538, + 0.06400026, + 0.06187256, + 0.06394408, + 0.06375153, + 0.06455168, + 0.06363476, + 0.06296707, + 0.063756734, + 0.060728095, + 0.060522046, + 0.060161687, + 0.06463918, + 0.064323545, + 0.05979955, + 0.062341843, + 0.06195332, + 0.061778024, + 0.06386776, + 0.06293185, + 0.06279565, + 0.06321745, + 0.06185388, + 0.06234759, + 0.061229877, + 0.06357985, + 0.05862019, + 0.061321087, + 0.060375992, + 0.0618004, + 0.061773814, + 0.06298199, + 0.062774315, + 0.061376244, + 0.06185918, + 0.06464773, + 0.061283413, + 0.06282341, + 0.06262298, + 0.063581094, + 0.06085791, + 0.06366299, + 0.06178756, + 0.06369349, + 0.06303738, + 0.060733046 ], "implementation": "go-libp2p", "version": "v0.27", diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 8323a6a3c..9ad725653 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -17,7 +17,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 100 << 20, downloadBytes: 0, unit: "bit/s", - iterations: 1, + iterations: 10, }), runBenchmarkAcrossVersions({ name: "Single Connection throughput – Download 100 MiB", @@ -26,7 +26,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 0, downloadBytes: 100 << 20, unit: "bit/s", - iterations: 1, + iterations: 10, }), runBenchmarkAcrossVersions({ name: "Connection establishment + 1 byte round trip latencies", @@ -35,7 +35,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 1, downloadBytes: 1, unit: "s", - iterations: 100, + iterations: 1000, }), ], }; From 2964b829201df5c309839848c86e9be93c90e32c Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 11 May 2023 15:46:10 +0900 Subject: [PATCH 076/101] Document command line flags in perf/README --- perf/README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/perf/README.md b/perf/README.md index 4b05627dd..69031d1f5 100644 --- a/perf/README.md +++ b/perf/README.md @@ -28,5 +28,19 @@ Benchmark results can be visualized with https://observablehq.com/@mxinden-works ## Adding a new implementation -1. Add implementation to `impl/`. +1. Add implementation to `impl/`. Requirements for the binary: + - Running as a libp2p-perf server + - Command line flags + - `--run-server` + - `--secret-key-seed` unsigned integer to be used as a seed by libp2p-based implementations. Likely to go away in future iterations. + - Running as a libp2p-perf client + - Input via command line + - `--server-ip-address` + - `--transport` (see `runner/versions.ts` for possible variants) + - `--upload-bytes` number of bytes to upload per stream. + - `--download-bytes` number of bytes to upload per stream. + - Output + - Logging MUST go to stderr. + - Measurement output is printed to stdout as JSON in the form of `{ latencies: [ 1.0, 42.0 ]}`. + 2. Reference implementation in `runner/src/versions.ts`. From 1498fc1bf4b62f5fb23106dd3f53c86e1efd617a Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 11 May 2023 15:46:56 +0900 Subject: [PATCH 077/101] Remove perf/dashboard --- perf/dashboard/README.md | 62 ---------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 perf/dashboard/README.md diff --git a/perf/dashboard/README.md b/perf/dashboard/README.md deleted file mode 100644 index fce73a9ad..000000000 --- a/perf/dashboard/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Perf Dashboard [wip] - -This is an outline of what I'd like to see our perf dashboard look like. - -A lot of this is inspired by the [MsQuic -dashboard](https://microsoft.github.io/msquic/). Please look at that first. - -For each combination of libp2p implementation, version, and transport we would -have numbers that outline: -1. Download/Upload throughput -2. Request latency -3. Requests per second (for some request/response protocol) -4. Handshakes per second (useful to identify overhead in connection - initialization). -5. Memory usage. - -The y axis on the graphs is the value for the above tests, the x axis is the -specific version. Different lines represent different implementation+transports. - -The dashboards should be selectable and filterable. - -# Other transports (iperf/http) - -We have to be careful to compare apples to apples. A raw iperf number might be -confusing here because no application will ever hit those numbers since they -will at least want some encryption in their connection. I would suggest not -having this or an HTTP comparison. Having HTTPS might be okay. - -# Example dashboard - -https://observablehq.com/@realmarcopolo/libp2p-perf - -The dashboard automatically pulls data from this repo to display it. - -It currently pulls example-data.json. The schema of this data is defined in -`benchmarks.schema.json` and `benchmark-result-type.ts`. - -# Benchmark runner - -This is the thing that runs the benchmark binaries and produces the benchmark -data (that matches the benchmarks.schema.json/benchmark-result-type.ts) - -# Benchmark binary - -This is per implementation. It's a binary that accepts the following flags: - -| Flag | description | -| -------------------- | ------------------------------------------------------ | -| parallel_connections | number of parallel connections to use | -| upload_bytes | number of bytes to upload to server per connection | -| download_bytes | number of bytes to download from server per connection | -| n_times | number of times to do the perf round trip | -| close_connection | bool. Close the connection after a perf round trip | - -The binary should report the following: - -* Stats on the length of the run: - * Total, Avg, Min, Max, p95 -* Round trips per second: - * Avg, Min, Max, p95 - -Maybe more? TODO... From 909217e42d04d0f86da86e86236fc0b4b3654986 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 11 May 2023 16:03:00 +0900 Subject: [PATCH 078/101] Remove --n-times flag Dead code as of now. Potentially to be reintroduced in future iterations. --- perf/impl/go-libp2p/v0.27/main.go | 15 ++++------ perf/impl/https/v0.1/main.go | 43 +++++++++++++--------------- perf/impl/rust-libp2p/v0.51/Makefile | 2 +- perf/runner/src/index.ts | 3 +- 4 files changed, 28 insertions(+), 35 deletions(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 327f9e6fd..7354f8a8c 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -20,7 +20,6 @@ func main() { secretKeySeed := flag.Uint64("secret-key-seed", 0, "Server secret key seed") uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") - nTimes := flag.Uint64("n-times", 0, "N times") flag.Parse() @@ -71,16 +70,14 @@ func main() { panic(err) } - times := make([]time.Duration, 0, *nTimes) + times := make([]time.Duration, 0, 1) - for i := 0; uint64(i) < *nTimes; i++ { - start := time.Now() - err := perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) - if err != nil { - panic(err) - } - times = append(times, time.Since(start)) + start := time.Now() + err = perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) + if err != nil { + panic(err) } + times = append(times, time.Since(start)) // float32 because json timesS := make([]float32, 0, len(times)) diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index cfb9ba1c7..09dca12f3 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -54,8 +54,8 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { } } -func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes uint64) ([]time.Duration, error) { - durations := make([]time.Duration, nTimes) +func runClient(serverAddr string, uploadBytes, downloadBytes uint64) ([]time.Duration, error) { + durations := make([]time.Duration, 1) client := &http.Client{ Transport: &http.Transport{ @@ -68,25 +68,23 @@ func runClient(serverAddr string, uploadBytes, downloadBytes, nTimes uint64) ([] reqBody := make([]byte, 8+uploadBytes) binary.BigEndian.PutUint64(reqBody, uint64(downloadBytes)) - for i := 0; uint64(i) < nTimes; i++ { - startTime := time.Now() - resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) - if err != nil { - return durations, err - } - - respBody, err := ioutil.ReadAll(resp.Body) - if err != nil { - fmt.Printf("Error reading response: %v\n", err) - return durations, err - } else if uint64(len(respBody)) != downloadBytes { - fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) - return durations, err - } - resp.Body.Close() + startTime := time.Now() + resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) + if err != nil { + return durations, err + } - durations[i] = time.Since(startTime) + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("Error reading response: %v\n", err) + return durations, err + } else if uint64(len(respBody)) != downloadBytes { + fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) + return durations, err } + resp.Body.Close() + + durations[0] = time.Since(startTime) return durations, nil } @@ -153,7 +151,6 @@ func main() { _ = flag.Uint64("secret-key-seed", 0, "Server secret key seed") uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") - nTimes := flag.Uint64("n-times", 0, "N times") flag.Parse() if *runServer { @@ -181,13 +178,13 @@ func main() { } } else { // Client mode - if *serverIPAddr == "" || *nTimes <= 0 { - fmt.Println("Error: Please provide valid server-address and n-times flags for client mode.") + if *serverIPAddr == "" { + fmt.Println("Error: Please provide valid server-address flags for client mode.") return } // Run the client and print the results - durations, err := runClient(fmt.Sprintf("%s:%d", *serverIPAddr, 4001), *uploadBytes, *downloadBytes, *nTimes) + durations, err := runClient(fmt.Sprintf("%s:%d", *serverIPAddr, 4001), *uploadBytes, *downloadBytes) if err != nil { panic(err) } diff --git a/perf/impl/rust-libp2p/v0.51/Makefile b/perf/impl/rust-libp2p/v0.51/Makefile index bf2e55f8a..e15e67780 100644 --- a/perf/impl/rust-libp2p/v0.51/Makefile +++ b/perf/impl/rust-libp2p/v0.51/Makefile @@ -1,5 +1,5 @@ image_name := rust-v0.51 -commitSha := f515473f7f94597d55056df88cc9f784c35d202f +commitSha := 59d8f3f02ce0b72320202bf43c84a8060f3db545 all: perf diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 9ad725653..7247e185c 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -129,8 +129,7 @@ interface Latencies { function runClient(args: ArgsRunBenchmark): Latencies { console.error(`=== Starting client ${args.implementation}/${args.id}/${args.transportStack}`); - // TODO: Remove static --n-times. - const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes} --n-times 1` + const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes}` const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` const stdout = execCommand(cmd); From 0e7c64ec191cc7a5b707d60d53691e45acd9b00d Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 11 May 2023 17:01:24 +0900 Subject: [PATCH 079/101] Rename rust-libp2p v0.51 to v0.52 Version on rust-libp2p `perf` branch changed in the meantime. --- perf/impl/rust-libp2p/{v0.51 => v0.52}/Makefile | 1 - perf/runner/src/versions.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) rename perf/impl/rust-libp2p/{v0.51 => v0.52}/Makefile (96%) diff --git a/perf/impl/rust-libp2p/v0.51/Makefile b/perf/impl/rust-libp2p/v0.52/Makefile similarity index 96% rename from perf/impl/rust-libp2p/v0.51/Makefile rename to perf/impl/rust-libp2p/v0.52/Makefile index e15e67780..0370d10da 100644 --- a/perf/impl/rust-libp2p/v0.51/Makefile +++ b/perf/impl/rust-libp2p/v0.52/Makefile @@ -1,4 +1,3 @@ -image_name := rust-v0.51 commitSha := 59d8f3f02ce0b72320202bf43c84a8060f3db545 all: perf diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 0abf377b4..913b82af8 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -6,7 +6,7 @@ export type Version = { export const versions: Array = [ { - id: "v0.51", + id: "v0.52", implementation: "rust-libp2p", transportStacks: ["tcp", "quic-v1"] }, From 6fa2b0014796bafcd06fbd44e0e37d0872a0983c Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 11 May 2023 17:33:41 +0900 Subject: [PATCH 080/101] Add rust-libp2p v0.52-quinn based on upstream quinn Uses https://github.com/libp2p/rust-libp2p/pull/3454 --- perf/impl/rust-libp2p/v0.52-quinn/Makefile | 22 + perf/runner/benchmark-results.json | 5924 +++----------------- perf/runner/src/index.ts | 6 +- perf/runner/src/versions.ts | 5 + 4 files changed, 848 insertions(+), 5109 deletions(-) create mode 100644 perf/impl/rust-libp2p/v0.52-quinn/Makefile diff --git a/perf/impl/rust-libp2p/v0.52-quinn/Makefile b/perf/impl/rust-libp2p/v0.52-quinn/Makefile new file mode 100644 index 000000000..cab8e16ec --- /dev/null +++ b/perf/impl/rust-libp2p/v0.52-quinn/Makefile @@ -0,0 +1,22 @@ +commitSha := d795f5c29271aa0af117f8e599ef07c2b874f2ad + +all: perf + +perf: rust-libp2p-${commitSha}/target/release/perf + cp ./rust-libp2p-${commitSha}/target/release/perf . + +rust-libp2p-${commitSha}/target/release/perf: rust-libp2p-${commitSha} + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)/rust-libp2p-${commitSha}":/usr/src/myapp -w /usr/src/myapp rust:1.69 cargo build --release --bin perf + +rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip + unzip -o rust-libp2p-${commitSha}.zip + +rust-libp2p-${commitSha}.zip: +# TODO: Change to libp2p + wget -O $@ "https://github.com/mxinden/rust-libp2p/archive/${commitSha}.zip" + +clean: + rm rust-libp2p-*.zip + rm -rf rust-libp2p-* + +.PHONY: all clean run diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index b48a1b8ea..5650ccd39 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,50 +6,59 @@ "results": [ { "result": [ - 24297848.965686653, - 21923293.0555712, - 21673455.25199101, - 20648639.851346083, - 23050220.29519616, - 23354010.21369026, - 22609840.711642783, - 23737695.901063852, - 24181213.226368435, - 23613709.527208574 + 23701616.745669935, + 23564988.770569358, + 23768107.96211605, + 23895253.60271939, + 24121270.555884488 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52", "transportStack": "tcp" }, { "result": [ - 48015820.5309386, - 55310640.224539585, - 61938887.22992043, - 98827657.42509778, - 45395940.92430345, - 100603753.41099809, - 71979617.00712337, - 116886172.67991772, - 84047998.03957845, - 59653860.205058016 + 60527725.15704369, + 112086701.2038308, + 59383136.817177296, + 93718796.0597939, + 53484638.28892967 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52", "transportStack": "quic-v1" }, { "result": [ - 294969298.9385426, - 309328415.11726046, - 310148492.97909164, - 310234806.0960345, - 307254422.1394683, - 294533881.77456516, - 326936373.0028434, - 321825133.404075, - 316732380.34808207, - 309343917.2322349 + 21659297.726486947, + 23341807.105683643, + 24440617.614624586, + 18126934.246367745, + 23461274.56785629 + ], + "implementation": "rust-libp2p", + "version": "v0.52-quinn", + "transportStack": "tcp" + }, + { + "result": [ + 598711379.7225211, + 591781449.138027, + 582198651.4344352, + 590642765.9369774, + 592932026.4174708 + ], + "implementation": "rust-libp2p", + "version": "v0.52-quinn", + "transportStack": "quic-v1" + }, + { + "result": [ + 320123546.2157083, + 287017747.27790856, + 289747311.88868153, + 304736385.6227017, + 301275270.28947985 ], "implementation": "https", "version": "v0.1", @@ -57,16 +66,11 @@ }, { "result": [ - 271976899.8501771, - 283430038.77114886, - 270248612.31371295, - 260217859.2738469, - 274343812.12800866, - 291368790.4747234, - 268021151.04887787, - 271109007.23476994, - 274563664.2702893, - 295567992.37695616 + 261420844.58865663, + 258947455.50396326, + 296402214.2340132, + 265921548.55804124, + 259887446.03497446 ], "implementation": "go-libp2p", "version": "v0.27", @@ -74,16 +78,11 @@ }, { "result": [ - 633162414.0126168, - 649114453.9991273, - 623913167.8159407, - 617251972.3516471, - 626352210.0723246, - 602895557.568256, - 610521089.4347842, - 619133118.5123696, - 631877934.9725114, - 606560852.5597066 + 628832315.7402982, + 594272922.0905726, + 639138563.3956187, + 611439043.7343302, + 611676769.0290568 ], "implementation": "go-libp2p", "version": "v0.27", @@ -97,50 +96,59 @@ "results": [ { "result": [ - 23931659.643195994, - 22389029.16893598, - 23506058.158813752, - 24431439.92130016, - 19141195.485931523, - 24121731.163703118, - 20853926.38317422, - 21303279.463220824, - 23916906.64143749, - 24163076.553794984 + 21859218.35949858, + 22991658.49578649, + 22903708.736048177, + 21645182.48414714, + 23933206.451734085 + ], + "implementation": "rust-libp2p", + "version": "v0.52", + "transportStack": "tcp" + }, + { + "result": [ + 61102162.20841612, + 54729708.83313513, + 56295578.18206124, + 36830452.12378539, + 49140084.48640002 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52", + "transportStack": "quic-v1" + }, + { + "result": [ + 22004219.352436535, + 20360608.348313875, + 20307238.416551843, + 23224103.48448984, + 21804939.700141765 + ], + "implementation": "rust-libp2p", + "version": "v0.52-quinn", "transportStack": "tcp" }, { "result": [ - 29907431.52825819, - 31563154.76576576, - 27263031.31975764, - 47989509.37945617, - 35624839.751651496, - 44701337.1676974, - 18458648.78085266, - 29327317.117728654, - 42888018.68802828, - 39632293.52634057 + 565206615.0914382, + 552048564.9754207, + 566336025.6309482, + 536528916.6219866, + 550925357.413946 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52-quinn", "transportStack": "quic-v1" }, { "result": [ - 282796314.3671489, - 290646906.51175123, - 263808325.50556374, - 286250896.55929726, - 288718359.6148498, - 297905402.35799825, - 268806331.32099956, - 262884718.77087423, - 288606312.82271475, - 283002944.2588033 + 290975609.214642, + 285034167.642309, + 270358487.8064848, + 290322884.3128471, + 301395769.4258094 ], "implementation": "https", "version": "v0.1", @@ -148,16 +156,11 @@ }, { "result": [ - 286495714.9829712, - 279471522.606618, - 277632014.25100857, - 293305408.16950905, - 279802455.372108, - 282629260.2439027, - 252406959.8130326, - 265896505.9870716, - 281306417.3321556, - 279630398.6081096 + 266913680.74652013, + 249876426.17774028, + 289400328.90854543, + 283239214.10528994, + 273524793.9851862 ], "implementation": "go-libp2p", "version": "v0.27", @@ -165,16 +168,11 @@ }, { "result": [ - 613134750.9353501, - 628762416.4643462, - 614806408.6504056, - 627440373.9237688, - 602642613.2850794, - 613932595.8479267, - 628395688.2954804, - 634345136.7826666, - 637952373.0214682, - 628142064.5341487 + 622977854.4751083, + 609599375.1550595, + 602416788.7738562, + 618645789.0075171, + 632490240.0137044 ], "implementation": "go-libp2p", "version": "v0.27", @@ -188,3020 +186,534 @@ "results": [ { "result": [ - 0.118708025, - 0.120662575, - 0.12077141, - 0.122032007, - 0.12679386, - 0.127471021, - 0.127703286, - 0.124456247, - 0.126256011, - 0.127428117, - 0.128788393, - 0.124595846, - 0.126765333, - 0.120161089, - 0.128168983, - 0.130045079, - 0.124847787, - 0.120375786, - 0.126149762, - 0.121507935, - 0.123929109, - 0.126584443, - 0.124447938, - 0.124345444, - 0.127087835, - 0.122631148, - 0.120826701, - 0.122239615, - 0.12653323, - 0.126088594, - 0.12211283, - 0.120554862, - 0.122688752, - 0.122637588, - 0.123746209, - 0.128505612, - 0.119691029, - 0.127658395, - 0.124587116, - 0.122507846, - 0.121651037, - 0.126443226, - 0.125645957, - 0.125356695, - 0.12508606, - 0.122325756, - 0.122489518, - 0.124691128, - 0.117970015, - 0.125844691, - 0.128364252, - 0.127122802, - 0.125322411, - 0.120463484, - 0.11772758, - 0.127847295, - 0.125020985, - 0.121457264, - 0.121668718, - 0.128815939, - 0.12546786, - 0.12092391, - 0.124230375, - 0.121840079, - 0.125565518, - 0.126575812, - 0.124049459, - 0.125619629, - 0.126204958, - 0.127695068, - 0.128820585, - 0.124046756, - 0.122700304, - 0.127424603, - 0.127950874, - 0.123313375, - 0.123691833, - 0.125756906, - 0.122742648, - 0.124052248, - 0.125057288, - 0.129164301, - 0.127552354, - 0.123751195, - 0.125162921, - 0.12508124, - 0.127162664, - 0.122878798, - 0.121421035, - 0.127226063, - 0.123386515, - 0.123162674, - 0.124578475, - 0.128678368, - 0.125575896, - 0.122732913, - 0.125365954, - 0.125408901, - 0.121266582, - 0.123748713, - 0.125357876, - 0.122400784, - 0.12813542, - 0.12616047, - 0.123170462, - 0.121823135, - 0.118384558, - 0.125197619, - 0.122086086, - 0.124248491, - 0.12322321, - 0.12343038, - 0.126588438, - 0.122080794, - 0.12051462, - 0.125885823, - 0.126471138, - 0.120803506, - 0.122824592, - 0.121590597, - 0.125033763, - 0.129228072, - 0.121651954, - 0.120225807, - 0.123019678, - 0.124525159, - 0.128295908, - 0.126310442, - 0.119700262, - 0.124729085, - 0.125501854, - 0.130710789, - 0.126842895, - 0.127503638, - 0.128660203, - 0.117822177, - 0.127250142, - 0.128082319, - 0.121559025, - 0.119798573, - 0.123236233, - 0.128433038, - 0.126820261, - 0.128878975, - 0.123451981, - 0.125856069, - 0.122498154, - 0.12151196, - 0.125353686, - 0.126887558, - 0.127173614, - 0.118470161, - 0.124264679, - 0.130104999, - 0.124676678, - 0.123821018, - 0.130664593, - 0.121481383, - 0.126264708, - 0.124020668, - 0.128515466, - 0.126762388, - 0.123192222, - 0.125533746, - 0.124787269, - 0.119874023, - 0.124173855, - 0.121524975, - 0.129321582, - 0.128294448, - 0.130031141, - 0.124263198, - 0.126759214, - 0.129250536, - 0.118551014, - 0.126320116, - 0.124223076, - 0.120577845, - 0.124484885, - 0.128548059, - 0.122795707, - 0.124533399, - 0.127014953, - 0.118749467, - 0.119451069, - 0.119713436, - 0.127614323, - 0.125727012, - 0.121612066, - 0.125468601, - 0.122883611, - 0.12201574, - 0.123054948, - 0.125455077, - 0.119418582, - 0.123583782, - 0.122735563, - 0.122881766, - 0.122697339, - 0.127380866, - 0.126882196, - 0.122456005, - 0.118151034, - 0.125599191, - 0.124438903, - 0.12661281, - 0.125406779, - 0.128615534, - 0.123357254, - 0.121754512, - 0.119024195, - 0.124562114, - 0.127618854, - 0.122793415, - 0.11756141, - 0.126656776, - 0.122907544, - 0.126787245, - 0.12833515, - 0.118627955, - 0.127416851, - 0.12436124, - 0.124889796, - 0.125945733, - 0.128859302, - 0.124007921, - 0.119686557, - 0.123732717, - 0.124347037, - 0.127730455, - 0.124986743, - 0.125823057, - 0.124722544, - 0.123611282, - 0.122789136, - 0.12688706, - 0.125288333, - 0.123141177, - 0.117551557, - 0.123979958, - 0.125871081, - 0.121379819, - 0.127712625, - 0.127231455, - 0.12650458, - 0.121119709, - 0.122816276, - 0.128649107, - 0.128850058, - 0.121321224, - 0.122361302, - 0.129035606, - 0.123317588, - 0.124701733, - 0.123005721, - 0.128695215, - 0.12684932, - 0.119553361, - 0.124199946, - 0.128187433, - 0.12185619, - 0.125065404, - 0.124123695, - 0.120282288, - 0.121731667, - 0.122419776, - 0.125521889, - 0.126512338, - 0.128669831, - 0.126115017, - 0.126412252, - 0.127238272, - 0.126808225, - 0.128631127, - 0.129319925, - 0.125399222, - 0.127903976, - 0.128804396, - 0.125618085, - 0.118882093, - 0.121209951, - 0.127249784, - 0.120187602, - 0.121931453, - 0.127155943, - 0.122429256, - 0.123409502, - 0.122504741, - 0.129989166, - 0.122145042, - 0.126937676, - 0.126972719, - 0.120692021, - 0.125696201, - 0.124660727, - 0.117844194, - 0.129356703, - 0.123823274, - 0.126521087, - 0.128965648, - 0.117390969, - 0.123514944, - 0.122392453, - 0.121935222, - 0.12756497, - 0.123542481, - 0.129943382, - 0.125515099, - 0.125728489, - 0.123740808, - 0.123487472, - 0.123046592, - 0.129047833, - 0.122876118, - 0.121986615, - 0.127786389, - 0.122316263, - 0.125890442, - 0.125771029, - 0.127109217, - 0.122519393, - 0.124374593, - 0.127475971, - 0.12841399, - 0.123537575, - 0.120339219, - 0.127332273, - 0.125507393, - 0.123801009, - 0.126589086, - 0.125250908, - 0.125807669, - 0.123474058, - 0.125156174, - 0.122130043, - 0.118624929, - 0.12374655, - 0.128478434, - 0.123204801, - 0.124430866, - 0.123658112, - 0.120494037, - 0.119714225, - 0.123213917, - 0.120615621, - 0.128174296, - 0.1226347, - 0.125389929, - 0.122287528, - 0.125457602, - 0.12446302, - 0.126251889, - 0.121502582, - 0.121559097, - 0.123194607, - 0.12138731, - 0.125391952, - 0.124398384, - 0.118450586, - 0.12797538, - 0.123256652, - 0.121917324, - 0.124193694, - 0.126767608, - 0.125145827, - 0.119557915, - 0.121883824, - 0.125269004, - 0.121650708, - 0.127348147, - 0.120850509, - 0.121883313, - 0.120661541, - 0.126544364, - 0.129665741, - 0.128015657, - 0.122706812, - 0.124696905, - 0.126537264, - 0.127582166, - 0.126088394, - 0.117669263, - 0.128862292, - 0.120629074, - 0.126972384, - 0.118719469, - 0.12854843, - 0.124496807, - 0.127609562, - 0.128177356, - 0.116743496, - 0.124631597, - 0.12556167, - 0.121610203, - 0.1271917, - 0.124742791, - 0.124687169, - 0.121643251, - 0.123609053, - 0.124607956, - 0.126043977, - 0.124775413, - 0.121618859, - 0.121765353, - 0.122560934, - 0.12627415, - 0.124218292, - 0.121637179, - 0.121441486, - 0.123172533, - 0.116086712, - 0.123396818, - 0.123397175, - 0.121071348, - 0.122808139, - 0.122640596, - 0.125466402, - 0.125758782, - 0.122730715, - 0.124810406, - 0.124107244, - 0.126649347, - 0.122686957, - 0.121606572, - 0.124531283, - 0.127690974, - 0.127621042, - 0.123592264, - 0.125437923, - 0.128248422, - 0.118492231, - 0.12814658, - 0.120478989, - 0.129087989, - 0.123796032, - 0.128364445, - 0.127642972, - 0.121363946, - 0.125370163, - 0.124506184, - 0.128365308, - 0.126320579, - 0.118599321, - 0.122432984, - 0.128793055, - 0.124908536, - 0.121700574, - 0.126190845, - 0.124303329, - 0.124427597, - 0.121768009, - 0.12145053, - 0.124591516, - 0.125149043, - 0.120107462, - 0.12144375, - 0.12620275, - 0.123140928, - 0.122833321, - 0.124768853, - 0.123952554, - 0.123675231, - 0.127788006, - 0.127365369, - 0.12298062, - 0.12187875, - 0.119704229, - 0.128194999, - 0.126878729, - 0.124284258, - 0.12397844, - 0.125826281, - 0.127090371, - 0.121701266, - 0.11843701, - 0.126240394, - 0.121935838, - 0.121749631, - 0.128317138, - 0.120530313, - 0.124095521, - 0.12300321, - 0.122640858, - 0.12715408, - 0.121425435, - 0.124091821, - 0.12355822, - 0.126694163, - 0.126344139, - 0.122369002, - 0.121919684, - 0.124335537, - 0.129083543, - 0.123586821, - 0.120713705, - 0.126267739, - 0.120734878, - 0.125496993, - 0.125220125, - 0.126856802, - 0.117644961, - 0.120789424, - 0.121800139, - 0.124910586, - 0.122091305, - 0.128638447, - 0.126087312, - 0.123305591, - 0.122750389, - 0.116614303, - 0.125475119, - 0.122465428, - 0.12846518, - 0.121882168, - 0.122254546, - 0.127411837, - 0.11960812, - 0.122404237, - 0.128508182, - 0.125171846, - 0.124712012, - 0.125459089, - 0.123329175, - 0.124672436, - 0.125259747, - 0.128858257, - 0.126468237, - 0.124368451, - 0.130351368, - 0.127369262, - 0.121500793, - 0.123598792, - 0.122532301, - 0.122571628, - 0.122799141, - 0.124624203, - 0.12499586, - 0.121482448, - 0.12624135, - 0.12869017, - 0.121448593, - 0.122976252, - 0.128528206, - 0.127439097, - 0.125220187, - 0.117347656, - 0.126560977, - 0.126574602, - 0.1264887, - 0.1267374, - 0.123171611, - 0.127413182, - 0.121474389, - 0.127160425, - 0.122704632, - 0.126746832, - 0.122827553, - 0.120944239, - 0.12358963, - 0.120540575, - 0.123428224, - 0.127479287, - 0.120795305, - 0.1242035, - 0.120840548, - 0.124040857, - 0.127436257, - 0.126717277, - 0.1233267, - 0.124330677, - 0.127384514, - 0.126018032, - 0.128209784, - 0.128380457, - 0.117926897, - 0.126539691, - 0.127666137, - 0.122362602, - 0.121349405, - 0.120606255, - 0.127245569, - 0.128070949, - 0.120689964, - 0.121428688, - 0.123703771, - 0.124458828, - 0.127023436, - 0.120055223, - 0.11845161, - 0.126670745, - 0.123207839, - 0.12536674, - 0.128027806, - 0.119678191, - 0.12421942, - 0.128393847, - 0.123170968, - 0.126362818, - 0.120421532, - 0.125358841, - 0.120850771, - 0.121604425, - 0.119270007, - 0.12168543, - 0.127830932, - 0.124881268, - 0.116318907, - 0.12577126, - 0.121497322, - 0.127337352, - 0.121701358, - 0.126407904, - 0.119584828, - 0.121911832, - 0.121276192, - 0.130158126, - 0.120556224, - 0.117555729, - 0.127171708, - 0.127195048, - 0.127026879, - 0.124852314, - 0.124936895, - 0.124937796, - 0.129108752, - 0.118748289, - 0.116190264, - 0.126111907, - 0.126969363, - 0.12056375, - 0.120761434, - 0.122067771, - 0.130359562, - 0.128372694, - 0.123860983, - 0.121794642, - 0.126248524, - 0.120535125, - 0.126531058, - 0.130068954, - 0.11847431, - 0.128594568, - 0.122891794, - 0.12738214, - 0.120833265, - 0.121898448, - 0.127075573, - 0.126263808, - 0.124968507, - 0.123397542, - 0.124143292, - 0.127479703, - 0.120592492, - 0.119875056, - 0.128460716, - 0.123958736, - 0.127568277, - 0.127781663, - 0.128133478, - 0.123716792, - 0.118598284, - 0.121407372, - 0.130970191, - 0.120786601, - 0.123322656, - 0.124764632, - 0.124661859, - 0.124612326, - 0.12548674, - 0.129476433, - 0.124168595, - 0.128055817, - 0.118358365, - 0.120641944, - 0.124224126, - 0.126290823, - 0.125278809, - 0.125901407, - 0.12685111, - 0.1253736, - 0.122164583, - 0.128690753, - 0.127187753, - 0.125706458, - 0.127445161, - 0.127187643, - 0.125775951, - 0.122038696, - 0.128658776, - 0.12637352, - 0.122914699, - 0.128283749, - 0.130492569, - 0.122256899, - 0.119737936, - 0.128993444, - 0.121581071, - 0.120487116, - 0.127292314, - 0.122585767, - 0.126272892, - 0.124786883, - 0.128370112, - 0.124320778, - 0.127123773, - 0.118116483, - 0.12030875, - 0.124343081, - 0.121268323, - 0.125640672, - 0.117906432, - 0.121493772, - 0.128157537, - 0.125868086, - 0.125282702, - 0.122109776, - 0.128047162, - 0.127368283, - 0.119750144, - 0.124888294, - 0.123702031, - 0.120321041, - 0.125878322, - 0.125966197, - 0.122599236, - 0.122242553, - 0.126575059, - 0.120624012, - 0.121512001, - 0.123488425, - 0.123344484, - 0.128709612, - 0.123603417, - 0.120225376, - 0.128993678, - 0.123421664, - 0.122817232, - 0.128531938, - 0.120735704, - 0.125373799, - 0.130442401, - 0.127212341, - 0.125431325, - 0.128614419, - 0.119823355, - 0.126060956, - 0.124071242, - 0.126025494, - 0.123664993, - 0.125874931, - 0.125410462, - 0.125341629, - 0.123561612, - 0.121348819, - 0.126519083, - 0.129641126, - 0.128369736, - 0.1270326, - 0.122643411, - 0.130335636, - 0.122884658, - 0.118272182, - 0.123533369, - 0.12609263, - 0.121682292, - 0.120629068, - 0.120569267, - 0.123580159, - 0.120203402, - 0.126185112, - 0.121444203, - 0.121475969, - 0.123075684, - 0.123682459, - 0.124589355, - 0.128951833, - 0.125675886, - 0.126936425, - 0.124901865, - 0.123974106, - 0.126529423, - 0.121974594, - 0.125566367, - 0.126057913, - 0.124137342, - 0.12229817, - 0.127670474, - 0.127469237, - 0.123217858, - 0.12568672, - 0.122654888, - 0.125534722, - 0.118792222, - 0.125462763, - 0.124721141, - 0.121508708, - 0.128311548, - 0.126842334, - 0.118496367, - 0.125859987, - 0.126248144, - 0.123137315, - 0.125300683, - 0.122439069, - 0.129392165, - 0.125849052, - 0.129845989, - 0.126703274, - 0.125190979, - 0.128519545, - 0.123092, - 0.120687211, - 0.129171557, - 0.124294436, - 0.124526468, - 0.125755208, - 0.127177957, - 0.128544891, - 0.127168738, - 0.124006849, - 0.124145643, - 0.129372241, - 0.129012454, - 0.121438754, - 0.117831685, - 0.128551696, - 0.121506502, - 0.124678482, - 0.121477997, - 0.128700692, - 0.127253363, - 0.126539606, - 0.124882526, - 0.123918902, - 0.125211135, - 0.123568144, - 0.125355109, - 0.125977871, - 0.118225544, - 0.121642704, - 0.122584262, - 0.123157348, - 0.126483, - 0.120502923, - 0.126009827, - 0.118471407, - 0.129787112, - 0.125589278, - 0.129246447, - 0.122869423, - 0.120594325, - 0.123595625, - 0.122205773, - 0.130757361, - 0.123851417, - 0.122219278, - 0.126843391, - 0.119860535, - 0.121696554, - 0.126991602, - 0.126339997, - 0.127107798, - 0.126972719, - 0.125628058, - 0.125498955, - 0.123518539, - 0.125159876, - 0.121288675, - 0.128436277, - 0.123129448, - 0.127470069, - 0.12199195, - 0.122569466, - 0.121546961, - 0.12134348, - 0.12730293, - 0.123346913, - 0.128866412, - 0.116174637, - 0.124433903, - 0.121879944, - 0.119400009, - 0.128309335, - 0.125196594, - 0.117576639, - 0.125583058, - 0.119800431, - 0.125989089, - 0.211182392, - 0.122819653, - 0.125077049, - 0.128852321, - 0.127613961, - 0.121645157, - 0.120610156, - 0.126771718, - 0.128935345, - 0.12568224, - 0.124357445, - 0.124615656, - 0.126930331, - 0.124564043, - 0.12894806, - 0.125746363, - 0.123498516, - 0.128347137, - 0.125479797, - 0.126636429, - 0.125649323, - 0.121443494, - 0.123076507, - 0.126102919, - 0.12722818, - 0.121323595, - 0.122664504, - 0.124913911, - 0.125400792, - 0.12503465, - 0.123785995, - 0.127949277, - 0.123598342, - 0.128898625, - 0.126318133, - 0.130042324, - 0.118617025, - 0.122698428, - 0.12556356, - 0.121356561, - 0.127255794, - 0.122617624, - 0.126295653, - 0.121575749, - 0.128225376, - 0.12437902, - 0.126231308, - 0.125773485, - 0.12599691, - 0.124428501, - 0.127311434, - 0.121722436, - 0.129828073, - 0.124635345, - 0.122017604, - 0.127119545, - 0.124568167, - 0.123392982, - 0.126373696, - 0.120544656, - 0.124298853, - 0.129051395, - 0.119645725, - 0.121438671, - 0.125417224, - 0.125964596, - 0.121632923, - 0.116135448, - 0.126396976, - 0.125964214, - 0.128518227, - 0.125687181, - 0.121694281, - 0.125358352, - 0.117691343, - 0.120351113, - 0.121537077, - 0.122042303, - 0.127463024, - 0.12466857, - 0.125382543, - 0.123746638, - 0.116298812, - 0.121423264, - 0.120475443, - 0.121752377, - 0.125658695, - 0.120409831, - 0.124832495, - 0.121688548, - 0.123499222, - 0.129204216, - 0.117874985, - 0.128353729, - 0.121448481, - 0.125081013, - 0.117831902, - 0.119783717, - 0.123543022, - 0.122971699, - 0.130128204, - 0.124027431, - 0.121741278, - 0.119385131, - 0.128621844, - 0.125887877, - 0.128105237, - 0.126129841, - 0.122885491, - 0.124339695, - 0.129073732, - 0.119722181 + 0.121668012, + 0.123000392, + 0.127693453, + 0.123231776, + 0.123124538, + 0.125658405, + 0.120361009, + 0.126443177, + 0.128725699, + 0.121334477, + 0.12831772, + 0.117532734, + 0.118266945, + 0.130229082, + 0.126765808, + 0.125253034, + 0.123286472, + 0.126963299, + 0.124444743, + 0.126882678, + 0.126614962, + 0.127512811, + 0.122462116, + 0.121208318, + 0.124182478, + 0.12505566, + 0.121931139, + 0.122974075, + 0.125640081, + 0.126845649, + 0.12271998, + 0.128926577, + 0.120380985, + 0.125778955, + 0.123167886, + 0.121142183, + 0.122787015, + 0.116969866, + 0.12120843, + 0.117270687, + 0.126814855, + 0.121397685, + 0.127229493, + 0.122751628, + 0.123687011, + 0.120407503, + 0.120348949, + 0.126937061, + 0.127140672, + 0.121615844, + 0.126490974, + 0.118205311, + 0.124128839, + 0.128267264, + 0.122984583, + 0.120176646, + 0.127905556, + 0.124160334, + 0.119235456, + 0.126607342, + 0.118668612, + 0.122134476, + 0.127110837, + 0.120589302, + 0.128735324, + 0.127164689, + 0.118998502, + 0.124764522, + 0.116193189, + 0.128063609, + 0.128245819, + 0.126933977, + 0.120283207, + 0.118072403, + 0.125990765, + 0.119276354, + 0.124195797, + 0.123102047, + 0.122362328, + 0.121438051, + 0.128272019, + 0.120334685, + 0.123455526, + 0.124274642, + 0.129863493, + 0.121329692, + 0.126005196, + 0.125203923, + 0.124486318, + 0.126084956, + 0.122785597, + 0.123777539, + 0.127155058, + 0.124022086, + 0.125246687, + 0.121254402, + 0.126043768, + 0.121255262, + 0.128978981, + 0.122426607 + ], + "implementation": "rust-libp2p", + "version": "v0.52", + "transportStack": "tcp" + }, + { + "result": [ + 0.126883463, + 0.12538224, + 0.123134364, + 0.12737136, + 0.121799092, + 0.124956805, + 0.126123851, + 0.117873119, + 0.125493333, + 0.121649485, + 0.126709666, + 0.11942479, + 0.124546341, + 0.118529438, + 0.116460941, + 0.12572109, + 0.123938435, + 0.125756721, + 0.128857506, + 0.126463729, + 0.122223522, + 0.12583961, + 0.120286306, + 0.128311277, + 0.125954085, + 0.121983192, + 0.124060722, + 0.122538973, + 0.126785897, + 0.120957402, + 0.123502961, + 0.123830362, + 0.124850685, + 0.126366687, + 0.120130544, + 0.118665904, + 0.125876896, + 0.128981173, + 0.120752317, + 0.124941562, + 0.123956285, + 0.124938191, + 0.124663306, + 0.124846437, + 0.126677991, + 0.124822669, + 0.127923591, + 0.124036037, + 0.123910824, + 0.126894403, + 0.123577666, + 0.120992105, + 0.123911974, + 0.124894422, + 0.122978923, + 0.121060815, + 0.122954924, + 0.127416864, + 0.119421557, + 0.125364864, + 0.120559324, + 0.124617211, + 0.124722713, + 0.119713567, + 0.127457278, + 0.125679225, + 0.11973738, + 0.127460038, + 0.125684705, + 0.122846931, + 0.127471934, + 0.123463713, + 0.120471438, + 0.125448357, + 0.121660507, + 0.127548786, + 0.125639927, + 0.120749636, + 0.126304243, + 0.125666811, + 0.121775029, + 0.123253337, + 0.122788874, + 0.125393396, + 0.124702624, + 0.126657172, + 0.122066806, + 0.126401868, + 0.122805884, + 0.12097563, + 0.126559744, + 0.12702369, + 0.12677153, + 0.12554372, + 0.118692872, + 0.121635023, + 0.117703287, + 0.126238107, + 0.118291747, + 0.121902887 + ], + "implementation": "rust-libp2p", + "version": "v0.52", + "transportStack": "quic-v1" + }, + { + "result": [ + 0.124315652, + 0.121658459, + 0.121978059, + 0.125725367, + 0.123770634, + 0.126169429, + 0.125424312, + 0.126852017, + 0.12691487, + 0.123335063, + 0.128619882, + 0.129003958, + 0.128305455, + 0.123803246, + 0.127337054, + 0.119584031, + 0.123829083, + 0.121247496, + 0.123342974, + 0.125432113, + 0.12390778, + 0.123019476, + 0.128228822, + 0.122530866, + 0.121467182, + 0.120360188, + 0.126406114, + 0.123919693, + 0.12061101, + 0.127078076, + 0.12518106, + 0.11663799, + 0.119261925, + 0.126347965, + 0.124364942, + 0.125407826, + 0.126926461, + 0.127437222, + 0.123449448, + 0.12515775, + 0.124936097, + 0.125199553, + 0.123439156, + 0.127136409, + 0.124054663, + 0.125724079, + 0.126195438, + 0.126478938, + 0.125315968, + 0.128619611, + 0.11759313, + 0.123536449, + 0.120022765, + 0.125455602, + 0.119138372, + 0.123676893, + 0.127000281, + 0.121461803, + 0.126330562, + 0.121516877, + 0.122947556, + 0.127346599, + 0.125578892, + 0.128326931, + 0.123508164, + 0.123872963, + 0.127233331, + 0.122260664, + 0.125195453, + 0.12817221, + 0.126158351, + 0.118174291, + 0.123701352, + 0.12451043, + 0.120254365, + 0.121505816, + 0.116487015, + 0.126388, + 0.128826347, + 0.118316885, + 0.123724796, + 0.12340504, + 0.123107616, + 0.12592937, + 0.126964881, + 0.12131946, + 0.126608409, + 0.124057196, + 0.127262084, + 0.121555089, + 0.128254834, + 0.122932987, + 0.119506728, + 0.124428119, + 0.128196456, + 0.125987807, + 0.1212543, + 0.127470287, + 0.122801434, + 0.122770552 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52-quinn", "transportStack": "tcp" }, { "result": [ - 0.126427283, - 0.126639491, - 0.1284042, - 0.121062064, - 0.121080054, - 0.120722333, - 0.126809679, - 0.124606006, - 0.126953052, - 0.127275054, - 0.126893788, - 0.120690643, - 0.124782345, - 0.12376636, - 0.124409218, - 0.121934569, - 0.126059402, - 0.123041083, - 0.126883935, - 0.120976244, - 0.124318065, - 0.127972634, - 0.12591272, - 0.12208319, - 0.123096152, - 0.130254472, - 0.123266405, - 0.125967042, - 0.126196169, - 0.126246183, - 0.129036002, - 0.1294959, - 0.122148963, - 0.128364317, - 0.121812, - 0.126804534, - 0.126782317, - 0.12226457, - 0.129046882, - 0.128836326, - 0.12270442, - 0.125740978, - 0.127389762, - 0.124516025, - 0.127776194, - 0.122216276, - 0.128772514, - 0.120797881, - 0.121131089, - 0.126087016, - 0.127638627, - 0.123411002, - 0.125202036, - 0.123656934, - 0.126014066, - 0.127351519, - 0.124810139, - 0.129566987, - 0.121584296, - 0.129101253, - 0.123543319, - 0.128711177, - 0.126593587, - 0.123120692, - 0.124879345, - 0.119605972, - 0.121034833, - 0.123575685, - 0.121287195, - 0.124198099, - 0.128658572, - 0.126166582, - 0.127467894, - 0.11684427, - 0.129945233, - 0.122897049, - 0.123373884, - 0.125581591, - 0.129057346, - 0.127854919, - 0.121963566, - 0.121799308, - 0.128902446, - 0.120142592, - 0.129090871, - 0.127704303, - 0.119914726, - 0.121967206, - 0.123984104, - 0.12654447, - 0.120464366, - 0.122400346, - 0.121797529, - 0.121776581, - 0.121978104, - 0.120988268, - 0.123818315, - 0.123815139, - 0.125776187, - 0.120749136, - 0.121794162, - 0.129243146, - 0.124830459, - 0.120737602, - 0.125334177, - 0.121855616, - 0.125485499, - 0.129314633, - 0.129292819, - 0.12479226, - 0.130217829, - 0.118973538, - 0.126172337, - 0.130490425, - 0.123954726, - 0.123299593, - 0.120981597, - 0.126968383, - 0.124436593, - 0.121204074, - 0.118131875, - 0.12876057, - 0.12609008, - 0.127601178, - 0.128949856, - 0.120233554, - 0.118891816, - 0.127729327, - 0.122162188, - 0.129370424, - 0.12799954, - 0.122461444, - 0.128720642, - 0.129066555, - 0.125494192, - 0.125643125, - 0.129021828, - 0.11904766, - 0.125912714, - 0.129241953, - 0.122787071, - 0.118109302, - 0.128362654, - 0.130929991, - 0.125649078, - 0.126869263, - 0.12753982, - 0.123188621, - 0.121000586, - 0.127568723, - 0.127981197, - 0.121993256, - 0.127633151, - 0.12651283, - 0.13079801, - 0.123160974, - 0.120030324, - 0.125860749, - 0.122644047, - 0.126100882, - 0.126622699, - 0.125960571, - 0.126811853, - 0.12588583, - 0.128769141, - 0.123027679, - 0.123050587, - 0.123750419, - 0.127118019, - 0.126084586, - 0.125848955, - 0.128205903, - 0.118899399, - 0.126568957, - 0.126385305, - 0.126237855, - 0.122971394, - 0.120980754, - 0.127630994, - 0.12842184, - 0.124549226, - 0.123023915, - 0.123916887, - 0.121952272, - 0.121612533, - 0.124899404, - 0.126746972, - 0.125913628, - 0.125950887, - 0.122967389, - 0.13045976, - 0.125228474, - 0.125963499, - 0.12665382, - 0.122203732, - 0.125914893, - 0.126731003, - 0.120349677, - 0.127807451, - 0.121739668, - 0.126101408, - 0.128315264, - 0.128296433, - 0.121834037, - 0.127889821, - 0.12758563, - 0.116516551, - 0.123825766, - 0.128840586, - 0.127956487, - 0.124025297, - 0.125903363, - 0.120119418, - 0.123430069, - 0.122029366, - 0.124776865, - 0.12951056, - 0.128364219, - 0.128117324, - 0.122731197, - 0.12598211, - 0.122039921, - 0.124322882, - 0.12397259, - 0.123740571, - 0.118959391, - 0.128392645, - 0.129920515, - 0.127867895, - 0.129655329, - 0.126395992, - 0.12730455, - 0.125850316, - 0.122765556, - 0.124162491, - 0.122004763, - 0.123462174, - 0.120232418, - 0.123502218, - 0.1280879, - 0.127386559, - 0.125708982, - 0.125003644, - 0.123614868, - 0.127631965, - 0.123459165, - 0.127905555, - 0.120990462, - 0.12689305, - 0.12887982, - 0.126603081, - 0.124314372, - 0.129056441, - 0.126660409, - 0.123658361, - 0.124732278, - 0.120634189, - 0.12578913, - 0.12563144, - 0.127827399, - 0.125813367, - 0.127208793, - 0.122926934, - 0.12269252, - 0.122848874, - 0.123240353, - 0.129269732, - 0.127295552, - 0.118997598, - 0.126478144, - 0.119008909, - 0.125778247, - 0.127631332, - 0.126520194, - 0.124302078, - 0.122927138, - 0.126727821, - 0.120223955, - 0.121789164, - 0.123749191, - 0.125078203, - 0.126325643, - 0.127934501, - 0.124142522, - 0.12297735, - 0.122909708, - 0.128806475, - 0.121096937, - 0.12227398, - 0.121466062, - 0.127494629, - 0.126683584, - 0.118053669, - 0.121573317, - 0.120148358, - 0.12476187, - 0.130110632, - 0.124791665, - 0.128123398, - 0.126722583, - 0.129070747, - 0.122606586, - 0.12150397, - 0.125400543, - 0.125304648, - 0.121861615, - 0.125722989, - 0.126227635, - 0.122192517, - 0.121024053, - 0.118915716, - 0.119513252, - 0.127977142, - 0.124257395, - 0.124010128, - 0.124605773, - 0.128983739, - 0.127658863, - 0.124209718, - 0.127485735, - 0.12318995, - 0.118923128, - 0.127333067, - 0.12880284, - 0.128484158, - 0.125732466, - 0.12693404, - 0.126523341, - 0.127077419, - 0.127129362, - 0.12859089, - 0.120723918, - 0.12483247, - 0.12562043, - 0.124220527, - 0.124161906, - 0.123745394, - 0.129156112, - 0.124593748, - 0.125420321, - 0.128483341, - 0.123760652, - 0.123837664, - 0.123690879, - 0.127784214, - 0.129935821, - 0.124160996, - 0.12899945, - 0.119847319, - 0.123585174, - 0.12767847, - 0.1210094, - 0.127562886, - 0.127701149, - 0.122839323, - 0.124494497, - 0.123998306, - 0.124505204, - 0.126860443, - 0.119902082, - 0.128031331, - 0.125729639, - 0.126454775, - 0.12306565, - 0.121804665, - 0.120606683, - 0.125591412, - 0.123543147, - 0.120438921, - 0.12191651, - 0.125509302, - 0.127847459, - 0.124794839, - 0.124727059, - 0.117727133, - 0.128594553, - 0.123375765, - 0.124079651, - 0.128191525, - 0.124689144, - 0.130177201, - 0.126694518, - 0.119963213, - 0.124367579, - 0.124731213, - 0.122277994, - 0.125514722, - 0.125818035, - 0.128888341, - 0.125018017, - 0.122221059, - 0.123417187, - 0.122303741, - 0.123923499, - 0.128311929, - 0.128470498, - 0.124562808, - 0.126221506, - 0.119854214, - 0.130974279, - 0.127780019, - 0.121067062, - 0.129816984, - 0.121850612, - 0.128945117, - 0.123391309, - 0.128097336, - 0.123887499, - 0.122845915, - 0.123752022, - 0.123820681, - 0.31320782, - 0.119870921, - 0.123584415, - 0.125990253, - 0.126598661, - 0.122657799, - 0.124682095, - 0.126030408, - 0.126319706, - 0.119671318, - 0.125215629, - 0.123835856, - 0.128475166, - 0.123639003, - 0.124266449, - 0.126129043, - 0.119878938, - 0.129403882, - 0.123975727, - 0.118961299, - 0.128422659, - 0.124198546, - 0.126092262, - 0.121990043, - 0.11827628, - 0.124725166, - 0.124555197, - 0.120740672, - 0.12911852, - 0.125587268, - 0.123974493, - 0.130128358, - 0.126869532, - 0.13059831, - 0.128789777, - 0.123107774, - 0.122776071, - 0.122191144, - 0.120113761, - 0.12190685, - 0.128695148, - 0.122256487, - 0.125990874, - 0.124671699, - 0.122131789, - 0.128936197, - 0.130509278, - 0.121940426, - 0.128350302, - 0.122995697, - 0.126266445, - 0.125267288, - 0.124347105, - 0.121382013, - 0.124742654, - 0.123079194, - 0.126476014, - 0.128183936, - 0.122139721, - 0.125446585, - 0.12656421, - 0.123300722, - 0.125824049, - 0.124968666, - 0.122285354, - 0.123584461, - 0.125175016, - 0.127003473, - 0.116672027, - 0.122966117, - 0.126231634, - 0.127480773, - 0.128763706, - 0.123457583, - 0.125783149, - 0.127386743, - 0.128021669, - 0.122011874, - 0.120010024, - 0.123998151, - 0.124096757, - 0.12475286, - 0.127872062, - 0.117668961, - 0.128280813, - 0.123889684, - 0.12404086, - 0.119174282, - 0.129306702, - 0.120849001, - 0.125518529, - 0.129379481, - 0.126726251, - 0.122885339, - 0.128595479, - 0.123527532, - 0.125233929, - 0.122436365, - 0.129651528, - 0.125806195, - 0.130548333, - 0.122519164, - 0.128953847, - 0.125924258, - 0.122918602, - 0.124190591, - 0.1229526, - 0.125566343, - 0.126663887, - 0.123039252, - 0.124050089, - 0.127427832, - 0.128723744, - 0.127912692, - 0.124838789, - 0.127732046, - 0.126166975, - 0.129564449, - 0.124984996, - 0.126807169, - 0.124789188, - 0.119001941, - 0.121765167, - 0.124015649, - 0.130294115, - 0.129024799, - 0.122589255, - 0.12269728, - 0.119768963, - 0.129488012, - 0.121334832, - 0.124866031, - 0.128742521, - 0.128826759, - 0.124392516, - 0.128229636, - 0.12649408, - 0.127022941, - 0.125122404, - 0.116553469, - 0.128772565, - 0.12287117, - 0.129035139, - 0.120110226, - 0.123495238, - 0.123362388, - 0.123438511, - 0.12286, - 0.127908688, - 0.127784878, - 0.123993166, - 0.125832607, - 0.125591907, - 0.124625248, - 0.126265688, - 0.122326559, - 0.127637968, - 0.125898537, - 0.127701732, - 0.127172898, - 0.124178155, - 0.128922437, - 0.127042068, - 0.121811385, - 0.122055317, - 0.120129988, - 0.127855383, - 0.118504362, - 0.121727382, - 0.124925925, - 0.128984629, - 0.123815905, - 0.123793691, - 0.123251501, - 0.127476628, - 0.125360982, - 0.126200257, - 0.123815094, - 0.122303261, - 0.125500847, - 0.129266485, - 0.124375451, - 0.123156509, - 0.130680347, - 0.120764752, - 0.127301397, - 0.126045906, - 0.128679243, - 0.122231822, - 0.126955251, - 0.126388957, - 0.119040876, - 0.120233052, - 0.127436827, - 0.121164272, - 0.127591878, - 0.125771195, - 0.121340572, - 0.12767778, - 0.126596435, - 0.124841065, - 0.125162219, - 0.118668548, - 0.121613435, - 0.128818248, - 0.124057939, - 0.12758781, - 0.118188963, - 0.124972803, - 0.122699959, - 0.122277977, - 0.130703821, - 0.129262199, - 0.126661469, - 0.127302428, - 0.121965419, - 0.129314988, - 0.119957092, - 0.12488089, - 0.125887369, - 0.126011348, - 0.128472118, - 0.12617858, - 0.130631286, - 0.121835237, - 0.128671149, - 0.129975865, - 0.124998416, - 0.127628517, - 0.124731603, - 0.121047393, - 0.127329396, - 0.120076513, - 0.124936014, - 0.128646689, - 0.118817745, - 0.125727006, - 0.124887645, - 0.125873158, - 0.125900921, - 0.122242681, - 0.125615208, - 0.127282005, - 0.127288306, - 0.123798252, - 0.128461662, - 0.123981956, - 0.126021135, - 0.128707726, - 0.121904132, - 0.12834162, - 0.123690254, - 0.128415082, - 0.125994995, - 0.126748947, - 0.122520944, - 0.125752256, - 0.128682327, - 0.129837805, - 0.126726789, - 0.125811779, - 0.122096178, - 0.123088403, - 0.126605564, - 0.124370852, - 0.119155627, - 0.122790975, - 0.124578493, - 0.127397242, - 0.126912294, - 0.125937167, - 0.118638748, - 0.127238218, - 0.121309422, - 0.123278012, - 0.129621206, - 0.122432997, - 0.125877527, - 0.119249902, - 0.124339922, - 0.125499141, - 0.124036913, - 0.125261496, - 0.122931167, - 0.129388668, - 0.12961722, - 0.127650893, - 0.11991279, - 0.121981024, - 0.127753584, - 0.128979344, - 0.128104252, - 0.129342231, - 0.130999719, - 0.123206705, - 0.122906183, - 0.126827476, - 0.127825589, - 0.128353806, - 0.121248911, - 0.12939161, - 0.123191907, - 0.127276728, - 0.120771834, - 0.125304107, - 0.124657158, - 0.123941147, - 0.130288201, - 0.12669272, - 0.12692159, - 0.122329338, - 0.122725352, - 0.127673088, - 0.123095819, - 0.126261196, - 0.118813819, - 0.125932855, - 0.128606275, - 0.123799329, - 0.12786575, - 0.127717275, - 0.120013408, - 0.119894849, - 0.125674733, - 0.12382155, - 0.123051761, - 0.119628689, - 0.126077826, - 0.127276641, - 0.12508391, - 0.124822157, - 0.11920296, - 0.120244837, - 0.126633934, - 0.118846889, - 0.124259033, - 0.1238431, - 0.122316475, - 0.123218672, - 0.121962244, - 0.126641684, - 0.126880238, - 0.123209573, - 0.125130457, - 0.126843295, - 0.123714723, - 0.122567297, - 0.123313705, - 0.121216623, - 0.12758153, - 0.126033298, - 0.130408734, - 0.117993348, - 0.127527957, - 0.121763983, - 0.121512494, - 0.12900524, - 0.124626721, - 0.123090838, - 0.128398871, - 0.127067598, - 0.126320993, - 0.121688371, - 0.127043609, - 0.123056966, - 0.127852424, - 0.122256198, - 0.125777639, - 0.125635891, - 0.128641317, - 0.125214641, - 0.127850402, - 0.121944183, - 0.127619407, - 0.12812443, - 0.123991653, - 0.126945584, - 0.122479043, - 0.129669549, - 0.127576916, - 0.124613726, - 0.128896069, - 0.125136712, - 0.12078652, - 0.123700815, - 0.124406577, - 0.127655523, - 0.125911767, - 0.123543399, - 0.127101622, - 0.12784041, - 0.120995831, - 0.123165347, - 0.124943642, - 0.128710413, - 0.125860166, - 0.125219722, - 0.125206463, - 0.126932707, - 0.128372758, - 0.121742246, - 0.125698642, - 0.123018958, - 0.120908664, - 0.124434972, - 0.126604267, - 0.122796422, - 0.125592425, - 0.128303023, - 0.127865531, - 0.128112462, - 0.127381817, - 0.121945019, - 0.121890609, - 0.124247875, - 0.127738335, - 0.125973491, - 0.128064681, - 0.123183342, - 0.122898941, - 0.12899048, - 0.121037142, - 0.127140282, - 0.12686606, - 0.127458747, - 0.121794649, - 0.123078358, - 0.124802397, - 0.123447701, - 0.12932276, - 0.128880596, - 0.119129043, - 0.123150829, - 0.129651306, - 0.12087089, - 0.12471444, - 0.127361851, - 0.125006316, - 0.122136898, - 0.123403867, - 0.119163968, - 0.121971591, - 0.129749389, - 0.118987045, - 0.120284383, - 0.126216887, - 0.120929656, - 0.125043539, - 0.123506821, - 0.122983832, - 0.1205175, - 0.127548939, - 0.12522921, - 0.124035011, - 0.123091133, - 0.121147925, - 0.127663767, - 0.120374664, - 0.121116575, - 0.122267551, - 0.122153601, - 0.127951648, - 0.128164386, - 0.125253761, - 0.125415463, - 0.122598375, - 0.128432407, - 0.130582995, - 0.126899994, - 0.128414916, - 0.126373219, - 0.123981373, - 0.121873773, - 0.125840815, - 0.127195931, - 0.124135579, - 0.12568795, - 0.122198042, - 0.12194487, - 0.122087149, - 0.122982318, - 0.126052944, - 0.129191123, - 0.126439947, - 0.127826122, - 0.125470619, - 0.122717387, - 0.12957499, - 0.127274043, - 0.125876938, - 0.123042243, - 0.120981838, - 0.12604874, - 0.127898366, - 0.12896276, - 0.124053732, - 0.128543288, - 0.12108993, - 0.122350274, - 0.125852482, - 0.126652965, - 0.12197611, - 0.130576281, - 0.125948148, - 0.122234684, - 0.123819033, - 0.123549218, - 0.128365284, - 0.122677271, - 0.127414228, - 0.118850222, - 0.128743901, - 0.126847512, - 0.124162821, - 0.127409985, - 0.120921997, - 0.123259261, - 0.121831856, - 0.120166595, - 0.119632058, - 0.128098606, - 0.1221301, - 0.121654507, - 0.123503589, - 0.126706424, - 0.12272931, - 0.124762938, - 0.124088626, - 0.123793816, - 0.121801364, - 0.128210767, - 0.129317054, - 0.118865815, - 0.123737665, - 0.1179243, - 0.12771188, - 0.120319165, - 0.123366628, - 0.123775061, - 0.124520594, - 0.124483217, - 0.122116665, - 0.126980952, - 0.123669908, - 0.127882985, - 0.125743355, - 0.122055457, - 0.124944892, - 0.125305796, - 0.127280434, - 0.125725284, - 0.128842909, - 0.121854083, - 0.127640051, - 0.127804997, - 0.120943191, - 0.123656357, - 0.130592065, - 0.129389828, - 0.126093037, - 0.12372843, - 0.127388089, - 0.12984663, - 0.119854353, - 0.122749966, - 0.125213089, - 0.123081339, - 0.127889623, - 0.126836248, - 0.127430383, - 0.125572346, - 0.123425591, - 0.122586176, - 0.127782336, - 0.123759487, - 0.128617837, - 0.128974091, - 0.123510528, - 0.126112586, - 0.123956158, - 0.12643124, - 0.127204469, - 0.128717102, - 0.128777956, - 0.126728499, - 0.127182335, - 0.119682346, - 0.122890542, - 0.122180322 + 0.118557407, + 0.129367487, + 0.119667651, + 0.123787099, + 0.124614605, + 0.126707798, + 0.125840916, + 0.120444265, + 0.12205183, + 0.124644079, + 0.130191262, + 0.123519664, + 0.120409353, + 0.119216634, + 0.13010538, + 0.129412402, + 0.125457409, + 0.121830064, + 0.116368955, + 0.126860624, + 0.122762401, + 0.124907365, + 0.125346021, + 0.122297674, + 0.123740161, + 0.128776767, + 0.123239408, + 0.126187867, + 0.122735079, + 0.124247599, + 0.127077167, + 0.121880016, + 0.120792907, + 0.12624767, + 0.12706203, + 0.120769749, + 0.123950089, + 0.126547698, + 0.122498339, + 0.13030589, + 0.127540126, + 0.127620897, + 0.121705058, + 0.116058129, + 0.11973295, + 0.123976842, + 0.121005913, + 0.119776725, + 0.124884126, + 0.129121972, + 0.123586335, + 0.120923489, + 0.123787504, + 0.118007633, + 0.119975299, + 0.122552093, + 0.122987026, + 0.122106037, + 0.124946365, + 0.128078508, + 0.126071297, + 0.124684977, + 0.12712083, + 0.125258097, + 0.128768189, + 0.119691682, + 0.122145987, + 0.122636323, + 0.13038191, + 0.121972787, + 0.1174422, + 0.11857174, + 0.116670902, + 0.128806601, + 0.124499407, + 0.125594701, + 0.125389813, + 0.126210369, + 0.118511957, + 0.127048302, + 0.128654269, + 0.122661261, + 0.121244321, + 0.125613825, + 0.130503486, + 0.123771742, + 0.12196481, + 0.119953257, + 0.124347784, + 0.127777435, + 0.127985077, + 0.129983758, + 0.125692298, + 0.119680827, + 0.12266069, + 0.129236188, + 0.125723596, + 0.126052517, + 0.127762187, + 0.129383432 ], "implementation": "rust-libp2p", - "version": "v0.51", + "version": "v0.52-quinn", "transportStack": "quic-v1" }, { "result": [ - 0.18524794, - 0.19591586, - 0.18794625, - 0.19430587, - 0.18854661, - 0.18042985, - 0.18792032, - 0.18520518, - 0.18903744, - 0.19118784, - 0.1904892, - 0.1907086, - 0.19375764, - 0.18987583, - 0.19201988, - 0.18464862, - 0.18792336, - 0.1852576, - 0.19047278, - 0.19335862, - 0.19190504, - 0.1920972, - 0.18961377, - 0.18865576, - 0.18338314, - 0.1814949, - 0.1868589, - 0.18584011, - 0.18568592, - 0.18345672, - 0.18673599, - 0.18805434, - 0.19341005, - 0.1894355, - 0.18732508, - 0.18142572, - 0.1950999, - 0.18738842, - 0.18656, - 0.18677732, - 0.1852896, - 0.19015548, - 0.18813369, - 0.1875003, - 0.1872505, - 0.1915355, - 0.18359421, - 0.19224681, - 0.19550455, - 0.1898403, - 0.18919228, - 0.18454397, - 0.18179876, - 0.18743584, - 0.19353746, - 0.18035059, - 0.18898939, - 0.19032146, - 0.19219083, - 0.19319399, - 0.18642883, - 0.19179262, - 0.1898807, - 0.18595271, - 0.1771849, - 0.19010052, - 0.19548638, - 0.18873699, - 0.18843974, - 0.18929069, - 0.18538259, - 0.19199778, - 0.18723476, - 0.18270639, - 0.1924653, - 0.19105528, - 0.18446097, - 0.1941712, - 0.19275537, - 0.18205252, - 0.18880984, - 0.18162598, - 0.18720096, - 0.18469231, - 0.19209906, - 0.18387002, - 0.18158957, - 0.18732606, - 0.18867417, - 0.19059275, - 0.18799573, - 0.18171892, - 0.19094992, - 0.17508917, - 0.18934695, - 0.19404241, - 0.18604176, - 0.19051708, - 0.17681356, - 0.19186726, - 0.193644, - 0.18876322, - 0.19445023, - 0.19391657, - 0.1923686, - 0.18509148, - 0.19180611, - 0.18317753, - 0.18923691, - 0.18348204, - 0.18443108, - 0.18465899, - 0.19423671, - 0.18829283, - 0.19155431, - 0.18782051, - 0.1904013, - 0.1803181, - 0.18520196, - 0.18516903, - 0.19338836, - 0.19188984, - 0.17700537, - 0.19144236, - 0.18716136, - 0.18656388, - 0.19015707, - 0.18361528, - 0.19082782, - 0.1800265, - 0.19511913, - 0.18467073, - 0.18545921, - 0.19101618, - 0.19066224, - 0.19137996, - 0.18701626, - 0.17869624, - 0.19145525, - 0.19452327, - 0.18502325, - 0.18511638, - 0.18884985, - 0.1862163, - 0.19592598, - 0.18634993, - 0.17895363, - 0.19242224, - 0.19178946, - 0.18049131, - 0.17920804, - 0.18324515, - 0.19579327, - 0.18329345, - 0.19029912, - 0.18928128, - 0.18610837, - 0.18968491, - 0.1829416, - 0.18846734, - 0.18896092, - 0.18879291, - 0.1879794, - 0.1854974, - 0.18452324, - 0.18303902, - 0.19204596, - 0.1895932, - 0.19313788, - 0.17639224, - 0.17703938, - 0.1847542, - 0.17546484, - 0.18713948, - 0.19117013, - 0.18638946, - 0.18162228, - 0.18729688, - 0.17699867, - 0.18693982, - 0.19052646, - 0.18156548, - 0.18709382, - 0.19278015, - 0.1896199, - 0.18952389, - 0.18640058, - 0.19075428, - 0.19322644, - 0.19208236, - 0.19192673, - 0.18374221, - 0.1917465, - 0.19248451, - 0.19243759, - 0.1917859, - 0.18543811, - 0.18505703, - 0.1908011, - 0.18557584, - 0.18018146, - 0.18869944, - 0.19370513, - 0.19017862, - 0.19141689, - 0.18312092, - 0.19299868, - 0.19368888, - 0.18976845, - 0.18727216, - 0.18706843, - 0.18768978, - 0.1833888, - 0.18748814, - 0.18876882, - 0.18915719, - 0.18461412, - 0.18649657, - 0.17689373, - 0.19010153, - 0.19569857, - 0.18293121, - 0.18309419, - 0.18818483, - 0.18902631, - 0.18812412, - 0.18628155, - 0.18650894, - 0.1829142, - 0.18748952, - 0.1804082, - 0.18561281, - 0.18513432, - 0.18402345, - 0.1915269, - 0.18955414, - 0.1772279, - 0.18903598, - 0.18152907, - 0.18848369, - 0.17757688, - 0.18615861, - 0.1935507, - 0.18890674, - 0.18511511, - 0.19113828, - 0.18684058, - 0.1854391, - 0.19129044, - 0.19189744, - 0.18676503, - 0.18026575, - 0.1781368, - 0.1936407, - 0.19122945, - 0.18413998, - 0.18613681, - 0.18325199, - 0.18867755, - 0.18140174, - 0.18767534, - 0.18975246, - 0.18142007, - 0.1834588, - 0.18874815, - 0.1910428, - 0.18121667, - 0.18741111, - 0.19014554, - 0.18512729, - 0.19320841, - 0.188819, - 0.18620905, - 0.18759724, - 0.18503727, - 0.17987268, - 0.18218672, - 0.18483171, - 0.19372337, - 0.19160135, - 0.19407468, - 0.18704776, - 0.18870555, - 0.18681976, - 0.19176313, - 0.1850153, - 0.19045642, - 0.18986188, - 0.19229676, - 0.18889639, - 0.18845104, - 0.1938119, - 0.19328597, - 0.18485154, - 0.1846728, - 0.19324027, - 0.18908314, - 0.19424601, - 0.19135652, - 0.18129922, - 0.18344013, - 0.19006315, - 0.18662606, - 0.18558776, - 0.1920658, - 0.19044772, - 0.17981257, - 0.1929344, - 0.19212542, - 0.19316268, - 0.18213168, - 0.18900198, - 0.17883952, - 0.19055045, - 0.18772106, - 0.18837062, - 0.18485804, - 0.1816302, - 0.18554497, - 0.18169215, - 0.18909901, - 0.18699868, - 0.18630879, - 0.19151002, - 0.18277721, - 0.18154804, - 0.18197079, - 0.1924471, - 0.19137815, - 0.19023483, - 0.18120018, - 0.18717463, - 0.18973036, - 0.18612172, - 0.1933415, - 0.18388808, - 0.1926496, - 0.18669227, - 0.19370985, - 0.18980293, - 0.1818448, - 0.191825, - 0.19179839, - 0.18053931, - 0.18802343, - 0.18753482, - 0.18471532, - 0.18307956, - 0.18840198, - 0.18788482, - 0.19364427, - 0.19532135, - 0.1894343, - 0.19087546, - 0.19106166, - 0.18924148, - 0.17970476, - 0.18528299, - 0.17849615, - 0.19079487, - 0.18791576, - 0.18569219, - 0.18868266, - 0.19195792, - 0.1960681, - 0.19172007, - 0.19232918, - 0.18723945, - 0.19049202, - 0.19443652, - 0.18845406, - 0.1869535, - 0.19019918, - 0.18017761, - 0.18612966, - 0.18490861, - 0.18453631, - 0.18766353, - 0.19128367, - 0.18566437, - 0.19463056, - 0.18422556, - 0.19562812, - 0.18341747, - 0.18361051, - 0.18452011, - 0.1852424, - 0.1884736, - 0.191309, - 0.18567751, - 0.18804386, - 0.18694726, - 0.18783243, - 0.19160694, - 0.19284923, - 0.18996094, - 0.19119658, - 0.18650064, - 0.19081415, - 0.19098322, - 0.18615815, - 0.1876749, - 0.18875204, - 0.18435673, - 0.18991607, - 0.18332464, - 0.18626732, - 0.18806148, - 0.18405925, - 0.19032763, - 0.1796134, - 0.19125262, - 0.1934207, - 0.18837142, - 0.19013134, - 0.18419896, - 0.19153322, - 0.18478127, - 0.18782775, - 0.18470383, - 0.1784864, - 0.19352543, - 0.19159181, - 0.18225853, - 0.18191224, - 0.1780829, - 0.18728504, - 0.19113885, - 0.19069141, - 0.18463032, - 0.17854065, - 0.18462192, - 0.18920869, - 0.18359956, - 0.18052056, - 0.19069646, - 0.19608122, - 0.18474232, - 0.17949478, - 0.19180478, - 0.18347996, - 0.18630701, - 0.18451412, - 0.18426535, - 0.18745072, - 0.19018869, - 0.19284503, - 0.18088777, - 0.18872002, - 0.18147682, - 0.18506354, - 0.18446796, - 0.18425767, - 0.19375171, - 0.19163328, - 0.19096859, - 0.18770754, - 0.18276449, - 0.18884858, - 0.19428355, - 0.1912395, - 0.19365346, - 0.18364209, - 0.18452744, - 0.17526086, - 0.19227587, - 0.19494994, - 0.18482134, - 0.17863503, - 0.18615724, - 0.18223217, - 0.18360369, - 0.18150704, - 0.18638352, - 0.18614048, - 0.19086057, - 0.19260077, - 0.18365768, - 0.1867621, - 0.18591444, - 0.18595347, - 0.18699345, - 0.19013655, - 0.19243863, - 0.17720611, - 0.1847709, - 0.18767647, - 0.1918419, - 0.19317268, - 0.18340749, - 0.19033617, - 0.18988234, - 0.17674725, - 0.18042941, - 0.1853999, - 0.1864383, - 0.19038017, - 0.19341215, - 0.18896578, - 0.18756945, - 0.19396606, - 0.17685246, - 0.18621211, - 0.18899478, - 0.18346664, - 0.18489602, - 0.18596123, - 0.19468644, - 0.18998958, - 0.18466775, - 0.18569121, - 0.18893069, - 0.18735223, - 0.18268748, - 0.18904209, - 0.19176732, - 0.18544976, - 0.18457036, - 0.18594328, - 0.18683904, - 0.18347412, - 0.18196584, - 0.19370376, - 0.19318762, - 0.19214694, - 0.18547086, - 0.18764608, - 0.18787856, - 0.18934245, - 0.18028358, - 0.18880798, - 0.18400767, - 0.19365738, - 0.19417077, - 0.19163826, - 0.1871758, - 0.19313608, - 0.18893112, - 0.19657317, - 0.18128586, - 0.17593937, - 0.18906105, - 0.1935324, - 0.18952669, - 0.18111193, - 0.19017942, - 0.18277681, - 0.19343413, - 0.1872557, - 0.19190304, - 0.19466734, - 0.18614785, - 0.18788727, - 0.18607792, - 0.1867022, - 0.1889459, - 0.18052, - 0.18883474, - 0.1800873, - 0.18911181, - 0.19120799, - 0.1917927, - 0.19357534, - 0.18032679, - 0.18736538, - 0.18581453, - 0.1912708, - 0.18918255, - 0.18970996, - 0.18809263, - 0.18620972, - 0.1908646, - 0.19203587, - 0.19012062, - 0.17687032, - 0.19059464, - 0.1849498, - 0.19057325, - 0.17894469, - 0.1864818, - 0.18983693, - 0.1948062, - 0.19363369, - 0.18786985, - 0.18500079, - 0.18485284, - 0.19187938, - 0.18808393, - 0.18465404, - 0.17723341, - 0.18322611, - 0.19639507, - 0.18483758, - 0.18291178, - 0.18642865, - 0.19183007, - 0.18510501, - 0.19059977, - 0.19005772, - 0.19116472, - 0.18791269, - 0.18633656, - 0.1896293, - 0.18651503, - 0.1949546, - 0.18250239, - 0.18987599, - 0.17833613, - 0.19000189, - 0.18769841, - 0.18325391, - 0.18705507, - 0.18601859, - 0.1847015, - 0.18413983, - 0.18925229, - 0.18645042, - 0.18734767, - 0.18631223, - 0.1773735, - 0.1911044, - 0.17884104, - 0.18753575, - 0.17563751, - 0.18343766, - 0.19169809, - 0.17871672, - 0.19150074, - 0.18967196, - 0.18736611, - 0.1919503, - 0.1848084, - 0.18440166, - 0.18747635, - 0.18949722, - 0.1960136, - 0.19044293, - 0.18854968, - 0.18916698, - 0.1842706, - 0.19627984, - 0.1934773, - 0.18841065, - 0.1820662, - 0.18558323, - 0.187851, - 0.1895967, - 0.18293783, - 0.18673748, - 0.18456462, - 0.18580535, - 0.1903732, - 0.18762349, - 0.18252088, - 0.1774874, - 0.188435, - 0.19018726, - 0.18314803, - 0.18985619, - 0.18445681, - 0.1918975, - 0.18494177, - 0.19153363, - 0.19145931, - 0.19303991, - 0.187884, - 0.19005246, - 0.18713364, - 0.18636099, - 0.17827454, - 0.18503997, - 0.18458563, - 0.17507657, - 0.18553019, - 0.18889783, - 0.19107404, - 0.19433635, - 0.18595009, - 0.1891247, - 0.19354814, - 0.18013677, - 0.18387862, - 0.18928015, - 0.1911583, - 0.19411966, - 0.17965546, - 0.1826555, - 0.18442343, - 0.18400696, - 0.1846489, - 0.18457966, - 0.18482421, - 0.186002, - 0.18880433, - 0.18864326, - 0.18796283, - 0.19276671, - 0.18305169, - 0.18376891, - 0.18453082, - 0.18611465, - 0.18614456, - 0.1862241, - 0.1908965, - 0.18873484, - 0.1940514, - 0.1872482, - 0.19248074, - 0.18927845, - 0.17659658, - 0.18377775, - 0.19198509, - 0.18759729, - 0.18337385, - 0.19082141, - 0.18308872, - 0.1875434, - 0.19367637, - 0.19386756, - 0.19227947, - 0.19340345, - 0.1887513, - 0.18982333, - 0.1860038, - 0.18730503, - 0.1866988, - 0.18173814, - 0.1863281, - 0.19399753, - 0.19049987, - 0.18766856, - 0.18876942, - 0.18720753, - 0.188302, - 0.19355738, - 0.18499444, - 0.19016661, - 0.18458542, - 0.17879796, - 0.18846872, - 0.19091451, - 0.18610035, - 0.18763839, - 0.19129188, - 0.1750825, - 0.19352566, - 0.18610162, - 0.18609174, - 0.18404521, - 0.18979047, - 0.19500081, - 0.1875946, - 0.1869609, - 0.18412253, - 0.19109114, - 0.19232842, - 0.19125354, - 0.18014143, - 0.18060516, - 0.18162686, - 0.18691278, - 0.1844199, - 0.1912215, - 0.18728912, - 0.18832475, - 0.183075, - 0.18708476, - 0.18762273, - 0.18135269, - 0.18880214, - 0.19133823, - 0.17720762, - 0.17996627, - 0.19164169, - 0.18833254, - 0.19102228, - 0.19447245, - 0.18132246, - 0.19372949, - 0.19276187, - 0.19079621, - 0.18625061, - 0.18882757, - 0.19314504, - 0.18237343, - 0.18839873, - 0.19045521, - 0.19312134, - 0.19095148, - 0.19057584, - 0.18735133, - 0.18135402, - 0.18340158, - 0.183522, - 0.17962545, - 0.18389851, - 0.18712981, - 0.18718822, - 0.18614963, - 0.18444254, - 0.1939569, - 0.19320072, - 0.18803735, - 0.17520604, - 0.18348356, - 0.18744968, - 0.19496496, - 0.18637691, - 0.17892247, - 0.18706241, - 0.18969901, - 0.18619393, - 0.191969, - 0.19370082, - 0.19241337, - 0.1781465, - 0.1848462, - 0.1885704, - 0.19183445, - 0.1935026, - 0.18533275, - 0.18172206, - 0.18906221, - 0.18950513, - 0.18326128, - 0.18611991, - 0.18538944, - 0.19186778, - 0.18567774, - 0.19148552, - 0.19196652, - 0.18752776, - 0.19582267, - 0.18985444, - 0.19485874, - 0.18906131, - 0.18347046, - 0.1816845, - 0.1910355, - 0.19383648, - 0.1889277, - 0.18581787, - 0.1801495, - 0.19108605, - 0.192792, - 0.18321748, - 0.19185306, - 0.18041229, - 0.19335009, - 0.18966109, - 0.18572006, - 0.1820242, - 0.19376683, - 0.18522754, - 0.19392629, - 0.18494494, - 0.18268901, - 0.18357557, - 0.18529353, - 0.18622844, - 0.18632713, - 0.18934643, - 0.18644169, - 0.18134576, - 0.18412821, - 0.19020668, - 0.1830647, - 0.18161058, - 0.1854414, - 0.19151825, - 0.18907265, - 0.18841116, - 0.18465431, - 0.19188471, - 0.18623483, - 0.1930334, - 0.18624929, - 0.18669517, - 0.18834542, - 0.17718652, - 0.19196948, - 0.18198931, - 0.18757853, - 0.19110017, - 0.18900405, - 0.18392175, - 0.18292536, - 0.18605357, - 0.19201787, - 0.18791941, - 0.18860418, - 0.19175616, - 0.1833055, - 0.19468476, - 0.18844387, - 0.19018388, - 0.18257552, - 0.18325597, - 0.1831569, - 0.18405952, - 0.1841893, - 0.19270279, - 0.18473738, - 0.19154595, - 0.18925674, - 0.18820097, - 0.18990457, - 0.18342479, - 0.1883575, - 0.18609914, - 0.18407565, - 0.18555853, - 0.186173, - 0.18632352, - 0.18489523, - 0.18325795, - 0.18894415, - 0.18730015, - 0.18012197, - 0.18721719, - 0.19199906, - 0.18162072, - 0.19100372, - 0.18344215, - 0.18284963, - 0.1900041, - 0.18487018, - 0.19348997, - 0.19345942, - 0.18446274, - 0.1883541, - 0.18453799, - 0.18518706, - 0.19285399, - 0.19113672, - 0.18961784, - 0.18165508, - 0.19008589, - 0.19005103, - 0.19012193, - 0.1865979, - 0.18314604, - 0.18323402, - 0.19439068, - 0.18983452, - 0.189389, - 0.18690363, - 0.18561633, - 0.18531574, - 0.19328548, - 0.17741984, - 0.19136788, - 0.1901003, - 0.19243135, - 0.1915578, - 0.1933532, - 0.18713564, - 0.18331595, - 0.18305627, - 0.18874313, - 0.19292498, - 0.18575555, - 0.19544935, - 0.18991081, - 0.19623516, - 0.18130925, - 0.18657489, - 0.18727171, - 0.18466525, - 0.18829219, - 0.19558918, - 0.18271032, - 0.1927778, - 0.18632072, - 0.19245307, - 0.17867348, - 0.18664844, - 0.17901124, - 0.18634723, - 0.18164803, - 0.18581408, - 0.18963115, - 0.18893193, - 0.18861178, - 0.18145634, - 0.19621325, - 0.18438685, - 0.18182021, - 0.18388388, - 0.18300377, - 0.1876391, - 0.1915926, - 0.1832556, - 0.19337611, - 0.180336, - 0.1814114, - 0.1861167, - 0.18693757, - 0.17517857, - 0.18050852 + 0.18508218, + 0.17827375, + 0.19396462, + 0.18589123, + 0.19046028, + 0.1881602, + 0.18642539, + 0.1828627, + 0.18226781, + 0.1905887, + 0.18362504, + 0.18692651, + 0.18103275, + 0.18688953, + 0.17596821, + 0.18337077, + 0.19246833, + 0.18802053, + 0.18150024, + 0.19313905, + 0.18757653, + 0.18504354, + 0.18139851, + 0.18307193, + 0.18498154, + 0.18468052, + 0.1806075, + 0.18616264, + 0.188107, + 0.18439338, + 0.1845541, + 0.18922906, + 0.18627962, + 0.18337129, + 0.185091, + 0.19043624, + 0.18413623, + 0.17684413, + 0.19268216, + 0.18940519, + 0.1918334, + 0.18848182, + 0.19122635, + 0.18842778, + 0.18248205, + 0.18743384, + 0.18937829, + 0.18610607, + 0.17816359, + 0.1898336, + 0.1831328, + 0.18520987, + 0.18742532, + 0.17631459, + 0.1826238, + 0.18826276, + 0.18738666, + 0.18630262, + 0.18808877, + 0.1941709, + 0.18078187, + 0.18140486, + 0.1902356, + 0.18131192, + 0.19120483, + 0.19176443, + 0.18443212, + 0.18308993, + 0.18747921, + 0.1781338, + 0.19196792, + 0.18435647, + 0.18590584, + 0.18536775, + 0.18091542, + 0.18665215, + 0.18698396, + 0.18342577, + 0.18887636, + 0.17977275, + 0.18322293, + 0.1806967, + 0.18432827, + 0.17821229, + 0.1867172, + 0.18280798, + 0.19545014, + 0.17992744, + 0.18349244, + 0.18148965, + 0.1886546, + 0.18667959, + 0.18530564, + 0.18633217, + 0.18802744, + 0.1814845, + 0.18673931, + 0.18262185, + 0.19048353, + 0.18660142 ], "implementation": "https", "version": "v0.1", @@ -3209,1006 +721,106 @@ }, { "result": [ - 0.061098557, - 0.122677565, - 0.06257435, - 0.12778594, - 0.06030236, - 0.120866634, - 0.059993576, - 0.11949572, - 0.063703716, - 0.12161578, - 0.12833966, - 0.060368165, - 0.06083092, - 0.06434434, - 0.06212958, - 0.064340495, - 0.06267771, - 0.05979742, - 0.12569734, - 0.12185507, - 0.060186822, - 0.12204336, - 0.1253036, - 0.06388343, - 0.12525854, - 0.060852796, - 0.12181904, - 0.12621278, - 0.06088263, - 0.06077933, - 0.122408405, - 0.062213145, - 0.062452976, - 0.11801532, - 0.061045542, - 0.061853305, - 0.061790224, - 0.06273316, - 0.06274884, - 0.12646689, - 0.12734273, - 0.12246875, - 0.1249662, - 0.061987977, - 0.11975378, - 0.061279792, - 0.1268083, - 0.12563269, - 0.12662059, - 0.12286781, - 0.12367272, - 0.11728802, - 0.12375009, - 0.06279944, - 0.12192425, - 0.06239667, - 0.12655386, - 0.06404017, - 0.064299986, - 0.12665547, - 0.06050855, - 0.06136467, - 0.060857967, - 0.061802648, - 0.12003638, - 0.12764299, - 0.12649962, - 0.061260782, - 0.12821585, - 0.060611945, - 0.05921954, - 0.12346959, - 0.12886742, - 0.12087482, - 0.06347828, - 0.12528199, - 0.12031462, - 0.0639886, - 0.06375981, - 0.062880166, - 0.12184213, - 0.12205527, - 0.1265297, - 0.06211663, - 0.123978555, - 0.12635484, - 0.12275845, - 0.06304368, - 0.061689246, - 0.11894658, - 0.06258468, - 0.120178185, - 0.065006085, - 0.0614003, - 0.06413384, - 0.06079768, - 0.12121103, - 0.06176101, - 0.061813965, - 0.12407761, - 0.06251261, - 0.1257532, - 0.063454546, - 0.12669946, - 0.12516311, - 0.062470052, - 0.06350435, - 0.06023116, - 0.12063188, - 0.12461037, - 0.063436404, - 0.11992528, - 0.0627828, - 0.06090916, - 0.06218947, - 0.06533247, - 0.1251869, - 0.061812624, - 0.06406887, - 0.06068265, - 0.12016556, - 0.12591602, - 0.1255677, - 0.12684308, - 0.060802583, - 0.12464005, - 0.06320735, - 0.062168337, - 0.062212307, - 0.12706186, - 0.061864033, - 0.059248224, - 0.12288502, - 0.061336495, - 0.06262787, - 0.06167879, - 0.12735505, - 0.061855666, - 0.061602697, - 0.06014244, - 0.060404032, - 0.060984675, - 0.12594001, - 0.062800124, - 0.062351476, - 0.06164358, - 0.06446282, - 0.06223159, - 0.06269588, - 0.06364729, - 0.12880242, - 0.12187908, - 0.06106908, - 0.060302358, - 0.06079494, - 0.12459275, - 0.06158942, - 0.12282457, - 0.116887435, - 0.12473626, - 0.1240523, - 0.12327415, - 0.12284162, - 0.124004245, - 0.06136621, - 0.12402576, - 0.12296199, - 0.06371356, - 0.12377531, - 0.12236627, - 0.12501334, - 0.06215816, - 0.12511283, - 0.06324485, - 0.06353244, - 0.12514012, - 0.12459142, - 0.062042885, - 0.11690081, - 0.06428719, - 0.12253537, - 0.061031543, - 0.06271566, - 0.11956, - 0.12740672, - 0.12106079, - 0.064277776, - 0.06302115, - 0.06078906, - 0.058266472, - 0.06300843, - 0.12190898, - 0.05923906, - 0.1181524, - 0.06096946, - 0.122085094, - 0.059712157, - 0.061239794, - 0.059939064, - 0.060928002, - 0.12593703, - 0.11892305, - 0.06272017, - 0.064566515, - 0.12500943, - 0.06372904, - 0.06234713, - 0.12592904, - 0.11872868, - 0.12349243, - 0.06395257, - 0.1254166, - 0.062703826, - 0.06210299, - 0.06329495, - 0.059193835, - 0.06371434, - 0.06042314, - 0.12626241, - 0.12590183, - 0.06360637, - 0.06365295, - 0.059588425, - 0.12816073, - 0.12911351, - 0.122024596, - 0.12822922, - 0.06087176, - 0.06288519, - 0.062819794, - 0.061675992, - 0.12638642, - 0.11536737, - 0.121176355, - 0.06313858, - 0.062790245, - 0.12160163, - 0.12305948, - 0.061529107, - 0.12033623, - 0.06349496, - 0.1205994, - 0.06288893, - 0.122656286, - 0.124886885, - 0.12304814, - 0.11650175, - 0.06180165, - 0.06174836, - 0.060449217, - 0.06156516, - 0.11905319, - 0.11786273, - 0.063385285, - 0.061827533, - 0.060296495, - 0.12642768, - 0.12568541, - 0.060418844, - 0.12155877, - 0.0630776, - 0.060743947, - 0.11996708, - 0.12793581, - 0.06313965, - 0.1284523, - 0.1255258, - 0.11923882, - 0.12739412, - 0.062143434, - 0.12604997, - 0.062129293, - 0.12340442, - 0.12136363, - 0.12741889, - 0.060423043, - 0.060728177, - 0.063859165, - 0.12740701, - 0.061496567, - 0.12379834, - 0.123021364, - 0.122087, - 0.12207956, - 0.06427016, - 0.061886005, - 0.06274253, - 0.120108515, - 0.061090786, - 0.063569725, - 0.060752984, - 0.062854566, - 0.12819423, - 0.06261461, - 0.12504536, - 0.06347985, - 0.063427135, - 0.06226781, - 0.12977119, - 0.064651854, - 0.124234535, - 0.061459504, - 0.12986355, - 0.119209856, - 0.124751404, - 0.063733175, - 0.12614915, - 0.12631008, - 0.12482989, - 0.12034548, - 0.1224444, - 0.06347581, - 0.118853256, - 0.124902815, - 0.061748292, - 0.1272086, - 0.061634257, - 0.06182192, - 0.12184995, - 0.060232755, - 0.12607664, - 0.06371958, - 0.12011516, - 0.061288483, - 0.117623225, - 0.12403134, - 0.12314628, - 0.06067355, - 0.12679115, - 0.060680486, - 0.122696385, - 0.06344334, - 0.06192609, - 0.061302215, - 0.062244542, - 0.061868303, - 0.0619339, - 0.06382878, - 0.1273313, - 0.06337379, - 0.06319447, - 0.12662446, - 0.12401527, - 0.122991055, - 0.12641264, - 0.12264216, - 0.06309408, - 0.122137345, - 0.06408302, - 0.12173261, - 0.12841131, - 0.124441914, - 0.12634987, - 0.061986707, - 0.064391375, - 0.063534975, - 0.122105986, - 0.064148754, - 0.12087193, - 0.1275767, - 0.124816924, - 0.12768798, - 0.123407744, - 0.06090919, - 0.06412758, - 0.062706694, - 0.061906293, - 0.12088335, - 0.06230492, - 0.12216677, - 0.12617236, - 0.12092181, - 0.11947854, - 0.118327886, - 0.116609104, - 0.121868506, - 0.11771331, - 0.06424832, - 0.12217119, - 0.0631032, - 0.06383693, - 0.12570591, - 0.12525968, - 0.12170119, - 0.12865895, - 0.12331589, - 0.12220424, - 0.061786372, - 0.12108162, - 0.060363963, - 0.063529514, - 0.06174939, - 0.12166741, - 0.119854756, - 0.11992821, - 0.12016259, - 0.12408515, - 0.1259497, - 0.12625326, - 0.059979994, - 0.063992456, - 0.06296323, - 0.12201907, - 0.06289185, - 0.060920395, - 0.06245094, - 0.12098013, - 0.063023835, - 0.12112317, - 0.061431702, - 0.12099802, - 0.060997713, - 0.06069562, - 0.1156374, - 0.06259204, - 0.121108875, - 0.061397847, - 0.061364565, - 0.12683481, - 0.1239895, - 0.12199623, - 0.12371302, - 0.06303822, - 0.123904705, - 0.06373938, - 0.12497988, - 0.06168437, - 0.061762985, - 0.062048923, - 0.060569096, - 0.061622765, - 0.12302462, - 0.11988064, - 0.060922846, - 0.12258299, - 0.06397334, - 0.058766793, - 0.12462706, - 0.11554163, - 0.061670348, - 0.06131367, - 0.118854515, - 0.12172762, - 0.0623502, - 0.06330903, - 0.061860055, - 0.06376819, - 0.06276494, - 0.06357121, - 0.12506407, - 0.12192823, - 0.0631195, - 0.12576704, - 0.06327021, - 0.05920159, - 0.12185841, - 0.1259599, - 0.06408476, - 0.12770161, - 0.1230431, - 0.12211784, - 0.12576449, - 0.11961059, - 0.06351152, - 0.1198752, - 0.06525488, - 0.121781625, - 0.12638734, - 0.06251528, - 0.06206309, - 0.063542515, - 0.06260917, - 0.12898925, - 0.062839456, - 0.061699014, - 0.12500338, - 0.062399905, - 0.063459046, - 0.116890036, - 0.058163855, - 0.060898986, - 0.121976696, - 0.12382451, - 0.06117277, - 0.061463483, - 0.062992096, - 0.12517282, - 0.12353551, - 0.06262687, - 0.06173612, - 0.061540145, - 0.12567279, - 0.12238838, - 0.12654354, - 0.12621146, - 0.06135368, - 0.12203463, - 0.06126906, - 0.06451874, - 0.121368885, - 0.060720246, - 0.063681684, - 0.0614191, - 0.064739615, - 0.064481474, - 0.12318916, - 0.06012208, - 0.12376385, - 0.060099784, - 0.120980844, - 0.06292485, - 0.061602972, - 0.06365584, - 0.0627104, - 0.063658886, - 0.11705061, - 0.06329363, - 0.121781625, - 0.12226321, - 0.060202073, - 0.12614657, - 0.061373, - 0.12353117, - 0.062471054, - 0.061343413, - 0.06418777, - 0.059270855, - 0.05882358, - 0.062205672, - 0.061868347, - 0.06340579, - 0.061123636, - 0.060697723, - 0.11871503, - 0.06212448, - 0.0636004, - 0.06491019, - 0.06427115, - 0.062795274, - 0.060539242, - 0.12750514, - 0.059909165, - 0.06354641, - 0.06120478, - 0.12920457, - 0.124803066, - 0.12569822, - 0.06234273, - 0.062379815, - 0.12301076, - 0.062037356, - 0.12706876, - 0.12775217, - 0.12815405, - 0.06502236, - 0.12418637, - 0.06366649, - 0.12165575, - 0.12473314, - 0.12309331, - 0.12540075, - 0.12773722, - 0.063183725, - 0.06194332, - 0.063115165, - 0.064503685, - 0.06362732, - 0.12624387, - 0.06288168, - 0.06080931, - 0.1206144, - 0.06183651, - 0.12972994, - 0.0627913, - 0.12643975, - 0.12600654, - 0.060561165, - 0.11908015, - 0.12842998, - 0.12820502, - 0.06314017, - 0.12675942, - 0.12744254, - 0.12307789, - 0.06124741, - 0.12446348, - 0.06025077, - 0.12062515, - 0.11767954, - 0.12114841, - 0.06347565, - 0.062389165, - 0.12471357, - 0.1267419, - 0.062019248, - 0.123556465, - 0.12412642, - 0.12194713, - 0.12459946, - 0.06373942, - 0.12405623, - 0.12525746, - 0.06053102, - 0.11909608, - 0.12103986, - 0.11888951, - 0.06283265, - 0.12484604, - 0.059830666, - 0.123886466, - 0.058721878, - 0.06505489, - 0.12024162, - 0.12088557, - 0.06497758, - 0.12537232, - 0.118689604, - 0.1185964, - 0.12487768, - 0.06234484, - 0.063239455, - 0.12181302, - 0.12500143, - 0.06144439, - 0.123892695, - 0.06322356, - 0.06075873, - 0.06400462, - 0.12386324, - 0.11797801, - 0.063977085, - 0.0610135, - 0.062170736, - 0.060455892, - 0.12700762, - 0.06192173, - 0.12656504, - 0.06069817, - 0.062323034, - 0.061751295, - 0.061373767, - 0.124465905, - 0.12777765, - 0.12406513, - 0.12224693, - 0.12786247, - 0.124376014, - 0.06329137, - 0.061780103, - 0.12600783, - 0.121166356, - 0.06139451, - 0.122465454, - 0.060811177, - 0.060406227, - 0.060910862, - 0.123562105, - 0.12718882, - 0.12698865, - 0.12500887, - 0.12385456, - 0.06134381, - 0.12768099, - 0.1207425, - 0.12633103, - 0.11933334, - 0.12735344, - 0.1217412, - 0.06198373, - 0.061577167, - 0.06328106, - 0.12780821, - 0.119899355, - 0.11884217, - 0.06499533, - 0.06288517, - 0.12572709, - 0.06370967, - 0.06299336, - 0.12635015, - 0.12317125, - 0.123528235, - 0.062334333, - 0.121721454, - 0.063040406, - 0.060503077, - 0.12710865, - 0.12593082, - 0.1253199, - 0.12506114, - 0.06298848, - 0.12187009, - 0.06138891, - 0.06143218, - 0.122595355, - 0.12975028, - 0.061990198, - 0.058604315, - 0.062395692, - 0.064368166, - 0.12264681, - 0.12276988, - 0.05964031, - 0.062926926, - 0.124987945, - 0.06080277, - 0.058830444, - 0.12656274, - 0.06184245, - 0.06136579, - 0.06321543, - 0.11963763, - 0.12161548, - 0.12862557, - 0.06399388, - 0.062242173, - 0.12279626, - 0.12319045, - 0.058754504, - 0.064145856, - 0.12058943, - 0.12828861, - 0.06317596, - 0.061631527, - 0.06312177, - 0.061301287, - 0.12093809, - 0.124914594, - 0.06147969, - 0.12385189, - 0.1215742, - 0.062185816, - 0.12535793, - 0.06329084, - 0.12793434, - 0.12645, - 0.11965113, - 0.062352303, - 0.12161365, - 0.06285597, - 0.06130183, - 0.12684996, - 0.12684952, - 0.06215544, - 0.06363185, - 0.06042371, - 0.12557791, - 0.12269417, - 0.062173452, - 0.059899837, - 0.12786733, - 0.12386554, - 0.063487515, - 0.0636747, - 0.058852226, - 0.0626843, - 0.0625849, - 0.12451706, - 0.12167628, - 0.063683465, - 0.060833704, - 0.12347144, - 0.11772073, - 0.0647329, - 0.059449628, - 0.124460675, - 0.12304892, - 0.061370965, - 0.12278317, - 0.058206007, - 0.121803716, - 0.06251409, - 0.11924211, - 0.12743121, - 0.12565333, - 0.06275442, - 0.06352349, - 0.064351365, - 0.060097106, - 0.060317084, - 0.059768893, - 0.121791475, - 0.060224358, - 0.12532583, - 0.060764983, - 0.12077303, - 0.123844974, - 0.061764415, - 0.06125195, - 0.061555646, - 0.1236463, - 0.12514667, - 0.121424094, - 0.06172146, - 0.059762105, - 0.061486755, - 0.12457161, - 0.06326, - 0.0633896, - 0.062122516, - 0.12490207, - 0.06013389, - 0.06422362, - 0.061419457, - 0.12797524, - 0.12363866, - 0.12677658, - 0.06458394, - 0.060979757, - 0.12931338, - 0.06284752, - 0.06489921, - 0.12469534, - 0.06318158, - 0.12170537, - 0.12484324, - 0.12612495, - 0.1209938, - 0.118906245, - 0.061212316, - 0.12493468, - 0.12464009, - 0.062752806, - 0.12467642, - 0.0641423, - 0.1216294, - 0.1209582, - 0.060991958, - 0.061422933, - 0.12068459, - 0.12475638, - 0.123843476, - 0.122518815, - 0.061314374, - 0.06219265, - 0.12691875, - 0.06432875, - 0.06161244, - 0.06424724, - 0.06116942, - 0.121044785, - 0.06375235, - 0.06220792, - 0.12819417, - 0.12613277, - 0.11891829, - 0.058808018, - 0.06262901, - 0.121994704, - 0.061623022, - 0.12825878, - 0.12834923, - 0.12071676, - 0.12824294, - 0.12575309, - 0.06282522, - 0.12272275, - 0.06211538, - 0.124622494, - 0.12678842, - 0.12780456, - 0.12441278, - 0.118889384, - 0.12368323, - 0.06412907, - 0.06477927, - 0.06295068, - 0.058761925, - 0.062899806, - 0.059340063, - 0.058894932, - 0.11965655, - 0.124077566, - 0.058743656, - 0.11864628, - 0.119751774, - 0.06273457, - 0.12221417, - 0.121467434, - 0.120936885, - 0.12601312, - 0.1223208, - 0.06136741, - 0.0621674, - 0.124620505, - 0.12186019, - 0.06125989, - 0.06387756, - 0.06309048, - 0.06115474, - 0.060864925, - 0.12950446, - 0.12746058, - 0.12202926, - 0.061019138, - 0.12981099, - 0.061455812, - 0.11971428, - 0.0618985, - 0.12580271, - 0.062671095, - 0.061790176, - 0.123100474, - 0.12115817, - 0.062172294, - 0.0630974, - 0.1292075, - 0.12558155, - 0.060595244, - 0.061124552, - 0.06314932, - 0.06279811, - 0.064531155, - 0.062105816, - 0.124226145, - 0.12298026, - 0.12305574, - 0.061293487, - 0.061830226, - 0.060254183, - 0.1243921, - 0.12491277, - 0.06284794, - 0.06113546, - 0.063198164, - 0.12285613, - 0.0652593, - 0.12114529, - 0.06356058, - 0.12355269, - 0.06334004, - 0.061988022, - 0.06371018, - 0.12684947, - 0.062222466, - 0.06452483, - 0.061369646, - 0.058641843, - 0.058024712, - 0.059255727, - 0.06142778, - 0.061520416, - 0.12299057, - 0.1240438, - 0.062762305, - 0.1233913, - 0.06354816, - 0.060491633, - 0.12533638, - 0.120681874, - 0.12654531, - 0.12492515, - 0.12168613, - 0.120121546, - 0.059344687, - 0.12227504, - 0.059349224, - 0.061782755, - 0.12443372, - 0.12758052, - 0.12190324, - 0.06323058, - 0.06377576, - 0.11574595, - 0.061041545, - 0.06135239, - 0.063873164, - 0.11965734, - 0.12018278, - 0.061995443, - 0.06311943, - 0.062282298, - 0.117936656, - 0.06358508, - 0.12773158, - 0.12461038, - 0.12293449, - 0.060854096, - 0.06118873, - 0.062328547, - 0.11787681, - 0.061586753, - 0.06342965, - 0.12292409, - 0.119889475, - 0.12385673, - 0.061602287, - 0.061503604, - 0.122390024, - 0.12681009, - 0.06074304, - 0.063694805, - 0.06460628, - 0.12174, - 0.062427726, - 0.060504176, - 0.06104154, - 0.060948625, - 0.0609405, - 0.12081094 + 0.1209757, + 0.06461716, + 0.12208053, + 0.12628755, + 0.06423461, + 0.06466026, + 0.064468525, + 0.06150949, + 0.11556627, + 0.061117724, + 0.058900986, + 0.061541364, + 0.06421713, + 0.122391485, + 0.11854764, + 0.062412735, + 0.06344445, + 0.061374705, + 0.12119607, + 0.062948525, + 0.06296972, + 0.12764546, + 0.11927321, + 0.0638416, + 0.061785944, + 0.12657091, + 0.1185081, + 0.06205789, + 0.11753894, + 0.061609462, + 0.06306059, + 0.06364906, + 0.06057426, + 0.060378436, + 0.12644039, + 0.12533869, + 0.060731113, + 0.06401904, + 0.059758253, + 0.12701069, + 0.060719486, + 0.06508966, + 0.06079837, + 0.06062171, + 0.06261868, + 0.06443974, + 0.06011311, + 0.12656412, + 0.065150805, + 0.06208207, + 0.12525532, + 0.061621383, + 0.12625502, + 0.06314558, + 0.062638484, + 0.11895386, + 0.12088632, + 0.06210899, + 0.11629793, + 0.12670578, + 0.12395031, + 0.0617258, + 0.12547764, + 0.06341616, + 0.1256299, + 0.12809217, + 0.12414447, + 0.12216654, + 0.06081755, + 0.12818258, + 0.06282046, + 0.0627884, + 0.06078054, + 0.11904393, + 0.058164127, + 0.12659164, + 0.12188251, + 0.1282394, + 0.06425848, + 0.12467589, + 0.06436521, + 0.06368547, + 0.06265833, + 0.05915497, + 0.1225124, + 0.063117616, + 0.12640329, + 0.1262788, + 0.060370248, + 0.06139333, + 0.060157556, + 0.12261276, + 0.06478592, + 0.11583861, + 0.06183816, + 0.059078258, + 0.064146996, + 0.058531176, + 0.118616395, + 0.11897062 ], "implementation": "go-libp2p", "version": "v0.27", @@ -4216,1006 +828,106 @@ }, { "result": [ - 0.05979386, - 0.0614989, - 0.062057644, - 0.0629346, - 0.06084253, - 0.06274704, - 0.060138498, - 0.06168313, - 0.06249221, - 0.059208173, - 0.06315577, - 0.064342216, - 0.060861632, - 0.06126036, - 0.0606333, - 0.06253317, - 0.060403556, - 0.06038483, - 0.0645132, - 0.0636985, - 0.061929233, - 0.061765026, - 0.059337232, - 0.06328489, - 0.06281512, - 0.06109722, - 0.061478745, - 0.061853956, - 0.06432052, - 0.06203753, - 0.061623573, - 0.062024113, - 0.06343448, - 0.061724402, - 0.061243206, - 0.06135625, - 0.06527555, - 0.06260956, - 0.063790575, - 0.062603205, - 0.06271221, - 0.060480125, - 0.063212246, - 0.06289105, - 0.06414841, - 0.06258399, - 0.062755905, - 0.06096968, - 0.060282093, - 0.06320078, - 0.06204031, - 0.062469658, - 0.060154475, - 0.06227841, - 0.061607603, - 0.06294187, - 0.061856747, - 0.06370741, - 0.06157508, - 0.06274756, - 0.062030185, - 0.061531935, - 0.060438696, - 0.06317379, - 0.06250942, - 0.062877975, - 0.06079161, - 0.061781704, - 0.06282605, - 0.060677525, - 0.060185745, - 0.059562013, - 0.06184914, - 0.062941395, - 0.06266841, - 0.06186885, - 0.06369873, - 0.06320667, - 0.06289801, - 0.05978253, - 0.06366667, - 0.06116066, - 0.06428175, - 0.062050518, - 0.063048184, - 0.06055832, - 0.063025385, - 0.062117364, - 0.062324926, - 0.059716098, - 0.062684886, - 0.061443537, - 0.059105065, - 0.06423332, - 0.06210462, - 0.061752487, - 0.05933307, - 0.06337844, - 0.06265861, - 0.061626848, - 0.062014375, - 0.061660185, - 0.06400093, - 0.06269735, - 0.060753748, - 0.06418341, - 0.060211968, - 0.063170485, - 0.063441835, - 0.06301364, - 0.061521634, - 0.05989454, - 0.06359335, - 0.06003695, - 0.060188636, - 0.061473362, - 0.061123997, - 0.06094188, - 0.06238059, - 0.06219674, - 0.061772026, - 0.06302244, - 0.06217494, - 0.06420405, - 0.06289659, - 0.062873684, - 0.06372151, - 0.063877866, - 0.06170014, - 0.061899442, - 0.05930521, - 0.061791964, - 0.065101504, - 0.064989276, - 0.062589176, - 0.063712336, - 0.063643016, - 0.062825225, - 0.060757287, - 0.06384424, - 0.060841434, - 0.060667887, - 0.06038359, - 0.06306893, - 0.06158978, - 0.06308526, - 0.062179074, - 0.061404727, - 0.06363155, - 0.06086258, - 0.061433226, - 0.06251437, - 0.06185469, - 0.06378106, - 0.060349714, - 0.0617683, - 0.061294287, - 0.061439868, - 0.062053643, - 0.06141682, - 0.06316865, - 0.06431798, - 0.060288608, - 0.060308624, - 0.062582314, - 0.06297855, - 0.06232935, - 0.06172678, - 0.06423594, - 0.06368951, - 0.0627127, - 0.063415445, - 0.06462346, - 0.060237568, - 0.060226552, - 0.06392753, - 0.06298952, - 0.06081873, - 0.060775157, - 0.06408355, - 0.06211819, - 0.061403032, - 0.0643188, - 0.06205648, - 0.061182167, - 0.06278589, - 0.06137354, - 0.06444163, - 0.062767684, - 0.059858225, - 0.059899423, - 0.061598144, - 0.060082808, - 0.061800536, - 0.061146166, - 0.06150874, - 0.06220255, - 0.06374253, - 0.062975585, - 0.060746208, - 0.06361366, - 0.06064718, - 0.060326252, - 0.063673995, - 0.060362574, - 0.061759576, - 0.06434878, - 0.061801597, - 0.061751597, - 0.06268712, - 0.06439896, - 0.06359741, - 0.05931582, - 0.06360835, - 0.063618176, - 0.06148455, - 0.062682614, - 0.06508584, - 0.061175767, - 0.05927704, - 0.062290452, - 0.06253745, - 0.061925694, - 0.06459632, - 0.06180387, - 0.06227639, - 0.06159579, - 0.0617276, - 0.06339555, - 0.061987013, - 0.063767575, - 0.063278936, - 0.059473924, - 0.06335779, - 0.06458398, - 0.062495936, - 0.06226176, - 0.061254166, - 0.060763113, - 0.05875846, - 0.063741535, - 0.0609447, - 0.062923096, - 0.061072174, - 0.06363208, - 0.06420087, - 0.06207967, - 0.062252656, - 0.062823534, - 0.06353428, - 0.06304217, - 0.06528387, - 0.061899245, - 0.062377892, - 0.0636287, - 0.06358076, - 0.06275488, - 0.06503346, - 0.061556514, - 0.063839406, - 0.06246073, - 0.061890773, - 0.061340466, - 0.059371043, - 0.06015841, - 0.06289169, - 0.061485823, - 0.06227495, - 0.062264785, - 0.06239975, - 0.062895074, - 0.06374545, - 0.061236992, - 0.061852027, - 0.06423213, - 0.06392515, - 0.06014145, - 0.06428697, - 0.060686026, - 0.06354961, - 0.05985496, - 0.062677056, - 0.063709125, - 0.0621901, - 0.06230828, - 0.062765874, - 0.061910443, - 0.061705038, - 0.06363215, - 0.060811654, - 0.060879894, - 0.06282529, - 0.06075783, - 0.062227864, - 0.062732086, - 0.06360908, - 0.064911544, - 0.064153045, - 0.06169243, - 0.059889056, - 0.063457906, - 0.06365491, - 0.063651316, - 0.062058754, - 0.060719453, - 0.06034434, - 0.061166268, - 0.06277938, - 0.06292052, - 0.059201546, - 0.063161284, - 0.060935717, - 0.062285367, - 0.06371709, - 0.06281371, - 0.06152243, - 0.061419237, - 0.0601426, - 0.06225559, - 0.06233074, - 0.06439434, - 0.06165969, - 0.06076728, - 0.064408936, - 0.06293402, - 0.062192105, - 0.063760415, - 0.060685128, - 0.0644389, - 0.06314484, - 0.063121825, - 0.060743947, - 0.063668795, - 0.060660604, - 0.06271744, - 0.058328543, - 0.061411858, - 0.06189554, - 0.060102962, - 0.06431615, - 0.060885288, - 0.06374258, - 0.061255485, - 0.060424276, - 0.06279205, - 0.061910532, - 0.064550266, - 0.06110153, - 0.061334394, - 0.059249654, - 0.061582856, - 0.06166638, - 0.061446104, - 0.06369511, - 0.06147995, - 0.062022746, - 0.06435338, - 0.062320136, - 0.061921295, - 0.060921602, - 0.06372469, - 0.059915196, - 0.06441641, - 0.062130637, - 0.06195945, - 0.06069592, - 0.061742913, - 0.06417632, - 0.06350658, - 0.061873604, - 0.06091348, - 0.061492123, - 0.059304368, - 0.06412135, - 0.060104094, - 0.0637707, - 0.06258704, - 0.06350975, - 0.061825927, - 0.062071595, - 0.06430397, - 0.06437954, - 0.06046731, - 0.06410612, - 0.06244289, - 0.060224306, - 0.06141761, - 0.063339286, - 0.06368062, - 0.06120493, - 0.06137541, - 0.0594094, - 0.06267729, - 0.062760755, - 0.06237015, - 0.06215682, - 0.06228235, - 0.06282457, - 0.061552323, - 0.062088117, - 0.061403822, - 0.063143015, - 0.0618638, - 0.06165682, - 0.06284204, - 0.061789196, - 0.06313249, - 0.06179003, - 0.05904246, - 0.06340823, - 0.061967406, - 0.061541617, - 0.0637321, - 0.06195906, - 0.06358925, - 0.06425526, - 0.061410718, - 0.062804185, - 0.060278904, - 0.061348844, - 0.061958287, - 0.06306985, - 0.063841216, - 0.06377952, - 0.06095326, - 0.062317584, - 0.061831135, - 0.06287976, - 0.061591603, - 0.06335574, - 0.063638054, - 0.06300621, - 0.06183161, - 0.060828935, - 0.06424561, - 0.062007222, - 0.060872953, - 0.061587926, - 0.05841837, - 0.06090226, - 0.062893264, - 0.06187206, - 0.06366404, - 0.06215531, - 0.0640752, - 0.061135575, - 0.061393812, - 0.06363099, - 0.062193226, - 0.061784647, - 0.06169515, - 0.061955925, - 0.06236186, - 0.06310956, - 0.06434095, - 0.058605157, - 0.058241893, - 0.061688866, - 0.06202439, - 0.06189997, - 0.062434703, - 0.06232555, - 0.064332396, - 0.0618414, - 0.061250456, - 0.059787028, - 0.060930777, - 0.062661715, - 0.06380334, - 0.060944274, - 0.06418719, - 0.06348855, - 0.06316795, - 0.060639746, - 0.06297868, - 0.06227127, - 0.059747573, - 0.0640002, - 0.06148571, - 0.0607764, - 0.062461674, - 0.062380627, - 0.06278742, - 0.06357981, - 0.06163896, - 0.06327241, - 0.062274482, - 0.06381744, - 0.06347626, - 0.05827588, - 0.061138034, - 0.0632151, - 0.060229123, - 0.061270114, - 0.06267246, - 0.062692106, - 0.06231539, - 0.060769193, - 0.061368532, - 0.06075751, - 0.05929716, - 0.06179103, - 0.06419418, - 0.0624434, - 0.06092033, - 0.06116908, - 0.062283907, - 0.06174217, - 0.062652595, - 0.062773764, - 0.064602576, - 0.0629032, - 0.06079287, - 0.06312732, - 0.06256519, - 0.06322814, - 0.061317157, - 0.062558144, - 0.059749406, - 0.05980088, - 0.06146816, - 0.059700225, - 0.05925501, - 0.058709715, - 0.06263208, - 0.0635892, - 0.06127754, - 0.058073636, - 0.060395606, - 0.062980175, - 0.062253, - 0.063260496, - 0.06042692, - 0.06323225, - 0.06320897, - 0.06155976, - 0.06341107, - 0.06461691, - 0.06509862, - 0.059244685, - 0.06372436, - 0.06423378, - 0.060984038, - 0.06346932, - 0.062351085, - 0.062750496, - 0.06232268, - 0.062089987, - 0.0628622, - 0.06171485, - 0.061235707, - 0.062559515, - 0.06216701, - 0.06365875, - 0.06377454, - 0.06374699, - 0.061479732, - 0.06068172, - 0.06138454, - 0.06152995, - 0.063729495, - 0.05916323, - 0.06041075, - 0.064493924, - 0.06286075, - 0.0639641, - 0.0598729, - 0.06281571, - 0.062856816, - 0.06194866, - 0.06313351, - 0.061772507, - 0.06380168, - 0.06276818, - 0.061157312, - 0.063751616, - 0.063188456, - 0.060277607, - 0.06325138, - 0.06512414, - 0.061305415, - 0.062273193, - 0.060417358, - 0.061609734, - 0.062217303, - 0.060880408, - 0.060569335, - 0.061913934, - 0.06444328, - 0.060207047, - 0.06164716, - 0.064480714, - 0.06273292, - 0.06335622, - 0.062218167, - 0.062090505, - 0.06155317, - 0.0627704, - 0.060952976, - 0.06328552, - 0.062280163, - 0.061459187, - 0.061888028, - 0.05970221, - 0.062122222, - 0.0597407, - 0.058327984, - 0.061222583, - 0.062315445, - 0.061566573, - 0.063535646, - 0.06215149, - 0.062856615, - 0.06197932, - 0.06155451, - 0.06445024, - 0.064445965, - 0.062247932, - 0.05917135, - 0.060923513, - 0.06136525, - 0.062816456, - 0.061488234, - 0.063800745, - 0.061575547, - 0.06130228, - 0.06310618, - 0.061906185, - 0.06272591, - 0.06368562, - 0.06079202, - 0.061001748, - 0.05997783, - 0.061381154, - 0.06371883, - 0.06344037, - 0.06214938, - 0.061319023, - 0.059773207, - 0.06115178, - 0.06529025, - 0.06371798, - 0.064129755, - 0.06255588, - 0.0609593, - 0.060296375, - 0.063391164, - 0.0643208, - 0.06268255, - 0.06369317, - 0.061821412, - 0.06421077, - 0.06086433, - 0.061842367, - 0.06279925, - 0.06290217, - 0.059898548, - 0.06383062, - 0.060675934, - 0.06276366, - 0.059785724, - 0.06269804, - 0.060327776, - 0.06355544, - 0.061033607, - 0.06177277, - 0.06356359, - 0.064168565, - 0.059250753, - 0.06369532, - 0.061907504, - 0.061360195, - 0.061452452, - 0.06331769, - 0.06321592, - 0.063089624, - 0.06084608, - 0.062607065, - 0.060414653, - 0.06371047, - 0.059321288, - 0.062762626, - 0.0621076, - 0.061927795, - 0.062539496, - 0.062565565, - 0.06356398, - 0.064264365, - 0.06326479, - 0.062072203, - 0.061838903, - 0.0646521, - 0.061973702, - 0.06420902, - 0.0646915, - 0.063238904, - 0.06356952, - 0.06360718, - 0.060874417, - 0.06041922, - 0.059130058, - 0.06118578, - 0.062250856, - 0.06410639, - 0.06399072, - 0.06508581, - 0.06090668, - 0.06323747, - 0.061443124, - 0.05976701, - 0.058848005, - 0.062373713, - 0.061365414, - 0.06444588, - 0.062794365, - 0.06412159, - 0.062258974, - 0.06310725, - 0.06228619, - 0.06436208, - 0.063303985, - 0.060171414, - 0.061232474, - 0.06084174, - 0.06357324, - 0.06345992, - 0.063671134, - 0.06068351, - 0.06430609, - 0.06265557, - 0.06110075, - 0.065136455, - 0.059910703, - 0.062354036, - 0.060344014, - 0.060081746, - 0.06356441, - 0.060783196, - 0.062382977, - 0.059761215, - 0.06524583, - 0.061889578, - 0.061759107, - 0.06311186, - 0.06324214, - 0.059268165, - 0.061348207, - 0.062435903, - 0.06089429, - 0.06205786, - 0.06321492, - 0.06324156, - 0.06433786, - 0.063115135, - 0.06017287, - 0.06384268, - 0.060110845, - 0.06353545, - 0.062320348, - 0.063262254, - 0.06040462, - 0.059825834, - 0.06250469, - 0.060704, - 0.064890765, - 0.063007, - 0.060435154, - 0.06327815, - 0.06226422, - 0.059748843, - 0.06419631, - 0.059847493, - 0.061958812, - 0.062139746, - 0.06102512, - 0.063417464, - 0.06405791, - 0.06408854, - 0.061629616, - 0.062317874, - 0.06070151, - 0.062802985, - 0.064530745, - 0.061835118, - 0.06349172, - 0.06439148, - 0.06257857, - 0.0618435, - 0.0612463, - 0.059314977, - 0.061835606, - 0.06318485, - 0.05846553, - 0.060747154, - 0.06253624, - 0.06424052, - 0.06300817, - 0.0630872, - 0.06407303, - 0.06270849, - 0.06360294, - 0.06182536, - 0.0586877, - 0.06257508, - 0.06314644, - 0.06328054, - 0.06294638, - 0.06332351, - 0.061097328, - 0.062281944, - 0.060740136, - 0.061762482, - 0.06446493, - 0.060947508, - 0.06283282, - 0.060200904, - 0.05975719, - 0.061399903, - 0.06280819, - 0.062469244, - 0.061885603, - 0.06447722, - 0.061538026, - 0.059892207, - 0.061727017, - 0.062140662, - 0.060860913, - 0.063015096, - 0.061284184, - 0.06312262, - 0.061938345, - 0.06316551, - 0.060360573, - 0.064449936, - 0.06348923, - 0.06360755, - 0.064326376, - 0.06164371, - 0.059297927, - 0.061783917, - 0.06138533, - 0.06091118, - 0.062749654, - 0.063602544, - 0.06233289, - 0.064593695, - 0.05826391, - 0.06234892, - 0.06219125, - 0.061189026, - 0.058916453, - 0.06258262, - 0.061358728, - 0.06322487, - 0.06004748, - 0.06125965, - 0.06091724, - 0.062283725, - 0.062124405, - 0.06136791, - 0.060872372, - 0.0632676, - 0.060370337, - 0.06493723, - 0.06232615, - 0.06304331, - 0.061939873, - 0.05980563, - 0.060403984, - 0.064906195, - 0.06342987, - 0.06201962, - 0.062731, - 0.060963932, - 0.06344547, - 0.0609048, - 0.06363733, - 0.0628294, - 0.06383475, - 0.06265264, - 0.063161425, - 0.060189433, - 0.06246286, - 0.061266206, - 0.06319767, - 0.062539175, - 0.06061273, - 0.058746524, - 0.061816245, - 0.06374292, - 0.063560665, - 0.06317224, - 0.063223965, - 0.06303183, - 0.062025357, - 0.06335688, - 0.06375669, - 0.064367265, - 0.06306756, - 0.06368245, - 0.0640907, - 0.06307405, - 0.061457425, - 0.060045425, - 0.061761852, - 0.061942898, - 0.06431174, - 0.05982536, - 0.061410792, - 0.061968915, - 0.0620733, - 0.06280793, - 0.06380812, - 0.06142668, - 0.061766844, - 0.0649119, - 0.060845394, - 0.063008584, - 0.064966306, - 0.05803107, - 0.062541865, - 0.06417117, - 0.060877066, - 0.06134829, - 0.060287263, - 0.06326362, - 0.061103053, - 0.06101631, - 0.060647454, - 0.06449227, - 0.06128844, - 0.06360569, - 0.06276879, - 0.06486922, - 0.06345363, - 0.06441076, - 0.060451847, - 0.0627912, - 0.061479166, - 0.06382031, - 0.06380985, - 0.059796836, - 0.060898013, - 0.061231285, - 0.061917424, - 0.0632277, - 0.061581664, - 0.059430394, - 0.06280849, - 0.060878523, - 0.06413634, - 0.061140038, - 0.06255095, - 0.06420944, - 0.061289538, - 0.06400026, - 0.06187256, - 0.06394408, - 0.06375153, - 0.06455168, - 0.06363476, - 0.06296707, - 0.063756734, - 0.060728095, - 0.060522046, - 0.060161687, - 0.06463918, - 0.064323545, - 0.05979955, - 0.062341843, - 0.06195332, - 0.061778024, - 0.06386776, - 0.06293185, - 0.06279565, - 0.06321745, - 0.06185388, - 0.06234759, - 0.061229877, - 0.06357985, - 0.05862019, - 0.061321087, - 0.060375992, - 0.0618004, - 0.061773814, - 0.06298199, - 0.062774315, - 0.061376244, - 0.06185918, - 0.06464773, - 0.061283413, - 0.06282341, - 0.06262298, - 0.063581094, - 0.06085791, - 0.06366299, - 0.06178756, - 0.06369349, - 0.06303738, - 0.060733046 + 0.06345447, + 0.061587356, + 0.06172834, + 0.063658975, + 0.062401403, + 0.06272092, + 0.062954806, + 0.061134584, + 0.06287806, + 0.059102934, + 0.061779834, + 0.059013218, + 0.063302524, + 0.06478104, + 0.063023314, + 0.064325534, + 0.06295493, + 0.06332099, + 0.06492679, + 0.06060422, + 0.0626502, + 0.062015872, + 0.062239226, + 0.06217321, + 0.061391417, + 0.06288373, + 0.05990264, + 0.06327026, + 0.061320774, + 0.06497625, + 0.062249515, + 0.063625515, + 0.06403047, + 0.06253672, + 0.062313348, + 0.064202726, + 0.06206468, + 0.063333996, + 0.060909577, + 0.06468787, + 0.061171666, + 0.06333959, + 0.05857594, + 0.061285447, + 0.06001074, + 0.061667416, + 0.0626718, + 0.062484693, + 0.061498515, + 0.06310085, + 0.0616859, + 0.060247444, + 0.061949845, + 0.062382776, + 0.0649927, + 0.06444447, + 0.0637225, + 0.062274076, + 0.06135238, + 0.061473493, + 0.06365285, + 0.061756827, + 0.061779466, + 0.061847936, + 0.061907496, + 0.061833415, + 0.06341758, + 0.061410118, + 0.058665663, + 0.06232912, + 0.060347583, + 0.06289555, + 0.061114322, + 0.060711324, + 0.060766414, + 0.06345203, + 0.0639523, + 0.059675116, + 0.059893943, + 0.063581206, + 0.064657755, + 0.059562646, + 0.06305082, + 0.06067777, + 0.06356179, + 0.060934655, + 0.0634944, + 0.0639623, + 0.06420106, + 0.063125364, + 0.059076265, + 0.060855072, + 0.060172576, + 0.06149475, + 0.061990738, + 0.062807135, + 0.06066843, + 0.061482836, + 0.059808012, + 0.062721476 ], "implementation": "go-libp2p", "version": "v0.27", diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 7247e185c..3e5e44917 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -17,7 +17,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 100 << 20, downloadBytes: 0, unit: "bit/s", - iterations: 10, + iterations: 5, }), runBenchmarkAcrossVersions({ name: "Single Connection throughput – Download 100 MiB", @@ -26,7 +26,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 0, downloadBytes: 100 << 20, unit: "bit/s", - iterations: 10, + iterations: 5, }), runBenchmarkAcrossVersions({ name: "Connection establishment + 1 byte round trip latencies", @@ -35,7 +35,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 1, downloadBytes: 1, unit: "s", - iterations: 1000, + iterations: 100, }), ], }; diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 913b82af8..7274fea81 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -10,6 +10,11 @@ export const versions: Array = [ implementation: "rust-libp2p", transportStacks: ["tcp", "quic-v1"] }, + { + id: "v0.52-quinn", + implementation: "rust-libp2p", + transportStacks: ["tcp", "quic-v1"] + }, { id: "v0.1", implementation: "https", From 9ed7f1ab07759e4d18618ddbcfed73d0d04cefc9 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 12 May 2023 20:20:36 +0900 Subject: [PATCH 081/101] Add quic-go v0.34 --- perf/impl/Makefile | 11 +- perf/impl/go-libp2p/v0.27/Makefile | 3 + perf/impl/go-libp2p/v0.27/main.go | 16 +- perf/impl/https/v0.1/Makefile | 3 + perf/impl/https/v0.1/main.go | 6 +- perf/impl/quic-go/.gitignore | 4 + perf/impl/quic-go/v0.34/Makefile | 23 + perf/impl/rust-libp2p/v0.52-quinn/Makefile | 2 +- perf/impl/rust-libp2p/v0.52/Makefile | 2 +- perf/runner/benchmark-results.json | 1671 +++++++++++--------- perf/runner/src/index.ts | 4 +- perf/runner/src/versions.ts | 7 +- 12 files changed, 969 insertions(+), 783 deletions(-) create mode 100644 perf/impl/quic-go/.gitignore create mode 100644 perf/impl/quic-go/v0.34/Makefile diff --git a/perf/impl/Makefile b/perf/impl/Makefile index e744dd1aa..f7474f845 100644 --- a/perf/impl/Makefile +++ b/perf/impl/Makefile @@ -1,14 +1,21 @@ GO_SUBDIRS := $(wildcard go-libp2p/*/.) RUST_SUBDIRS := $(wildcard rust-libp2p/*/.) HTTPS_SUBDIRS := $(wildcard https/*/.) +QUIC_GO_SUBDIRS := $(wildcard quic-go/*/.) -all: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) +all: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) $(RUST_SUBDIRS): $(MAKE) -C $@ $(GO_SUBDIRS): $(MAKE) -C $@ $(HTTPS_SUBDIRS): $(MAKE) -C $@ +$(QUIC_GO_SUBDIRS): + $(MAKE) -C $@ + +clean: $(RUST_SUBDIRS:%=%clean) $(GO_SUBDIRS:%=%clean) $(HTTPS_SUBDIRS:%=%clean) $(QUIC_GO_SUBDIRS:%=%clean) +%clean: + $(MAKE) -C $* clean -.PHONY: $(GO_SUBDIRS) $(RUST_SUBDIRS) $(HTTPS_SUBDIRS) all +.PHONY: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) all clean diff --git a/perf/impl/go-libp2p/v0.27/Makefile b/perf/impl/go-libp2p/v0.27/Makefile index 9668f0c42..3742d184b 100644 --- a/perf/impl/go-libp2p/v0.27/Makefile +++ b/perf/impl/go-libp2p/v0.27/Makefile @@ -3,4 +3,7 @@ all: perf perf: docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . +clean: + rm perf + .PHONY: all diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 7354f8a8c..c341e03b6 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -6,6 +6,7 @@ import ( "flag" "fmt" "time" + "strings" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p/core/peer" @@ -15,7 +16,7 @@ import ( func main() { runServer := flag.Bool("run-server", false, "Should run as server") - serverIPAddr := flag.String("server-ip-address", "", "Server address") + serverAddr := flag.String("server-address", "", "Server address") transport := flag.String("transport", "tcp", "Transport to use") secretKeySeed := flag.Uint64("secret-key-seed", 0, "Server secret key seed") uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") @@ -49,12 +50,21 @@ func main() { select {} // run forever, exit on interrupt } + ipPort := strings.Split(*serverAddr, ":") + if len(ipPort) != 2 { + fmt.Println("Invalid server address format. Expected format: 'ip:port'") + return + } + + ip := ipPort[0] + port := ipPort[1] + var multiAddrStr string switch *transport { case "tcp": - multiAddrStr = fmt.Sprintf("/ip4/%s/tcp/4001/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", *serverIPAddr) + multiAddrStr = fmt.Sprintf("/ip4/%s/tcp/%s/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", ip, port) case "quic-v1": - multiAddrStr = fmt.Sprintf("/ip4/%s/udp/4001/quic-v1/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", *serverIPAddr) + multiAddrStr = fmt.Sprintf("/ip4/%s/udp/%s/quic-v1/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", ip, port) default: fmt.Println("Invalid transport. Accepted values: 'tcp' or 'quic-v1'") return diff --git a/perf/impl/https/v0.1/Makefile b/perf/impl/https/v0.1/Makefile index 9668f0c42..3742d184b 100644 --- a/perf/impl/https/v0.1/Makefile +++ b/perf/impl/https/v0.1/Makefile @@ -3,4 +3,7 @@ all: perf perf: docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . +clean: + rm perf + .PHONY: all diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index 09dca12f3..f2524d22c 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -146,7 +146,7 @@ type Latencies struct { func main() { runServer := flag.Bool("run-server", false, "Should run as server") - serverIPAddr := flag.String("server-ip-address", "", "Server address") + serverAddr := flag.String("server-address", "", "Server address") _ = flag.String("transport", "", "Transport to use") _ = flag.Uint64("secret-key-seed", 0, "Server secret key seed") uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") @@ -178,13 +178,13 @@ func main() { } } else { // Client mode - if *serverIPAddr == "" { + if *serverAddr == "" { fmt.Println("Error: Please provide valid server-address flags for client mode.") return } // Run the client and print the results - durations, err := runClient(fmt.Sprintf("%s:%d", *serverIPAddr, 4001), *uploadBytes, *downloadBytes) + durations, err := runClient(*serverAddr, *uploadBytes, *downloadBytes) if err != nil { panic(err) } diff --git a/perf/impl/quic-go/.gitignore b/perf/impl/quic-go/.gitignore new file mode 100644 index 000000000..6652a25c1 --- /dev/null +++ b/perf/impl/quic-go/.gitignore @@ -0,0 +1,4 @@ +go-libp2p-*.zip +go-libp2p-* +go-libp2p-*/* +image.json diff --git a/perf/impl/quic-go/v0.34/Makefile b/perf/impl/quic-go/v0.34/Makefile new file mode 100644 index 000000000..b8c4a51af --- /dev/null +++ b/perf/impl/quic-go/v0.34/Makefile @@ -0,0 +1,23 @@ +commitSha := b3ed7966a563d528b7aa19265cbca929bf2bc73f + +all: perf + +perf: perf-${commitSha} + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)/perf-${commitSha}":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf cmd/main.go + cp perf-${commitSha}/perf . + +perf-${commitSha}: perf-${commitSha}.zip + unzip -o perf-${commitSha}.zip + +perf-${commitSha}.zip: + # TODO: Depend on upstream, not mxinden + wget -O $@ "https://github.com/mxinden/perf/archive/${commitSha}.zip" + +clean: + rm perf-*.zip + rm -rf perf-* + rm perf + +.PHONY: clean + + diff --git a/perf/impl/rust-libp2p/v0.52-quinn/Makefile b/perf/impl/rust-libp2p/v0.52-quinn/Makefile index cab8e16ec..7211ff749 100644 --- a/perf/impl/rust-libp2p/v0.52-quinn/Makefile +++ b/perf/impl/rust-libp2p/v0.52-quinn/Makefile @@ -1,4 +1,4 @@ -commitSha := d795f5c29271aa0af117f8e599ef07c2b874f2ad +commitSha := bb75989700e64318203027e7f6fe284a0e86a1e5 all: perf diff --git a/perf/impl/rust-libp2p/v0.52/Makefile b/perf/impl/rust-libp2p/v0.52/Makefile index 0370d10da..4a649348a 100644 --- a/perf/impl/rust-libp2p/v0.52/Makefile +++ b/perf/impl/rust-libp2p/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := 59d8f3f02ce0b72320202bf43c84a8060f3db545 +commitSha := 08e4276e048f4d90c064960e689f41e4f30c80b9 all: perf diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 5650ccd39..8be09bbc4 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,11 +6,23 @@ "results": [ { "result": [ - 23701616.745669935, - 23564988.770569358, - 23768107.96211605, - 23895253.60271939, - 24121270.555884488 + 435320241.80629236, + 462446477.6844952, + 475363041.5589508, + 509933685.4627763, + 471298443.2210251 + ], + "implementation": "quic-go", + "version": "v0.34", + "transportStack": "quic-v1" + }, + { + "result": [ + 23381807.27959374, + 21901887.85143298, + 23537633.11975275, + 21586885.43245907, + 23600338.194453776 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -18,11 +30,11 @@ }, { "result": [ - 60527725.15704369, - 112086701.2038308, - 59383136.817177296, - 93718796.0597939, - 53484638.28892967 + 100840537.4994737, + 38326187.69827259, + 147477357.25609776, + 45194921.52350153, + 52954165.524267666 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -30,11 +42,11 @@ }, { "result": [ - 21659297.726486947, - 23341807.105683643, - 24440617.614624586, - 18126934.246367745, - 23461274.56785629 + 24161158.138433795, + 24192381.68011527, + 23879046.91163901, + 23570392.07680671, + 21379295.93906058 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -42,11 +54,11 @@ }, { "result": [ - 598711379.7225211, - 591781449.138027, - 582198651.4344352, - 590642765.9369774, - 592932026.4174708 + 573591970.784021, + 604555310.7696401, + 607828595.438483, + 591819193.9918051, + 588437784.4712127 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -54,11 +66,11 @@ }, { "result": [ - 320123546.2157083, - 287017747.27790856, - 289747311.88868153, - 304736385.6227017, - 301275270.28947985 + 292021799.78984165, + 315032597.9525266, + 309568924.0421708, + 303076027.62170845, + 309355291.00080323 ], "implementation": "https", "version": "v0.1", @@ -66,11 +78,11 @@ }, { "result": [ - 261420844.58865663, - 258947455.50396326, - 296402214.2340132, - 265921548.55804124, - 259887446.03497446 + 283421085.12878627, + 286352411.8697239, + 278521554.8371451, + 271417461.01803356, + 279325066.62542135 ], "implementation": "go-libp2p", "version": "v0.27", @@ -78,11 +90,11 @@ }, { "result": [ - 628832315.7402982, - 594272922.0905726, - 639138563.3956187, - 611439043.7343302, - 611676769.0290568 + 610655441.7482173, + 626991523.5963205, + 664316544.0050887, + 632857467.2598459, + 611629672.9717267 ], "implementation": "go-libp2p", "version": "v0.27", @@ -96,11 +108,23 @@ "results": [ { "result": [ - 21859218.35949858, - 22991658.49578649, - 22903708.736048177, - 21645182.48414714, - 23933206.451734085 + 448777293.557613, + 461280030.79376423, + 458043464.01659936, + 445888770.8277632, + 432937173.9529852 + ], + "implementation": "quic-go", + "version": "v0.34", + "transportStack": "quic-v1" + }, + { + "result": [ + 21889412.52101773, + 23504449.538378894, + 20908064.473324146, + 21953690.200359866, + 23269158.332127962 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -108,11 +132,11 @@ }, { "result": [ - 61102162.20841612, - 54729708.83313513, - 56295578.18206124, - 36830452.12378539, - 49140084.48640002 + 73022095.1847857, + 76160978.80535968, + 59148624.01441467, + 70576374.51409109, + 63773177.19255882 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -120,11 +144,11 @@ }, { "result": [ - 22004219.352436535, - 20360608.348313875, - 20307238.416551843, - 23224103.48448984, - 21804939.700141765 + 22587624.866531868, + 24414898.66335401, + 23811463.163371466, + 23547219.7773905, + 23205415.833136484 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -132,11 +156,11 @@ }, { "result": [ - 565206615.0914382, - 552048564.9754207, - 566336025.6309482, - 536528916.6219866, - 550925357.413946 + 550828439.6740036, + 589309740.2823771, + 558223397.0865445, + 611508833.8583512, + 558398694.4397224 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -144,11 +168,11 @@ }, { "result": [ - 290975609.214642, - 285034167.642309, - 270358487.8064848, - 290322884.3128471, - 301395769.4258094 + 293112703.62440014, + 282399739.03146064, + 281159493.05536443, + 288963835.2215322, + 263303217.0979503 ], "implementation": "https", "version": "v0.1", @@ -156,11 +180,11 @@ }, { "result": [ - 266913680.74652013, - 249876426.17774028, - 289400328.90854543, - 283239214.10528994, - 273524793.9851862 + 249851389.70506987, + 259195569.39946565, + 269336124.61948353, + 278082719.5022667, + 276514656.8186941 ], "implementation": "go-libp2p", "version": "v0.27", @@ -168,11 +192,11 @@ }, { "result": [ - 622977854.4751083, - 609599375.1550595, - 602416788.7738562, - 618645789.0075171, - 632490240.0137044 + 624211179.4161563, + 619019630.4584877, + 631530908.027894, + 633759543.7624654, + 656258972.2515203 ], "implementation": "go-libp2p", "version": "v0.27", @@ -186,106 +210,213 @@ "results": [ { "result": [ - 0.121668012, - 0.123000392, - 0.127693453, - 0.123231776, - 0.123124538, - 0.125658405, - 0.120361009, - 0.126443177, - 0.128725699, - 0.121334477, - 0.12831772, - 0.117532734, - 0.118266945, - 0.130229082, - 0.126765808, - 0.125253034, - 0.123286472, - 0.126963299, - 0.124444743, - 0.126882678, - 0.126614962, - 0.127512811, - 0.122462116, - 0.121208318, - 0.124182478, - 0.12505566, - 0.121931139, - 0.122974075, - 0.125640081, - 0.126845649, - 0.12271998, - 0.128926577, - 0.120380985, - 0.125778955, - 0.123167886, - 0.121142183, - 0.122787015, - 0.116969866, - 0.12120843, - 0.117270687, - 0.126814855, - 0.121397685, - 0.127229493, - 0.122751628, - 0.123687011, - 0.120407503, - 0.120348949, - 0.126937061, - 0.127140672, - 0.121615844, - 0.126490974, - 0.118205311, - 0.124128839, - 0.128267264, - 0.122984583, - 0.120176646, - 0.127905556, - 0.124160334, - 0.119235456, - 0.126607342, - 0.118668612, - 0.122134476, - 0.127110837, - 0.120589302, - 0.128735324, - 0.127164689, - 0.118998502, - 0.124764522, - 0.116193189, - 0.128063609, - 0.128245819, - 0.126933977, - 0.120283207, - 0.118072403, - 0.125990765, - 0.119276354, - 0.124195797, - 0.123102047, - 0.122362328, - 0.121438051, - 0.128272019, - 0.120334685, - 0.123455526, - 0.124274642, - 0.129863493, - 0.121329692, - 0.126005196, - 0.125203923, - 0.124486318, - 0.126084956, - 0.122785597, - 0.123777539, - 0.127155058, - 0.124022086, - 0.125246687, - 0.121254402, - 0.126043768, - 0.121255262, - 0.128978981, - 0.122426607 + 0.061844, + 0.060812, + 0.064498, + 0.064043, + 0.061386, + 0.060946, + 0.06238, + 0.061818, + 0.064433, + 0.06274, + 0.061558, + 0.063609, + 0.060651, + 0.06147, + 0.061429, + 0.059969, + 0.062733, + 0.064341, + 0.063715, + 0.061319, + 0.061088, + 0.063286, + 0.060601, + 0.063792, + 0.060162, + 0.060262, + 0.063832, + 0.062896, + 0.063419, + 0.059286, + 0.063057, + 0.063882, + 0.060774, + 0.062657, + 0.060985, + 0.063732, + 0.060174, + 0.063188, + 0.06291, + 0.061847, + 0.061211, + 0.062445, + 0.060822, + 0.064912, + 0.060225, + 0.062747, + 0.062336, + 0.060193, + 0.06219, + 0.063041, + 0.063504, + 0.062863, + 0.063858, + 0.064987, + 0.062832, + 0.06187, + 0.058821, + 0.064135, + 0.060797, + 0.060238, + 0.061865, + 0.064013, + 0.06353, + 0.063741, + 0.064215, + 0.061853, + 0.058321, + 0.061557, + 0.061819, + 0.063638, + 0.062889, + 0.06219, + 0.061522, + 0.05992, + 0.060657, + 0.063387, + 0.065381, + 0.06112, + 0.061093, + 0.063451, + 0.060852, + 0.062248, + 0.06378, + 0.062359, + 0.063149, + 0.061366, + 0.062292, + 0.061705, + 0.064492, + 0.062759, + 0.063921, + 0.06357, + 0.061255, + 0.063653, + 0.063414, + 0.061371, + 0.060681, + 0.064536, + 0.064871, + 0.06347 + ], + "implementation": "quic-go", + "version": "v0.34", + "transportStack": "quic-v1" + }, + { + "result": [ + 0.128810821, + 0.11895941, + 0.121518826, + 0.124296826, + 0.125208181, + 0.12756805, + 0.120218913, + 0.122111868, + 0.125701156, + 0.128772417, + 0.121938049, + 0.126827548, + 0.124940291, + 0.12381437, + 0.127521897, + 0.128542032, + 0.121752046, + 0.126816558, + 0.123061619, + 0.126796245, + 0.126958498, + 0.127067322, + 0.128637924, + 0.121366327, + 0.126631675, + 0.125409446, + 0.117889903, + 0.126985695, + 0.126790753, + 0.124978339, + 0.127043732, + 0.126684459, + 0.125256476, + 0.12225627, + 0.124115083, + 0.117041588, + 0.125262189, + 0.128967085, + 0.129031031, + 0.125112407, + 0.126721055, + 0.125143915, + 0.118668622, + 0.124310869, + 0.125345777, + 0.126870855, + 0.121538119, + 0.124655614, + 0.126279941, + 0.118298183, + 0.123611112, + 0.125974278, + 0.128103987, + 0.121444203, + 0.122595101, + 0.122275104, + 0.127966845, + 0.124962452, + 0.126072013, + 0.125261719, + 0.124279103, + 0.129820791, + 0.123115944, + 0.125915587, + 0.122744207, + 0.124320676, + 0.124873046, + 0.12493174, + 0.122274751, + 0.12794246, + 0.12869228, + 0.129485812, + 0.126240319, + 0.128042359, + 0.122645822, + 0.124983185, + 0.124049422, + 0.124562946, + 0.121831357, + 0.125692616, + 0.127252645, + 0.124477347, + 0.126989965, + 0.123457347, + 0.127158966, + 0.119774957, + 0.12809126, + 0.122892908, + 0.122387428, + 0.129058154, + 0.127130387, + 0.126774223, + 0.125051486, + 0.128280643, + 0.124146519, + 0.126507378, + 0.124358351, + 0.127251832, + 0.128305745, + 0.122038288 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -293,106 +424,106 @@ }, { "result": [ - 0.126883463, - 0.12538224, - 0.123134364, - 0.12737136, - 0.121799092, - 0.124956805, - 0.126123851, - 0.117873119, - 0.125493333, - 0.121649485, - 0.126709666, - 0.11942479, - 0.124546341, - 0.118529438, - 0.116460941, - 0.12572109, - 0.123938435, - 0.125756721, - 0.128857506, - 0.126463729, - 0.122223522, - 0.12583961, - 0.120286306, - 0.128311277, - 0.125954085, - 0.121983192, - 0.124060722, - 0.122538973, - 0.126785897, - 0.120957402, - 0.123502961, - 0.123830362, - 0.124850685, - 0.126366687, - 0.120130544, - 0.118665904, - 0.125876896, - 0.128981173, - 0.120752317, - 0.124941562, - 0.123956285, - 0.124938191, - 0.124663306, - 0.124846437, - 0.126677991, - 0.124822669, - 0.127923591, - 0.124036037, - 0.123910824, - 0.126894403, - 0.123577666, - 0.120992105, - 0.123911974, - 0.124894422, - 0.122978923, - 0.121060815, - 0.122954924, - 0.127416864, - 0.119421557, - 0.125364864, - 0.120559324, - 0.124617211, - 0.124722713, - 0.119713567, - 0.127457278, - 0.125679225, - 0.11973738, - 0.127460038, - 0.125684705, - 0.122846931, - 0.127471934, - 0.123463713, - 0.120471438, - 0.125448357, - 0.121660507, - 0.127548786, - 0.125639927, - 0.120749636, - 0.126304243, - 0.125666811, - 0.121775029, - 0.123253337, - 0.122788874, - 0.125393396, - 0.124702624, - 0.126657172, - 0.122066806, - 0.126401868, - 0.122805884, - 0.12097563, - 0.126559744, - 0.12702369, - 0.12677153, - 0.12554372, - 0.118692872, - 0.121635023, - 0.117703287, - 0.126238107, - 0.118291747, - 0.121902887 + 0.121638386, + 0.126176593, + 0.122701884, + 0.120434531, + 0.118521181, + 0.123873272, + 0.128721155, + 0.12317771, + 0.127206924, + 0.120766014, + 0.120428003, + 0.118290338, + 0.122757969, + 0.126194686, + 0.11985839, + 0.120956738, + 0.121434572, + 0.127416901, + 0.123697882, + 0.121804597, + 0.11774889, + 0.121356171, + 0.128687138, + 0.129935159, + 0.123232552, + 0.127086408, + 0.129637441, + 0.125922799, + 0.12695309, + 0.127842447, + 0.12484894, + 0.121894497, + 0.122919246, + 0.128477556, + 0.127059562, + 0.130036115, + 0.120669102, + 0.122980392, + 0.120594058, + 0.123719685, + 0.122860411, + 0.128217367, + 0.125800635, + 0.127461002, + 0.124600686, + 0.128388792, + 0.117979162, + 0.1270774, + 0.120534055, + 0.125575045, + 0.129278222, + 0.124919488, + 0.118470678, + 0.122680309, + 0.123463389, + 0.122419104, + 0.127479313, + 0.124849304, + 0.12502092, + 0.126722165, + 0.119884909, + 0.12099244, + 0.126538594, + 0.119638965, + 0.126270377, + 0.120434169, + 0.117883688, + 0.129403025, + 0.129336352, + 0.1283931, + 0.124971981, + 0.128905604, + 0.128751375, + 0.119683761, + 0.126156156, + 0.119506494, + 0.130266613, + 0.125890439, + 0.123997921, + 0.124674051, + 0.124586697, + 0.123641013, + 0.128439877, + 0.127489288, + 0.118514586, + 0.121378506, + 0.128853261, + 0.124959584, + 0.127574412, + 0.118657886, + 0.116321579, + 0.121985042, + 0.121523185, + 0.126034191, + 0.125356225, + 0.127142548, + 0.123616072, + 0.118618765, + 0.125074252, + 0.128771719 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -400,106 +531,106 @@ }, { "result": [ - 0.124315652, - 0.121658459, - 0.121978059, - 0.125725367, - 0.123770634, - 0.126169429, - 0.125424312, - 0.126852017, - 0.12691487, - 0.123335063, - 0.128619882, - 0.129003958, - 0.128305455, - 0.123803246, - 0.127337054, - 0.119584031, - 0.123829083, - 0.121247496, - 0.123342974, - 0.125432113, - 0.12390778, - 0.123019476, - 0.128228822, - 0.122530866, - 0.121467182, - 0.120360188, - 0.126406114, - 0.123919693, - 0.12061101, - 0.127078076, - 0.12518106, - 0.11663799, - 0.119261925, - 0.126347965, - 0.124364942, - 0.125407826, - 0.126926461, - 0.127437222, - 0.123449448, - 0.12515775, - 0.124936097, - 0.125199553, - 0.123439156, - 0.127136409, - 0.124054663, - 0.125724079, - 0.126195438, - 0.126478938, - 0.125315968, - 0.128619611, - 0.11759313, - 0.123536449, - 0.120022765, - 0.125455602, - 0.119138372, - 0.123676893, - 0.127000281, - 0.121461803, - 0.126330562, - 0.121516877, - 0.122947556, - 0.127346599, - 0.125578892, - 0.128326931, - 0.123508164, - 0.123872963, - 0.127233331, - 0.122260664, - 0.125195453, - 0.12817221, - 0.126158351, - 0.118174291, - 0.123701352, - 0.12451043, - 0.120254365, - 0.121505816, - 0.116487015, - 0.126388, - 0.128826347, - 0.118316885, - 0.123724796, - 0.12340504, - 0.123107616, - 0.12592937, - 0.126964881, - 0.12131946, - 0.126608409, - 0.124057196, - 0.127262084, - 0.121555089, - 0.128254834, - 0.122932987, - 0.119506728, - 0.124428119, - 0.128196456, - 0.125987807, - 0.1212543, - 0.127470287, - 0.122801434, - 0.122770552 + 0.124661061, + 0.12666085, + 0.124948202, + 0.124568833, + 0.124045992, + 0.128241753, + 0.123874733, + 0.124012789, + 0.12073158, + 0.118419749, + 0.126962943, + 0.12367641, + 0.124317628, + 0.126468435, + 0.121397857, + 0.123537256, + 0.122644366, + 0.121047882, + 0.12132538, + 0.13005451, + 0.125769741, + 0.12357725, + 0.121436973, + 0.123244156, + 0.125518943, + 0.123490337, + 0.121295528, + 0.122848631, + 0.12384361, + 0.125602128, + 0.125866821, + 0.125491231, + 0.123595256, + 0.12107832, + 0.123667392, + 0.128148293, + 0.128210277, + 0.125481915, + 0.118185453, + 0.11910785, + 0.122465858, + 0.123394574, + 0.128029041, + 0.124013094, + 0.116141826, + 0.126822987, + 0.122071701, + 0.127476779, + 0.126545798, + 0.122637859, + 0.119323896, + 0.127275786, + 0.125091818, + 0.126719698, + 0.121606431, + 0.115832786, + 0.128450729, + 0.127843301, + 0.126985324, + 0.122380118, + 0.124166746, + 0.1254551, + 0.128034204, + 0.12526099, + 0.12823865, + 0.124217197, + 0.126298442, + 0.128756156, + 0.127425191, + 0.123403441, + 0.123417427, + 0.123691094, + 0.12834209, + 0.125943255, + 0.118467554, + 0.127053317, + 0.119377459, + 0.122853148, + 0.121472273, + 0.126035102, + 0.123128685, + 0.126970231, + 0.122753662, + 0.127354454, + 0.128136556, + 0.121278536, + 0.123023842, + 0.122975992, + 0.125964641, + 0.130141845, + 0.127186949, + 0.123113166, + 0.128091911, + 0.125129569, + 0.123579311, + 0.120344549, + 0.121655301, + 0.121349649, + 0.122655619, + 0.126600143 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -507,106 +638,106 @@ }, { "result": [ - 0.118557407, - 0.129367487, - 0.119667651, - 0.123787099, - 0.124614605, - 0.126707798, - 0.125840916, - 0.120444265, - 0.12205183, - 0.124644079, - 0.130191262, - 0.123519664, - 0.120409353, - 0.119216634, - 0.13010538, - 0.129412402, - 0.125457409, - 0.121830064, - 0.116368955, - 0.126860624, - 0.122762401, - 0.124907365, - 0.125346021, - 0.122297674, - 0.123740161, - 0.128776767, - 0.123239408, - 0.126187867, - 0.122735079, - 0.124247599, - 0.127077167, - 0.121880016, - 0.120792907, - 0.12624767, - 0.12706203, - 0.120769749, - 0.123950089, - 0.126547698, - 0.122498339, - 0.13030589, - 0.127540126, - 0.127620897, - 0.121705058, - 0.116058129, - 0.11973295, - 0.123976842, - 0.121005913, - 0.119776725, - 0.124884126, - 0.129121972, - 0.123586335, - 0.120923489, - 0.123787504, - 0.118007633, - 0.119975299, - 0.122552093, - 0.122987026, - 0.122106037, - 0.124946365, - 0.128078508, - 0.126071297, - 0.124684977, - 0.12712083, - 0.125258097, - 0.128768189, - 0.119691682, - 0.122145987, - 0.122636323, - 0.13038191, - 0.121972787, - 0.1174422, - 0.11857174, - 0.116670902, - 0.128806601, - 0.124499407, - 0.125594701, - 0.125389813, - 0.126210369, - 0.118511957, - 0.127048302, - 0.128654269, - 0.122661261, - 0.121244321, - 0.125613825, - 0.130503486, - 0.123771742, - 0.12196481, - 0.119953257, - 0.124347784, - 0.127777435, - 0.127985077, - 0.129983758, - 0.125692298, - 0.119680827, - 0.12266069, - 0.129236188, - 0.125723596, - 0.126052517, - 0.127762187, - 0.129383432 + 0.12684016, + 0.12787694, + 0.118462224, + 0.123904218, + 0.126477623, + 0.123935841, + 0.126778081, + 0.125846043, + 0.123029594, + 0.126034621, + 0.12726689, + 0.123164857, + 0.121562369, + 0.122446596, + 0.123654836, + 0.128929269, + 0.123165163, + 0.122616732, + 0.123250636, + 0.118295773, + 0.118681742, + 0.126558261, + 0.124888273, + 0.129237733, + 0.125315486, + 0.127766617, + 0.127644897, + 0.125945531, + 0.126859267, + 0.123596342, + 0.125339725, + 0.123815043, + 0.118871193, + 0.122167573, + 0.125805479, + 0.126346935, + 0.119080207, + 0.126124759, + 0.121023049, + 0.120482238, + 0.126161436, + 0.124227892, + 0.123465022, + 0.126162075, + 0.123742666, + 0.130353991, + 0.126821519, + 0.12448274, + 0.119747123, + 0.127110177, + 0.129082529, + 0.125762343, + 0.126044395, + 0.125685232, + 0.121161191, + 0.125794005, + 0.122526251, + 0.126052182, + 0.127597427, + 0.127996277, + 0.127985791, + 0.121157802, + 0.125318645, + 0.125642869, + 0.125664951, + 0.125770543, + 0.121862972, + 0.125665932, + 0.125496173, + 0.117887783, + 0.124100852, + 0.125700708, + 0.12191504, + 0.125854908, + 0.124363339, + 0.128333875, + 0.123947871, + 0.122178828, + 0.127100456, + 0.123816263, + 0.126165053, + 0.126485832, + 0.121735062, + 0.126152413, + 0.120870896, + 0.125941683, + 0.127820166, + 0.123999461, + 0.12476956, + 0.122320644, + 0.125705821, + 0.125773358, + 0.126226384, + 0.118833228, + 0.126462616, + 0.127197668, + 0.123003866, + 0.118915038, + 0.127497232, + 0.124705971 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -614,106 +745,106 @@ }, { "result": [ - 0.18508218, - 0.17827375, - 0.19396462, - 0.18589123, - 0.19046028, - 0.1881602, - 0.18642539, - 0.1828627, - 0.18226781, - 0.1905887, - 0.18362504, - 0.18692651, - 0.18103275, - 0.18688953, - 0.17596821, - 0.18337077, - 0.19246833, - 0.18802053, - 0.18150024, - 0.19313905, - 0.18757653, - 0.18504354, - 0.18139851, - 0.18307193, - 0.18498154, - 0.18468052, - 0.1806075, - 0.18616264, - 0.188107, - 0.18439338, - 0.1845541, - 0.18922906, - 0.18627962, - 0.18337129, - 0.185091, - 0.19043624, - 0.18413623, - 0.17684413, - 0.19268216, - 0.18940519, - 0.1918334, - 0.18848182, - 0.19122635, - 0.18842778, - 0.18248205, - 0.18743384, - 0.18937829, - 0.18610607, - 0.17816359, - 0.1898336, - 0.1831328, - 0.18520987, - 0.18742532, - 0.17631459, - 0.1826238, - 0.18826276, - 0.18738666, - 0.18630262, - 0.18808877, - 0.1941709, - 0.18078187, - 0.18140486, - 0.1902356, - 0.18131192, - 0.19120483, - 0.19176443, - 0.18443212, - 0.18308993, - 0.18747921, - 0.1781338, - 0.19196792, - 0.18435647, - 0.18590584, - 0.18536775, - 0.18091542, - 0.18665215, - 0.18698396, - 0.18342577, - 0.18887636, - 0.17977275, - 0.18322293, - 0.1806967, - 0.18432827, - 0.17821229, - 0.1867172, - 0.18280798, - 0.19545014, - 0.17992744, - 0.18349244, - 0.18148965, - 0.1886546, - 0.18667959, - 0.18530564, - 0.18633217, - 0.18802744, - 0.1814845, - 0.18673931, - 0.18262185, - 0.19048353, - 0.18660142 + 0.18501733, + 0.18923008, + 0.18049216, + 0.19340678, + 0.1861875, + 0.1914942, + 0.18575798, + 0.19520913, + 0.18010223, + 0.19124515, + 0.1811332, + 0.19085026, + 0.18030554, + 0.18751548, + 0.183921, + 0.18907401, + 0.19030528, + 0.18198135, + 0.178762, + 0.1883241, + 0.18783239, + 0.188024, + 0.18608308, + 0.19024466, + 0.18471646, + 0.19437698, + 0.19007832, + 0.19379516, + 0.19018622, + 0.18439801, + 0.19320713, + 0.1921831, + 0.18576838, + 0.18736668, + 0.18765777, + 0.18439884, + 0.18509425, + 0.18425712, + 0.19181487, + 0.17813952, + 0.1922556, + 0.18742092, + 0.18172316, + 0.19022168, + 0.1865288, + 0.19128017, + 0.19162115, + 0.19370575, + 0.18444578, + 0.18895054, + 0.19003198, + 0.18962732, + 0.1905909, + 0.17974056, + 0.18016237, + 0.19035481, + 0.19284406, + 0.18282667, + 0.18866986, + 0.18624999, + 0.18460633, + 0.19283867, + 0.19002372, + 0.1847342, + 0.1893068, + 0.19573985, + 0.18462518, + 0.18524133, + 0.17935291, + 0.19063331, + 0.186608, + 0.18565576, + 0.1804417, + 0.1870286, + 0.19152515, + 0.19481224, + 0.18663289, + 0.18008529, + 0.18801773, + 0.17731303, + 0.1862143, + 0.19154595, + 0.17947997, + 0.19300668, + 0.18554401, + 0.18398392, + 0.18498778, + 0.19375242, + 0.18138859, + 0.1811724, + 0.18747015, + 0.18788917, + 0.1776267, + 0.18833229, + 0.19307281, + 0.19632874, + 0.18851216, + 0.1914809, + 0.18993904, + 0.1906922 ], "implementation": "https", "version": "v0.1", @@ -721,106 +852,106 @@ }, { "result": [ - 0.1209757, - 0.06461716, - 0.12208053, - 0.12628755, - 0.06423461, - 0.06466026, - 0.064468525, - 0.06150949, - 0.11556627, - 0.061117724, - 0.058900986, - 0.061541364, - 0.06421713, - 0.122391485, - 0.11854764, - 0.062412735, - 0.06344445, - 0.061374705, - 0.12119607, - 0.062948525, - 0.06296972, - 0.12764546, - 0.11927321, - 0.0638416, - 0.061785944, - 0.12657091, - 0.1185081, - 0.06205789, - 0.11753894, - 0.061609462, - 0.06306059, - 0.06364906, - 0.06057426, - 0.060378436, - 0.12644039, - 0.12533869, - 0.060731113, - 0.06401904, - 0.059758253, - 0.12701069, - 0.060719486, - 0.06508966, - 0.06079837, - 0.06062171, - 0.06261868, - 0.06443974, - 0.06011311, - 0.12656412, - 0.065150805, - 0.06208207, - 0.12525532, - 0.061621383, - 0.12625502, - 0.06314558, - 0.062638484, - 0.11895386, - 0.12088632, - 0.06210899, - 0.11629793, - 0.12670578, - 0.12395031, - 0.0617258, - 0.12547764, - 0.06341616, - 0.1256299, - 0.12809217, - 0.12414447, - 0.12216654, - 0.06081755, - 0.12818258, - 0.06282046, - 0.0627884, - 0.06078054, - 0.11904393, - 0.058164127, - 0.12659164, - 0.12188251, - 0.1282394, - 0.06425848, - 0.12467589, - 0.06436521, - 0.06368547, - 0.06265833, - 0.05915497, - 0.1225124, - 0.063117616, - 0.12640329, - 0.1262788, - 0.060370248, - 0.06139333, - 0.060157556, - 0.12261276, - 0.06478592, - 0.11583861, - 0.06183816, - 0.059078258, - 0.064146996, - 0.058531176, - 0.118616395, - 0.11897062 + 0.12175053, + 0.12605117, + 0.062221505, + 0.064337306, + 0.06010179, + 0.12711148, + 0.064213164, + 0.06219794, + 0.0616432, + 0.06224148, + 0.12437741, + 0.124406956, + 0.123852775, + 0.06070982, + 0.061578356, + 0.12111463, + 0.061252847, + 0.062286936, + 0.12250666, + 0.124051794, + 0.12347304, + 0.12263592, + 0.061597213, + 0.12196436, + 0.12330579, + 0.12485951, + 0.065018356, + 0.1218975, + 0.06416536, + 0.123087086, + 0.11792626, + 0.06486279, + 0.063403375, + 0.12562172, + 0.12446013, + 0.12691544, + 0.061206095, + 0.12253202, + 0.06276382, + 0.0628887, + 0.12503381, + 0.12402258, + 0.12443091, + 0.06201959, + 0.124864705, + 0.06484924, + 0.12805285, + 0.12085704, + 0.0625735, + 0.06436527, + 0.061899476, + 0.0617264, + 0.060473114, + 0.121796444, + 0.060230102, + 0.1189248, + 0.061669014, + 0.12606362, + 0.11739062, + 0.059744567, + 0.063605405, + 0.12625213, + 0.05962251, + 0.062324256, + 0.061505187, + 0.062143754, + 0.12310354, + 0.1262308, + 0.064093925, + 0.06264479, + 0.06223176, + 0.061603207, + 0.06411232, + 0.1216119, + 0.120782696, + 0.12754712, + 0.06035197, + 0.06186887, + 0.061882492, + 0.123415925, + 0.12336662, + 0.060795, + 0.1256234, + 0.12385519, + 0.121189505, + 0.06292543, + 0.06396173, + 0.063336305, + 0.061943702, + 0.12251919, + 0.12286289, + 0.0646475, + 0.06282486, + 0.059680667, + 0.11962047, + 0.122115314, + 0.061046507, + 0.11942746, + 0.12901482, + 0.061321888 ], "implementation": "go-libp2p", "version": "v0.27", @@ -828,106 +959,106 @@ }, { "result": [ - 0.06345447, - 0.061587356, - 0.06172834, - 0.063658975, - 0.062401403, - 0.06272092, - 0.062954806, - 0.061134584, - 0.06287806, - 0.059102934, - 0.061779834, - 0.059013218, - 0.063302524, - 0.06478104, - 0.063023314, - 0.064325534, - 0.06295493, - 0.06332099, - 0.06492679, - 0.06060422, - 0.0626502, - 0.062015872, - 0.062239226, - 0.06217321, - 0.061391417, - 0.06288373, - 0.05990264, - 0.06327026, - 0.061320774, - 0.06497625, - 0.062249515, - 0.063625515, - 0.06403047, - 0.06253672, - 0.062313348, - 0.064202726, - 0.06206468, - 0.063333996, - 0.060909577, - 0.06468787, - 0.061171666, - 0.06333959, - 0.05857594, - 0.061285447, - 0.06001074, - 0.061667416, - 0.0626718, - 0.062484693, - 0.061498515, - 0.06310085, - 0.0616859, - 0.060247444, - 0.061949845, - 0.062382776, - 0.0649927, - 0.06444447, - 0.0637225, - 0.062274076, - 0.06135238, - 0.061473493, - 0.06365285, - 0.061756827, - 0.061779466, - 0.061847936, - 0.061907496, - 0.061833415, - 0.06341758, - 0.061410118, - 0.058665663, - 0.06232912, - 0.060347583, - 0.06289555, - 0.061114322, - 0.060711324, - 0.060766414, - 0.06345203, - 0.0639523, - 0.059675116, - 0.059893943, - 0.063581206, - 0.064657755, - 0.059562646, - 0.06305082, - 0.06067777, - 0.06356179, - 0.060934655, - 0.0634944, - 0.0639623, - 0.06420106, - 0.063125364, - 0.059076265, - 0.060855072, - 0.060172576, - 0.06149475, - 0.061990738, - 0.062807135, - 0.06066843, - 0.061482836, - 0.059808012, - 0.062721476 + 0.06355237, + 0.060595006, + 0.057849895, + 0.06282445, + 0.06296295, + 0.062263384, + 0.061361652, + 0.06254827, + 0.06433191, + 0.06295908, + 0.06020783, + 0.06206818, + 0.06415346, + 0.061035052, + 0.062093258, + 0.06068142, + 0.062790394, + 0.061855037, + 0.064258575, + 0.06315244, + 0.060516555, + 0.062103324, + 0.06264966, + 0.06414131, + 0.06311047, + 0.0625298, + 0.061776433, + 0.06273881, + 0.06170282, + 0.06281448, + 0.062988296, + 0.061229974, + 0.062824264, + 0.063056946, + 0.061289493, + 0.0618638, + 0.06419081, + 0.062534384, + 0.06306849, + 0.061164565, + 0.061782323, + 0.060750503, + 0.06232041, + 0.062688634, + 0.06288993, + 0.061291166, + 0.060801283, + 0.06262256, + 0.05938406, + 0.06302028, + 0.060640726, + 0.06088046, + 0.06421143, + 0.058525525, + 0.06261851, + 0.06381055, + 0.060679577, + 0.06420371, + 0.062607035, + 0.06299439, + 0.061227873, + 0.06349264, + 0.06293519, + 0.061481, + 0.06365487, + 0.06260477, + 0.061818447, + 0.06258338, + 0.06283006, + 0.062424313, + 0.060585, + 0.06441027, + 0.05968948, + 0.061911583, + 0.061627526, + 0.0635312, + 0.060969494, + 0.062054284, + 0.061562333, + 0.058623374, + 0.06401842, + 0.062325384, + 0.064899884, + 0.061992045, + 0.060320485, + 0.063530885, + 0.06308903, + 0.06090222, + 0.061143447, + 0.05967578, + 0.061819967, + 0.062941566, + 0.06371909, + 0.062264062, + 0.064133525, + 0.06456559, + 0.062039033, + 0.062669404, + 0.06257181, + 0.061231002 ], "implementation": "go-libp2p", "version": "v0.27", diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 3e5e44917..9af037532 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -70,7 +70,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench const killSTDOUT = execCommand(killCMD); console.error(killSTDOUT); - let serverCMD = `ssh ec2-user@${args.serverPublicIP} 'nohup ./impl/${version.implementation}/${version.id}/perf --run-server --secret-key-seed 0 > server.log 2>&1 & echo \$! > pidfile '`; + let serverCMD = `ssh ec2-user@${args.serverPublicIP} 'nohup ./impl/${version.implementation}/${version.id}/perf --run-server --server-address 0.0.0.0:4001 --secret-key-seed 0 > server.log 2>&1 & echo \$! > pidfile '`; const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); @@ -129,7 +129,7 @@ interface Latencies { function runClient(args: ArgsRunBenchmark): Latencies { console.error(`=== Starting client ${args.implementation}/${args.id}/${args.transportStack}`); - const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-ip-address ${args.serverPublicIP} --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes}` + const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-address ${args.serverPublicIP}:4001 --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes}` const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` const stdout = execCommand(cmd); diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 7274fea81..e43e95e6d 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,10 +1,15 @@ export type Version = { id: string, - implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https", + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https" | "quic-go", transportStacks: string[], } export const versions: Array = [ + { + id: "v0.34", + implementation: "quic-go", + transportStacks: ["quic-v1"] + }, { id: "v0.52", implementation: "rust-libp2p", From d6a7cd108bc7a10dac9eb1d6cfd2c36be245b75e Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 15 May 2023 11:57:00 +0300 Subject: [PATCH 082/101] simplify code for the HTTPS perf impl --- perf/impl/https/v0.1/main.go | 48 ++++++++++++++---------------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index f2524d22c..b0b2a0f4b 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -15,6 +15,7 @@ import ( "fmt" "io" "io/ioutil" + "log" "math/big" "net" "net/http" @@ -28,9 +29,8 @@ const ( func handleRequest(w http.ResponseWriter, r *http.Request) { // Read the big-endian bytesToSend value var bytesToSend uint64 - err := binary.Read(r.Body, binary.BigEndian, &bytesToSend) - if err != nil { - http.Error(w, "Failed to read u64 value", http.StatusBadRequest) + if err := binary.Read(r.Body, binary.BigEndian, &bytesToSend); err != nil { + http.Error(w, "failed to read uint64 value", http.StatusBadRequest) return } @@ -54,9 +54,7 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { } } -func runClient(serverAddr string, uploadBytes, downloadBytes uint64) ([]time.Duration, error) { - durations := make([]time.Duration, 1) - +func runClient(serverAddr string, uploadBytes, downloadBytes uint64) (time.Duration, error) { client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ @@ -71,22 +69,19 @@ func runClient(serverAddr string, uploadBytes, downloadBytes uint64) ([]time.Dur startTime := time.Now() resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) if err != nil { - return durations, err + return 0, err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - fmt.Printf("Error reading response: %v\n", err) - return durations, err - } else if uint64(len(respBody)) != downloadBytes { - fmt.Printf("Expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) - return durations, err + return 0, fmt.Errorf("error reading response: %w\n", err) + } + defer resp.Body.Close() + if uint64(len(respBody)) != downloadBytes { + return 0, fmt.Errorf("expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) } - resp.Body.Close() - - durations[0] = time.Since(startTime) - return durations, nil + return time.Since(startTime), nil } func generateEphemeralCertificate() (tls.Certificate, error) { @@ -141,7 +136,7 @@ func generateEphemeralCertificate() (tls.Certificate, error) { } type Latencies struct { - Latencies []float32 `json:"latencies"` + Latencies []float64 `json:"latencies"` } func main() { @@ -157,8 +152,7 @@ func main() { // Generate an ephemeral TLS certificate and private key cert, err := generateEphemeralCertificate() if err != nil { - fmt.Printf("Error generating ephemeral certificate: %v\n", err) - return + log.Fatalf("Error generating ephemeral certificate: %v\n", err) } // Create a new HTTPS server with the ephemeral certificate @@ -179,31 +173,25 @@ func main() { } else { // Client mode if *serverAddr == "" { - fmt.Println("Error: Please provide valid server-address flags for client mode.") - return + flag.Usage() + log.Fatal("Error: Please provide valid server-address flags for client mode.") } // Run the client and print the results - durations, err := runClient(*serverAddr, *uploadBytes, *downloadBytes) + d, err := runClient(*serverAddr, *uploadBytes, *downloadBytes) if err != nil { - panic(err) + log.Fatal(err) } // Convert durations to seconds and marshal as JSON - timesS := make([]float32, 0, len(durations)) - for _, d := range durations { - timesS = append(timesS, float32(d.Seconds())) - } - latencies := Latencies{ - Latencies: timesS, + Latencies: []float64{d.Seconds()}, } jsonB, err := json.Marshal(latencies) if err != nil { panic(err) } - fmt.Println(string(jsonB)) } } From eff32dec610b416a85b94a88af7cec49bad7e179 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 17 May 2023 13:39:11 +0900 Subject: [PATCH 083/101] Run ping and iperf and commit results --- perf/runner/benchmark-results.json | 1932 ++++++++++++---------- perf/runner/src/benchmark-result-type.ts | 12 + perf/runner/src/index.ts | 122 +- perf/terraform/user-data.sh | 6 +- 4 files changed, 1158 insertions(+), 914 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 8be09bbc4..5d6d59bc2 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,11 +6,11 @@ "results": [ { "result": [ - 435320241.80629236, - 462446477.6844952, - 475363041.5589508, - 509933685.4627763, - 471298443.2210251 + 474417794.4677891, + 462379438.94531333, + 474882957.87389225, + 472889626.4961351, + 462063624.4358198 ], "implementation": "quic-go", "version": "v0.34", @@ -18,11 +18,11 @@ }, { "result": [ - 23381807.27959374, - 21901887.85143298, - 23537633.11975275, - 21586885.43245907, - 23600338.194453776 + 22559790.023022857, + 23524227.44536793, + 23250305.27441416, + 21922422.459196728, + 23649472.46812365 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -30,11 +30,11 @@ }, { "result": [ - 100840537.4994737, - 38326187.69827259, - 147477357.25609776, - 45194921.52350153, - 52954165.524267666 + 97914043.1904787, + 62144199.76990087, + 63872198.500458345, + 53970207.98926865, + 53260172.94150097 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -42,11 +42,11 @@ }, { "result": [ - 24161158.138433795, - 24192381.68011527, - 23879046.91163901, - 23570392.07680671, - 21379295.93906058 + 23515757.013399474, + 20215257.089284617, + 21073574.43878669, + 23751335.214581426, + 23870734.957599763 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -54,11 +54,11 @@ }, { "result": [ - 573591970.784021, - 604555310.7696401, - 607828595.438483, - 591819193.9918051, - 588437784.4712127 + 585071224.6885961, + 564122883.0005387, + 601602222.2636776, + 573379487.0183829, + 593773818.090205 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -66,11 +66,11 @@ }, { "result": [ - 292021799.78984165, - 315032597.9525266, - 309568924.0421708, - 303076027.62170845, - 309355291.00080323 + 307504345.4815674, + 307049864.1607806, + 305569317.1787684, + 299933512.2271783, + 309573869.6461722 ], "implementation": "https", "version": "v0.1", @@ -78,11 +78,11 @@ }, { "result": [ - 283421085.12878627, - 286352411.8697239, - 278521554.8371451, - 271417461.01803356, - 279325066.62542135 + 287800980.76480824, + 281363671.0025105, + 283999135.7410029, + 275834039.9122788, + 276217724.6617089 ], "implementation": "go-libp2p", "version": "v0.27", @@ -90,11 +90,11 @@ }, { "result": [ - 610655441.7482173, - 626991523.5963205, - 664316544.0050887, - 632857467.2598459, - 611629672.9717267 + 625064165.3990065, + 624672569.5981356, + 631085113.8804889, + 622547375.9986345, + 618318290.2512397 ], "implementation": "go-libp2p", "version": "v0.27", @@ -108,11 +108,11 @@ "results": [ { "result": [ - 448777293.557613, - 461280030.79376423, - 458043464.01659936, - 445888770.8277632, - 432937173.9529852 + 448653441.94081503, + 463726224.559235, + 462576532.17370397, + 453282684.05169034, + 454557218.14672446 ], "implementation": "quic-go", "version": "v0.34", @@ -120,11 +120,11 @@ }, { "result": [ - 21889412.52101773, - 23504449.538378894, - 20908064.473324146, - 21953690.200359866, - 23269158.332127962 + 24272938.352030843, + 23612409.98601879, + 23889319.88239235, + 19732456.44340771, + 22556224.638749085 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -132,11 +132,11 @@ }, { "result": [ - 73022095.1847857, - 76160978.80535968, - 59148624.01441467, - 70576374.51409109, - 63773177.19255882 + 69297405.7025867, + 61729457.91142594, + 102231401.68700998, + 86695376.69219294, + 78425397.4811756 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -144,11 +144,11 @@ }, { "result": [ - 22587624.866531868, - 24414898.66335401, - 23811463.163371466, - 23547219.7773905, - 23205415.833136484 + 23926321.026550617, + 20128513.3682652, + 20875194.244746435, + 23317750.232327037, + 20751075.591506794 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -156,11 +156,11 @@ }, { "result": [ - 550828439.6740036, - 589309740.2823771, - 558223397.0865445, - 611508833.8583512, - 558398694.4397224 + 559411761.0686907, + 571742866.2255255, + 579268122.7634223, + 570463202.2884122, + 585325675.8765239 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -168,11 +168,11 @@ }, { "result": [ - 293112703.62440014, - 282399739.03146064, - 281159493.05536443, - 288963835.2215322, - 263303217.0979503 + 291350547.4332152, + 296929637.4548476, + 291724194.3388055, + 275856537.2664585, + 293531211.03252536 ], "implementation": "https", "version": "v0.1", @@ -180,11 +180,11 @@ }, { "result": [ - 249851389.70506987, - 259195569.39946565, - 269336124.61948353, - 278082719.5022667, - 276514656.8186941 + 294573484.43656474, + 194025762.6628138, + 271838526.3971789, + 280037017.7564919, + 275937812.17766625 ], "implementation": "go-libp2p", "version": "v0.27", @@ -192,11 +192,11 @@ }, { "result": [ - 624211179.4161563, - 619019630.4584877, - 631530908.027894, - 633759543.7624654, - 656258972.2515203 + 613930753.6595503, + 607861599.6267879, + 624022469.1317983, + 611036643.079215, + 650071566.2349961 ], "implementation": "go-libp2p", "version": "v0.27", @@ -210,106 +210,106 @@ "results": [ { "result": [ + 0.064579, + 0.060944, + 0.060945, + 0.061542, + 0.063956, + 0.06269, + 0.064515, + 0.061967, + 0.062341, + 0.059849, + 0.063182, + 0.06394, + 0.059044, + 0.062294, + 0.061589, + 0.061087, + 0.063577, + 0.060209, + 0.064296, + 0.061301, + 0.062809, + 0.062883, + 0.063709, + 0.062143, + 0.062201, + 0.063141, + 0.061195, + 0.062346, + 0.060194, + 0.06118, + 0.061657, + 0.060901, + 0.064545, + 0.062013, + 0.062017, + 0.063399, + 0.061698, + 0.06354, + 0.062906, + 0.060566, + 0.062388, + 0.063037, + 0.062056, + 0.06173, + 0.061789, + 0.060722, + 0.062722, + 0.05967, + 0.06231, + 0.064521, + 0.0639, + 0.061779, + 0.059782, + 0.062073, + 0.061339, + 0.06111, + 0.06271, + 0.062378, + 0.059953, + 0.062484, + 0.064898, + 0.061991, + 0.06178, + 0.060356, + 0.061167, + 0.062737, + 0.064511, + 0.064355, + 0.061649, + 0.062309, + 0.05873, + 0.063992, + 0.060622, + 0.063957, + 0.06042, + 0.063722, + 0.065111, + 0.061298, 0.061844, - 0.060812, - 0.064498, - 0.064043, - 0.061386, - 0.060946, - 0.06238, - 0.061818, - 0.064433, - 0.06274, - 0.061558, - 0.063609, - 0.060651, - 0.06147, - 0.061429, - 0.059969, - 0.062733, - 0.064341, - 0.063715, - 0.061319, - 0.061088, - 0.063286, - 0.060601, - 0.063792, - 0.060162, - 0.060262, - 0.063832, - 0.062896, - 0.063419, - 0.059286, - 0.063057, - 0.063882, - 0.060774, - 0.062657, - 0.060985, - 0.063732, - 0.060174, - 0.063188, - 0.06291, - 0.061847, - 0.061211, - 0.062445, - 0.060822, - 0.064912, - 0.060225, - 0.062747, - 0.062336, - 0.060193, - 0.06219, - 0.063041, - 0.063504, - 0.062863, - 0.063858, - 0.064987, - 0.062832, - 0.06187, - 0.058821, - 0.064135, - 0.060797, - 0.060238, - 0.061865, - 0.064013, - 0.06353, - 0.063741, - 0.064215, - 0.061853, - 0.058321, - 0.061557, - 0.061819, - 0.063638, - 0.062889, - 0.06219, - 0.061522, - 0.05992, - 0.060657, - 0.063387, - 0.065381, - 0.06112, - 0.061093, - 0.063451, - 0.060852, - 0.062248, - 0.06378, - 0.062359, - 0.063149, - 0.061366, - 0.062292, - 0.061705, - 0.064492, - 0.062759, - 0.063921, - 0.06357, - 0.061255, - 0.063653, - 0.063414, - 0.061371, - 0.060681, - 0.064536, - 0.064871, - 0.06347 + 0.062755, + 0.059129, + 0.064224, + 0.061444, + 0.063544, + 0.061742, + 0.061421, + 0.060401, + 0.060902, + 0.060213, + 0.060572, + 0.06131, + 0.063109, + 0.062811, + 0.063055, + 0.060727, + 0.063729, + 0.060345, + 0.063429, + 0.062308, + 0.062516 ], "implementation": "quic-go", "version": "v0.34", @@ -317,106 +317,106 @@ }, { "result": [ - 0.128810821, - 0.11895941, - 0.121518826, - 0.124296826, - 0.125208181, - 0.12756805, - 0.120218913, - 0.122111868, - 0.125701156, - 0.128772417, - 0.121938049, - 0.126827548, - 0.124940291, - 0.12381437, - 0.127521897, - 0.128542032, - 0.121752046, - 0.126816558, - 0.123061619, - 0.126796245, - 0.126958498, - 0.127067322, - 0.128637924, - 0.121366327, - 0.126631675, - 0.125409446, - 0.117889903, - 0.126985695, - 0.126790753, - 0.124978339, - 0.127043732, - 0.126684459, - 0.125256476, - 0.12225627, - 0.124115083, - 0.117041588, - 0.125262189, - 0.128967085, - 0.129031031, - 0.125112407, - 0.126721055, - 0.125143915, - 0.118668622, - 0.124310869, - 0.125345777, - 0.126870855, - 0.121538119, - 0.124655614, - 0.126279941, - 0.118298183, - 0.123611112, - 0.125974278, - 0.128103987, - 0.121444203, - 0.122595101, - 0.122275104, - 0.127966845, - 0.124962452, - 0.126072013, - 0.125261719, - 0.124279103, - 0.129820791, - 0.123115944, - 0.125915587, - 0.122744207, - 0.124320676, - 0.124873046, - 0.12493174, - 0.122274751, - 0.12794246, - 0.12869228, - 0.129485812, - 0.126240319, - 0.128042359, - 0.122645822, - 0.124983185, - 0.124049422, - 0.124562946, - 0.121831357, - 0.125692616, - 0.127252645, - 0.124477347, - 0.126989965, - 0.123457347, - 0.127158966, - 0.119774957, - 0.12809126, - 0.122892908, - 0.122387428, - 0.129058154, - 0.127130387, - 0.126774223, - 0.125051486, - 0.128280643, - 0.124146519, - 0.126507378, - 0.124358351, - 0.127251832, - 0.128305745, - 0.122038288 + 0.122715925, + 0.127124448, + 0.121573012, + 0.125906511, + 0.127302257, + 0.125352371, + 0.125129702, + 0.12703777, + 0.129780454, + 0.118550991, + 0.123669909, + 0.126316689, + 0.121789977, + 0.125626583, + 0.122627308, + 0.125469638, + 0.127044056, + 0.123687654, + 0.128611206, + 0.126986414, + 0.123012026, + 0.126895423, + 0.122507683, + 0.121942506, + 0.125055835, + 0.12696239, + 0.12349714, + 0.124357935, + 0.126650479, + 0.121348162, + 0.122212146, + 0.125051765, + 0.127926954, + 0.126393692, + 0.125641423, + 0.122094834, + 0.124283215, + 0.122303441, + 0.123888695, + 0.118580559, + 0.125534447, + 0.122686587, + 0.121562405, + 0.118679206, + 0.126558623, + 0.123274264, + 0.128709089, + 0.122038062, + 0.126971841, + 0.120171029, + 0.125907948, + 0.127567269, + 0.126929345, + 0.127990138, + 0.121128658, + 0.130110072, + 0.126430485, + 0.125317296, + 0.126514898, + 0.122524788, + 0.127961859, + 0.126974916, + 0.122930433, + 0.125603056, + 0.125059727, + 0.121408205, + 0.125885733, + 0.129569046, + 0.12771782, + 0.124511652, + 0.129487102, + 0.11791064, + 0.126702346, + 0.123800182, + 0.121010069, + 0.122962977, + 0.128027393, + 0.124910468, + 0.128341771, + 0.126707544, + 0.120048588, + 0.12585114, + 0.124321148, + 0.126181425, + 0.126745848, + 0.125849498, + 0.120176737, + 0.128033079, + 0.123988207, + 0.128038394, + 0.121757578, + 0.12975601, + 0.123614173, + 0.125360164, + 0.125061549, + 0.12331277, + 0.121497094, + 0.117434269, + 0.124326885, + 0.127797534 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -424,106 +424,106 @@ }, { "result": [ - 0.121638386, - 0.126176593, - 0.122701884, - 0.120434531, - 0.118521181, - 0.123873272, - 0.128721155, - 0.12317771, - 0.127206924, - 0.120766014, - 0.120428003, - 0.118290338, - 0.122757969, - 0.126194686, - 0.11985839, - 0.120956738, - 0.121434572, - 0.127416901, - 0.123697882, - 0.121804597, - 0.11774889, - 0.121356171, - 0.128687138, - 0.129935159, - 0.123232552, - 0.127086408, - 0.129637441, - 0.125922799, - 0.12695309, - 0.127842447, - 0.12484894, - 0.121894497, - 0.122919246, - 0.128477556, - 0.127059562, - 0.130036115, - 0.120669102, - 0.122980392, - 0.120594058, - 0.123719685, - 0.122860411, - 0.128217367, - 0.125800635, - 0.127461002, - 0.124600686, - 0.128388792, - 0.117979162, - 0.1270774, - 0.120534055, - 0.125575045, - 0.129278222, - 0.124919488, - 0.118470678, - 0.122680309, - 0.123463389, - 0.122419104, - 0.127479313, - 0.124849304, - 0.12502092, - 0.126722165, - 0.119884909, - 0.12099244, - 0.126538594, - 0.119638965, - 0.126270377, - 0.120434169, - 0.117883688, - 0.129403025, - 0.129336352, - 0.1283931, - 0.124971981, - 0.128905604, - 0.128751375, - 0.119683761, - 0.126156156, - 0.119506494, - 0.130266613, - 0.125890439, - 0.123997921, - 0.124674051, - 0.124586697, - 0.123641013, - 0.128439877, - 0.127489288, - 0.118514586, - 0.121378506, - 0.128853261, - 0.124959584, - 0.127574412, - 0.118657886, - 0.116321579, - 0.121985042, - 0.121523185, - 0.126034191, - 0.125356225, - 0.127142548, - 0.123616072, - 0.118618765, - 0.125074252, - 0.128771719 + 0.121707515, + 0.128801803, + 0.127173393, + 0.12203573, + 0.129275265, + 0.12549095, + 0.128214, + 0.121735446, + 0.127532346, + 0.119361628, + 0.118447956, + 0.129920753, + 0.126210958, + 0.124916155, + 0.125518415, + 0.11968721, + 0.12181213, + 0.123928141, + 0.120680189, + 0.117585023, + 0.122614746, + 0.124692617, + 0.125742997, + 0.12375858, + 0.122790845, + 0.119180889, + 0.123678511, + 0.121270819, + 0.119821604, + 0.122695971, + 0.122649311, + 0.12340031, + 0.123333732, + 0.122848835, + 0.125697671, + 0.125758284, + 0.12173868, + 0.126956284, + 0.126987555, + 0.124533543, + 0.127533438, + 0.127724548, + 0.126665105, + 0.126241018, + 0.121491544, + 0.121806322, + 0.12638353, + 0.120439935, + 0.123773927, + 0.126178343, + 0.126442869, + 0.12889338, + 0.124366966, + 0.124445287, + 0.126543654, + 0.121577143, + 0.12396604, + 0.119942821, + 0.125978505, + 0.126005413, + 0.126084914, + 0.1257898, + 0.123553556, + 0.124876738, + 0.123706907, + 0.128767005, + 0.126555259, + 0.126745421, + 0.128428215, + 0.121598376, + 0.123587744, + 0.126553668, + 0.129035719, + 0.129142643, + 0.125418344, + 0.12757949, + 0.124426021, + 0.12505166, + 0.128472131, + 0.122041698, + 0.127306288, + 0.122781084, + 0.124002159, + 0.122610878, + 0.121600324, + 0.125144609, + 0.124892501, + 0.124478677, + 0.125708894, + 0.123793718, + 0.126234439, + 0.119904332, + 0.124661981, + 0.119277828, + 0.126381974, + 0.127187378, + 0.124550968, + 0.124253532, + 0.128331505, + 0.122850273 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -531,106 +531,106 @@ }, { "result": [ - 0.124661061, - 0.12666085, - 0.124948202, - 0.124568833, - 0.124045992, - 0.128241753, - 0.123874733, - 0.124012789, - 0.12073158, - 0.118419749, - 0.126962943, - 0.12367641, - 0.124317628, - 0.126468435, - 0.121397857, - 0.123537256, - 0.122644366, - 0.121047882, - 0.12132538, - 0.13005451, - 0.125769741, - 0.12357725, - 0.121436973, - 0.123244156, - 0.125518943, - 0.123490337, - 0.121295528, - 0.122848631, - 0.12384361, - 0.125602128, - 0.125866821, - 0.125491231, - 0.123595256, - 0.12107832, - 0.123667392, - 0.128148293, - 0.128210277, - 0.125481915, - 0.118185453, - 0.11910785, - 0.122465858, - 0.123394574, - 0.128029041, - 0.124013094, - 0.116141826, - 0.126822987, - 0.122071701, - 0.127476779, - 0.126545798, - 0.122637859, - 0.119323896, - 0.127275786, - 0.125091818, - 0.126719698, - 0.121606431, - 0.115832786, - 0.128450729, - 0.127843301, - 0.126985324, - 0.122380118, - 0.124166746, - 0.1254551, - 0.128034204, - 0.12526099, - 0.12823865, - 0.124217197, - 0.126298442, - 0.128756156, - 0.127425191, - 0.123403441, - 0.123417427, - 0.123691094, - 0.12834209, - 0.125943255, - 0.118467554, - 0.127053317, - 0.119377459, - 0.122853148, - 0.121472273, - 0.126035102, - 0.123128685, - 0.126970231, - 0.122753662, - 0.127354454, - 0.128136556, - 0.121278536, - 0.123023842, - 0.122975992, - 0.125964641, - 0.130141845, - 0.127186949, - 0.123113166, - 0.128091911, - 0.125129569, - 0.123579311, - 0.120344549, - 0.121655301, - 0.121349649, - 0.122655619, - 0.126600143 + 0.128362261, + 0.126974278, + 0.125209141, + 0.122478945, + 0.117911986, + 0.116095817, + 0.124959141, + 0.125756739, + 0.128335986, + 0.125726331, + 0.118181358, + 0.120345076, + 0.12242772, + 0.124040551, + 0.125110288, + 0.123458389, + 0.121838884, + 0.127500984, + 0.127768907, + 0.122212982, + 0.122943258, + 0.123161507, + 0.127111568, + 0.123310993, + 0.123213121, + 0.123767718, + 0.127042794, + 0.120839857, + 0.127389072, + 0.125810606, + 0.127263445, + 0.127041749, + 0.124195083, + 0.125509928, + 0.119438648, + 0.122741521, + 0.123372778, + 0.127218273, + 0.125306606, + 0.124161507, + 0.124337468, + 0.121891076, + 0.123820172, + 0.126025466, + 0.12305152, + 0.120562871, + 0.125064174, + 0.125295643, + 0.122418842, + 0.123800525, + 0.127377915, + 0.124627402, + 0.129596133, + 0.121294048, + 0.123538814, + 0.121330579, + 0.125817884, + 0.120125252, + 0.124828404, + 0.126228584, + 0.124643316, + 0.124133949, + 0.12555157, + 0.126654323, + 0.123863847, + 0.125109418, + 0.121396406, + 0.121922919, + 0.119363959, + 0.121316, + 0.124821908, + 0.123410049, + 0.128707592, + 0.128975092, + 0.126517254, + 0.125092471, + 0.124701187, + 0.128433471, + 0.121606757, + 0.125306534, + 0.125994173, + 0.128461663, + 0.129044853, + 0.124354511, + 0.124206632, + 0.127762554, + 0.125848027, + 0.128659755, + 0.124867895, + 0.129038829, + 0.125183253, + 0.122072325, + 0.127442787, + 0.121594553, + 0.120573359, + 0.128691182, + 0.125449276, + 0.123658969, + 0.117432469, + 0.122085672 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -638,106 +638,106 @@ }, { "result": [ - 0.12684016, - 0.12787694, - 0.118462224, - 0.123904218, - 0.126477623, - 0.123935841, - 0.126778081, - 0.125846043, - 0.123029594, - 0.126034621, - 0.12726689, - 0.123164857, - 0.121562369, - 0.122446596, - 0.123654836, - 0.128929269, - 0.123165163, - 0.122616732, - 0.123250636, - 0.118295773, - 0.118681742, - 0.126558261, - 0.124888273, - 0.129237733, - 0.125315486, - 0.127766617, - 0.127644897, - 0.125945531, - 0.126859267, - 0.123596342, - 0.125339725, - 0.123815043, - 0.118871193, - 0.122167573, - 0.125805479, - 0.126346935, - 0.119080207, - 0.126124759, - 0.121023049, - 0.120482238, - 0.126161436, - 0.124227892, - 0.123465022, - 0.126162075, - 0.123742666, - 0.130353991, - 0.126821519, - 0.12448274, - 0.119747123, - 0.127110177, - 0.129082529, - 0.125762343, - 0.126044395, - 0.125685232, - 0.121161191, - 0.125794005, - 0.122526251, - 0.126052182, - 0.127597427, - 0.127996277, - 0.127985791, - 0.121157802, - 0.125318645, - 0.125642869, - 0.125664951, - 0.125770543, - 0.121862972, - 0.125665932, - 0.125496173, - 0.117887783, - 0.124100852, - 0.125700708, - 0.12191504, - 0.125854908, - 0.124363339, - 0.128333875, - 0.123947871, - 0.122178828, - 0.127100456, - 0.123816263, - 0.126165053, - 0.126485832, - 0.121735062, - 0.126152413, - 0.120870896, - 0.125941683, - 0.127820166, - 0.123999461, - 0.12476956, - 0.122320644, - 0.125705821, - 0.125773358, - 0.126226384, - 0.118833228, - 0.126462616, - 0.127197668, - 0.123003866, - 0.118915038, - 0.127497232, - 0.124705971 + 0.122869092, + 0.124431337, + 0.121906357, + 0.12481637, + 0.123631485, + 0.128678585, + 0.12715589, + 0.124518795, + 0.127337365, + 0.121102766, + 0.129984143, + 0.124431175, + 0.126226568, + 0.127645335, + 0.12484697, + 0.116446578, + 0.126420334, + 0.123049674, + 0.129097038, + 0.123198643, + 0.122508219, + 0.125564519, + 0.127069507, + 0.127175482, + 0.123345005, + 0.125915854, + 0.123364639, + 0.125165529, + 0.121041757, + 0.125752638, + 0.121730128, + 0.122520839, + 0.122881744, + 0.118197054, + 0.129109406, + 0.119760859, + 0.121579651, + 0.123015365, + 0.124035746, + 0.121953811, + 0.127326842, + 0.124871855, + 0.124730581, + 0.128684427, + 0.125044175, + 0.123623325, + 0.12237024, + 0.12263113, + 0.12433283, + 0.127582131, + 0.127442608, + 0.116619518, + 0.123824085, + 0.126220481, + 0.122113569, + 0.122649946, + 0.125875889, + 0.124814869, + 0.126290179, + 0.117367979, + 0.130287339, + 0.123797236, + 0.123239229, + 0.126985958, + 0.123583062, + 0.127592197, + 0.130333173, + 0.123063744, + 0.127598218, + 0.128295651, + 0.123817878, + 0.125764103, + 0.127565743, + 0.125545829, + 0.122122535, + 0.129621365, + 0.123257095, + 0.122509796, + 0.121009418, + 0.121594043, + 0.123473622, + 0.121534117, + 0.126163876, + 0.125333605, + 0.127195612, + 0.127351547, + 0.121993222, + 0.126615676, + 0.12552833, + 0.125550059, + 0.121579893, + 0.123527856, + 0.122079774, + 0.118737994, + 0.121930564, + 0.12874218, + 0.122401843, + 0.118570637, + 0.118821407, + 0.128929798 ], "implementation": "rust-libp2p", "version": "v0.52-quinn", @@ -745,106 +745,106 @@ }, { "result": [ - 0.18501733, - 0.18923008, - 0.18049216, - 0.19340678, - 0.1861875, - 0.1914942, - 0.18575798, - 0.19520913, - 0.18010223, - 0.19124515, - 0.1811332, - 0.19085026, - 0.18030554, - 0.18751548, - 0.183921, - 0.18907401, - 0.19030528, - 0.18198135, - 0.178762, - 0.1883241, - 0.18783239, - 0.188024, - 0.18608308, - 0.19024466, - 0.18471646, - 0.19437698, - 0.19007832, - 0.19379516, - 0.19018622, - 0.18439801, - 0.19320713, - 0.1921831, - 0.18576838, - 0.18736668, - 0.18765777, - 0.18439884, - 0.18509425, - 0.18425712, - 0.19181487, - 0.17813952, - 0.1922556, - 0.18742092, - 0.18172316, - 0.19022168, - 0.1865288, - 0.19128017, - 0.19162115, - 0.19370575, - 0.18444578, - 0.18895054, - 0.19003198, - 0.18962732, - 0.1905909, - 0.17974056, - 0.18016237, - 0.19035481, - 0.19284406, - 0.18282667, - 0.18866986, - 0.18624999, - 0.18460633, - 0.19283867, - 0.19002372, - 0.1847342, - 0.1893068, - 0.19573985, - 0.18462518, - 0.18524133, - 0.17935291, - 0.19063331, - 0.186608, - 0.18565576, - 0.1804417, - 0.1870286, - 0.19152515, - 0.19481224, - 0.18663289, - 0.18008529, - 0.18801773, - 0.17731303, - 0.1862143, - 0.19154595, - 0.17947997, - 0.19300668, - 0.18554401, - 0.18398392, - 0.18498778, - 0.19375242, - 0.18138859, - 0.1811724, - 0.18747015, - 0.18788917, - 0.1776267, - 0.18833229, - 0.19307281, - 0.19632874, - 0.18851216, - 0.1914809, - 0.18993904, - 0.1906922 + 0.193955357, + 0.191838393, + 0.185707525, + 0.18439625, + 0.186092025, + 0.192814661, + 0.194410659, + 0.177698505, + 0.18397452, + 0.187375445, + 0.178686736, + 0.196266966, + 0.183676011, + 0.184100187, + 0.186398869, + 0.182792861, + 0.189500162, + 0.189730036, + 0.186554174, + 0.188403543, + 0.181595044, + 0.186891767, + 0.183568489, + 0.19310424, + 0.189837993, + 0.185709836, + 0.183880019, + 0.193767547, + 0.184314979, + 0.185259607, + 0.185158266, + 0.190057896, + 0.189713413, + 0.191629849, + 0.191103107, + 0.175275143, + 0.176528765, + 0.189455681, + 0.184480953, + 0.190791032, + 0.19110977, + 0.190078192, + 0.188819448, + 0.186047966, + 0.193759489, + 0.188825484, + 0.18713003, + 0.192682084, + 0.189891408, + 0.179442502, + 0.185840191, + 0.184212219, + 0.191268782, + 0.196474109, + 0.185797899, + 0.191178143, + 0.17996502, + 0.187223957, + 0.176518985, + 0.183058273, + 0.186481493, + 0.180805715, + 0.186388054, + 0.187049193, + 0.189086, + 0.180250814, + 0.179878324, + 0.191650656, + 0.177340718, + 0.177939012, + 0.186688349, + 0.193248071, + 0.189210006, + 0.184335885, + 0.195558318, + 0.191457144, + 0.190901391, + 0.183383845, + 0.185011959, + 0.183901911, + 0.188519315, + 0.182465856, + 0.188253398, + 0.187399945, + 0.186252925, + 0.186366281, + 0.190913025, + 0.191512127, + 0.188510364, + 0.191454509, + 0.193756964, + 0.187253431, + 0.185228882, + 0.184869075, + 0.190203354, + 0.188588841, + 0.185568816, + 0.189995959, + 0.188487615, + 0.185556762 ], "implementation": "https", "version": "v0.1", @@ -852,106 +852,106 @@ }, { "result": [ - 0.12175053, - 0.12605117, - 0.062221505, - 0.064337306, - 0.06010179, - 0.12711148, - 0.064213164, - 0.06219794, - 0.0616432, - 0.06224148, - 0.12437741, - 0.124406956, - 0.123852775, - 0.06070982, - 0.061578356, - 0.12111463, - 0.061252847, - 0.062286936, - 0.12250666, - 0.124051794, - 0.12347304, - 0.12263592, - 0.061597213, - 0.12196436, - 0.12330579, - 0.12485951, - 0.065018356, - 0.1218975, - 0.06416536, - 0.123087086, - 0.11792626, - 0.06486279, - 0.063403375, - 0.12562172, - 0.12446013, - 0.12691544, - 0.061206095, - 0.12253202, - 0.06276382, - 0.0628887, - 0.12503381, - 0.12402258, - 0.12443091, - 0.06201959, - 0.124864705, - 0.06484924, - 0.12805285, - 0.12085704, - 0.0625735, - 0.06436527, - 0.061899476, - 0.0617264, - 0.060473114, - 0.121796444, - 0.060230102, - 0.1189248, - 0.061669014, - 0.12606362, - 0.11739062, - 0.059744567, - 0.063605405, - 0.12625213, - 0.05962251, - 0.062324256, - 0.061505187, - 0.062143754, - 0.12310354, - 0.1262308, - 0.064093925, - 0.06264479, - 0.06223176, - 0.061603207, - 0.06411232, - 0.1216119, - 0.120782696, - 0.12754712, - 0.06035197, - 0.06186887, - 0.061882492, - 0.123415925, - 0.12336662, - 0.060795, - 0.1256234, - 0.12385519, - 0.121189505, - 0.06292543, - 0.06396173, - 0.063336305, - 0.061943702, - 0.12251919, - 0.12286289, - 0.0646475, - 0.06282486, - 0.059680667, - 0.11962047, - 0.122115314, - 0.061046507, - 0.11942746, - 0.12901482, - 0.061321888 + 0.12627353, + 0.06322796, + 0.06239489, + 0.1264109, + 0.06442711, + 0.06288316, + 0.063423015, + 0.06305939, + 0.061200827, + 0.06405955, + 0.12528613, + 0.063808054, + 0.12575996, + 0.06232856, + 0.062106553, + 0.061742485, + 0.06300427, + 0.06365775, + 0.1264044, + 0.064532995, + 0.062343795, + 0.06286557, + 0.060364634, + 0.05971806, + 0.12353807, + 0.06258439, + 0.05929562, + 0.05972196, + 0.06360545, + 0.12925683, + 0.12601632, + 0.06344326, + 0.05966915, + 0.122336626, + 0.05977495, + 0.062246505, + 0.12645358, + 0.059061892, + 0.060633846, + 0.0607769, + 0.06428798, + 0.061549623, + 0.06140744, + 0.061188623, + 0.06331852, + 0.06342848, + 0.06377816, + 0.060076326, + 0.06246733, + 0.06367062, + 0.06297103, + 0.12433892, + 0.123757996, + 0.062185377, + 0.12267204, + 0.12601005, + 0.061688837, + 0.06108504, + 0.06469098, + 0.116891906, + 0.061518755, + 0.062108494, + 0.060667146, + 0.05975515, + 0.06373088, + 0.063342385, + 0.06419214, + 0.06232956, + 0.12768248, + 0.12530807, + 0.124848306, + 0.059195627, + 0.122880735, + 0.06024516, + 0.12394544, + 0.1219183, + 0.060800288, + 0.059110496, + 0.11872565, + 0.06012269, + 0.12392691, + 0.06155718, + 0.062292572, + 0.06255667, + 0.063000515, + 0.063261345, + 0.06152581, + 0.059689485, + 0.0626661, + 0.062457502, + 0.12794977, + 0.12336585, + 0.11849746, + 0.06303405, + 0.061456848, + 0.05913779, + 0.0627896, + 0.06271503, + 0.122967996, + 0.06494464 ], "implementation": "go-libp2p", "version": "v0.27", @@ -959,106 +959,106 @@ }, { "result": [ - 0.06355237, - 0.060595006, - 0.057849895, - 0.06282445, - 0.06296295, - 0.062263384, - 0.061361652, - 0.06254827, - 0.06433191, - 0.06295908, - 0.06020783, - 0.06206818, - 0.06415346, - 0.061035052, - 0.062093258, - 0.06068142, - 0.062790394, - 0.061855037, - 0.064258575, - 0.06315244, - 0.060516555, - 0.062103324, - 0.06264966, - 0.06414131, - 0.06311047, - 0.0625298, - 0.061776433, - 0.06273881, - 0.06170282, - 0.06281448, - 0.062988296, - 0.061229974, - 0.062824264, - 0.063056946, - 0.061289493, - 0.0618638, - 0.06419081, - 0.062534384, - 0.06306849, - 0.061164565, - 0.061782323, - 0.060750503, - 0.06232041, - 0.062688634, - 0.06288993, - 0.061291166, - 0.060801283, - 0.06262256, - 0.05938406, - 0.06302028, - 0.060640726, - 0.06088046, - 0.06421143, - 0.058525525, - 0.06261851, - 0.06381055, - 0.060679577, - 0.06420371, - 0.062607035, - 0.06299439, - 0.061227873, - 0.06349264, - 0.06293519, - 0.061481, - 0.06365487, - 0.06260477, - 0.061818447, - 0.06258338, - 0.06283006, - 0.062424313, - 0.060585, - 0.06441027, - 0.05968948, - 0.061911583, - 0.061627526, - 0.0635312, - 0.060969494, - 0.062054284, - 0.061562333, - 0.058623374, - 0.06401842, - 0.062325384, - 0.064899884, - 0.061992045, - 0.060320485, - 0.063530885, - 0.06308903, - 0.06090222, - 0.061143447, - 0.05967578, - 0.061819967, - 0.062941566, - 0.06371909, - 0.062264062, - 0.064133525, - 0.06456559, - 0.062039033, - 0.062669404, - 0.06257181, - 0.061231002 + 0.06101121, + 0.06183345, + 0.06328221, + 0.06359649, + 0.0591485, + 0.06150341, + 0.06321516, + 0.059354752, + 0.060649384, + 0.06407967, + 0.058438282, + 0.059767395, + 0.061387077, + 0.06037511, + 0.06323172, + 0.06312479, + 0.063504405, + 0.06205196, + 0.062478967, + 0.06400248, + 0.06393319, + 0.06423314, + 0.06364058, + 0.06267748, + 0.061100945, + 0.0648428, + 0.06347108, + 0.063163914, + 0.06385114, + 0.065090336, + 0.062373925, + 0.06277121, + 0.06134507, + 0.061121274, + 0.06150395, + 0.061843053, + 0.06145542, + 0.0640399, + 0.06122422, + 0.06312072, + 0.05970491, + 0.06252107, + 0.063160375, + 0.065689474, + 0.0632885, + 0.06359938, + 0.06314578, + 0.05955939, + 0.060351036, + 0.05965191, + 0.061822657, + 0.060839895, + 0.06424156, + 0.060968608, + 0.064368546, + 0.062631555, + 0.06413804, + 0.06169937, + 0.064843975, + 0.06259285, + 0.064223975, + 0.0629793, + 0.061221484, + 0.06005889, + 0.06414129, + 0.062234107, + 0.063722774, + 0.06349979, + 0.062076468, + 0.061836954, + 0.062146034, + 0.060848385, + 0.0603355, + 0.064369574, + 0.0601086, + 0.064040475, + 0.05995296, + 0.06273966, + 0.06202841, + 0.061105706, + 0.060701724, + 0.061544996, + 0.062079486, + 0.064370014, + 0.06366293, + 0.059759732, + 0.06280063, + 0.05913446, + 0.06253907, + 0.063633665, + 0.061118312, + 0.062750965, + 0.064076975, + 0.06203803, + 0.06192361, + 0.06401403, + 0.06400168, + 0.06163904, + 0.06354152, + 0.060942505 ], "implementation": "go-libp2p", "version": "v0.27", @@ -1066,5 +1066,177 @@ } ] } - ] + ], + "pings": { + "unit": "s", + "results": [ + 0.0611, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.0611, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.061, + 0.0613, + 0.061, + 0.061 + ] + }, + "iperf": { + "unit": "bit/s", + "results": [ + 3260000000, + 3260000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3260000000, + 3260000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3250000000, + 3260000000, + 3260000000, + 3260000000, + 3230000000, + 3200000000, + 3190000000, + 3180000000, + 3180000000, + 3200000000, + 3240000000, + 3240000000, + 3250000000, + 3240000000, + 3250000000, + 3250000000, + 3240000000, + 3240000000, + 3250000000, + 3250000000, + 3250000000, + 3270000000, + 3280000000, + 3280000000, + 3280000000, + 3280000000, + 3270000000, + 3270000000, + 3280000000, + 3280000000, + 3270000000, + 3250000000, + 3050000000 + ] + } } \ No newline at end of file diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index 32b256d31..b3ceaadab 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -1,9 +1,21 @@ export type BenchmarkResults = { benchmarks: Benchmark[], + pings: PingResults, + iperf: IperfResults, // For referencing this schema in JSON "$schema"?: string }; +export type PingResults = { + unit: "s", + results: number[] +}; + +export type IperfResults = { + unit: "bit/s", + results: number[] +}; + export type Benchmark = { name: string, unit: "bit/s" | "s", diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 9af037532..3d2fd5ce8 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -2,42 +2,49 @@ import { execSync } from 'child_process'; import { versions } from './versions'; import yargs from 'yargs'; import fs from 'fs'; -import { BenchmarkResults, Benchmark, Result } from './benchmark-result-type'; +import { BenchmarkResults, Benchmark, Result, IperfResults, PingResults } from './benchmark-result-type'; async function main(clientPublicIP: string, serverPublicIP: string) { + const pings = runPing(clientPublicIP, serverPublicIP); + const iperf = runIPerf(clientPublicIP, serverPublicIP); + copyAndBuildPerfImplementations(serverPublicIP); copyAndBuildPerfImplementations(clientPublicIP); + const benchmarks = [ + runBenchmarkAcrossVersions({ + name: "Single Connection throughput – Upload 100 MiB", + clientPublicIP, + serverPublicIP, + uploadBytes: 100 << 20, + downloadBytes: 0, + unit: "bit/s", + iterations: 5, + }), + runBenchmarkAcrossVersions({ + name: "Single Connection throughput – Download 100 MiB", + clientPublicIP, + serverPublicIP, + uploadBytes: 0, + downloadBytes: 100 << 20, + unit: "bit/s", + iterations: 5, + }), + runBenchmarkAcrossVersions({ + name: "Connection establishment + 1 byte round trip latencies", + clientPublicIP, + serverPublicIP, + uploadBytes: 1, + downloadBytes: 1, + unit: "s", + iterations: 100, + }), + ]; + const benchmarkResults: BenchmarkResults = { - benchmarks: [ - runBenchmarkAcrossVersions({ - name: "Single Connection throughput – Upload 100 MiB", - clientPublicIP, - serverPublicIP, - uploadBytes: 100 << 20, - downloadBytes: 0, - unit: "bit/s", - iterations: 5, - }), - runBenchmarkAcrossVersions({ - name: "Single Connection throughput – Download 100 MiB", - clientPublicIP, - serverPublicIP, - uploadBytes: 0, - downloadBytes: 100 << 20, - unit: "bit/s", - iterations: 5, - }), - runBenchmarkAcrossVersions({ - name: "Connection establishment + 1 byte round trip latencies", - clientPublicIP, - serverPublicIP, - uploadBytes: 1, - downloadBytes: 1, - unit: "s", - iterations: 100, - }), - ], + benchmarks, + pings, + iperf, }; // Save results to benchmark-results.json @@ -46,6 +53,57 @@ async function main(clientPublicIP: string, serverPublicIP: string) { console.error("== done"); } +function runPing(clientPublicIP: string, serverPublicIP: string): PingResults { + console.error(`= run 100 pings from client to server`); + + let cmd = `ssh ec2-user@${clientPublicIP} 'ping -c 100 ${serverPublicIP}'`; + const stdout = execCommand(cmd).toString(); + + // Extract the time from each ping + const lines = stdout.split('\n'); + const times = lines + .map(line => { + const match = line.match(/time=(.*) ms/); + return match ? parseFloat(match[1]) / 1000 : null; // Convert from ms to s + }) + .filter((time): time is number => time !== null); // Remove any null values and ensure that array contains only numbers + + return { unit: "s", results: times } +} + +function runIPerf(clientPublicIP: string, serverPublicIP: string): IperfResults { + console.error(`= run 60 iPerf UDP from client to server`); + + let killCMD = `ssh ec2-user@${serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; + const killSTDOUT = execCommand(killCMD); + console.error(killSTDOUT); + + let serverCMD = `ssh ec2-user@${serverPublicIP} 'nohup iperf3 -s > server.log 2>&1 & echo \$! > pidfile '`; + const serverSTDOUT = execCommand(serverCMD); + console.error(serverSTDOUT); + + let cmd = `ssh ec2-user@${clientPublicIP} 'iperf3 -c ${serverPublicIP} -u -b 25g -t 60'`; + const stdout = execSync(cmd).toString(); + + // Extract the bitrate from each relevant line + const lines = stdout.split('\n'); + const bitrates = lines + .map(line => { + const match = line.match(/(\d+(?:\.\d+)?) (\w)bits\/sec/); // Matches and captures the number and unit before "bits/sec" + if (match) { + const value = parseFloat(match[1]); + const unit = match[2]; + // Convert value to bits/sec + const multiplier = unit === 'G' ? 1e9 : unit === 'M' ? 1e6 : unit === 'K' ? 1e3 : 1; + return value * multiplier; + } + return null; + }) + .filter((bitrate): bitrate is number => bitrate !== null); // Remove any null values + + return { unit: "bit/s", results: bitrates} +} + interface ArgsRunBenchmarkAcrossVersions { name: string, clientPublicIP: string; @@ -163,10 +221,10 @@ function execCommand(cmd: string): string { function copyAndBuildPerfImplementations(ip: string) { const stdout = execCommand(`rsync -avz --progress ../impl ec2-user@${ip}:/home/ec2-user`); - console.log(stdout.toString()); + console.error(stdout.toString()); const stdout2 = execCommand(`ssh ec2-user@${ip} 'cd impl && make'`); - console.log(stdout2.toString()); + console.error(stdout2.toString()); } const argv = yargs diff --git a/perf/terraform/user-data.sh b/perf/terraform/user-data.sh index f6fcb3e74..d1026af3d 100644 --- a/perf/terraform/user-data.sh +++ b/perf/terraform/user-data.sh @@ -1,5 +1,9 @@ #!/bin/bash +sudo yum install make -y + +sudo yum -y install iperf3 + # Bump UDP receive buffer size. See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size. sudo sysctl -w net.core.rmem_max=2500000 @@ -8,5 +12,3 @@ sudo yum install docker -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user - -sudo yum install make -y From 8ff591f6f67ec0c1c40e38394646a8a54c244dee Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 17 May 2023 13:44:37 +0900 Subject: [PATCH 084/101] Move rust-libp2p quinn from being different version to different implementation --- perf/impl/Makefile | 9 +- .../v0.52}/Makefile | 0 perf/runner/benchmark-results.json | 1983 ++++++++--------- perf/runner/src/versions.ts | 8 +- 4 files changed, 936 insertions(+), 1064 deletions(-) rename perf/impl/{rust-libp2p/v0.52-quinn => rust-libp2p-quinn/v0.52}/Makefile (100%) diff --git a/perf/impl/Makefile b/perf/impl/Makefile index f7474f845..29e9ea363 100644 --- a/perf/impl/Makefile +++ b/perf/impl/Makefile @@ -1,11 +1,14 @@ GO_SUBDIRS := $(wildcard go-libp2p/*/.) RUST_SUBDIRS := $(wildcard rust-libp2p/*/.) +RUST_QUINN_SUBDIRS := $(wildcard rust-libp2p-quinn/*/.) HTTPS_SUBDIRS := $(wildcard https/*/.) QUIC_GO_SUBDIRS := $(wildcard quic-go/*/.) -all: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) +all: $(RUST_SUBDIRS) $(RUST_QUINN_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) $(RUST_SUBDIRS): $(MAKE) -C $@ +$(RUST_QUINN_SUBDIRS): + $(MAKE) -C $@ $(GO_SUBDIRS): $(MAKE) -C $@ $(HTTPS_SUBDIRS): @@ -13,9 +16,9 @@ $(HTTPS_SUBDIRS): $(QUIC_GO_SUBDIRS): $(MAKE) -C $@ -clean: $(RUST_SUBDIRS:%=%clean) $(GO_SUBDIRS:%=%clean) $(HTTPS_SUBDIRS:%=%clean) $(QUIC_GO_SUBDIRS:%=%clean) +clean: $(RUST_SUBDIRS:%=%clean) $(RUST_QUINN_SUBDIRS:%=%clean) $(GO_SUBDIRS:%=%clean) $(HTTPS_SUBDIRS:%=%clean) $(QUIC_GO_SUBDIRS:%=%clean) %clean: $(MAKE) -C $* clean -.PHONY: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) all clean +.PHONY: $(RUST_SUBDIRS) $(RUST_QUINN_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) all clean diff --git a/perf/impl/rust-libp2p/v0.52-quinn/Makefile b/perf/impl/rust-libp2p-quinn/v0.52/Makefile similarity index 100% rename from perf/impl/rust-libp2p/v0.52-quinn/Makefile rename to perf/impl/rust-libp2p-quinn/v0.52/Makefile diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 5d6d59bc2..5ea4f4d87 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,11 +6,11 @@ "results": [ { "result": [ - 474417794.4677891, - 462379438.94531333, - 474882957.87389225, - 472889626.4961351, - 462063624.4358198 + 476723778.8248372, + 461660061.64927495, + 482555957.5924573, + 477675526.484072, + 454270690.6168601 ], "implementation": "quic-go", "version": "v0.34", @@ -18,11 +18,11 @@ }, { "result": [ - 22559790.023022857, - 23524227.44536793, - 23250305.27441416, - 21922422.459196728, - 23649472.46812365 + 23765074.98195795, + 22951785.20901357, + 21295876.480998363, + 20670355.201553, + 22423122.172141254 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -30,11 +30,11 @@ }, { "result": [ - 97914043.1904787, - 62144199.76990087, - 63872198.500458345, - 53970207.98926865, - 53260172.94150097 + 36852744.228101, + 43840643.78511356, + 57316078.625662796, + 52626915.16678075, + 105155556.02028346 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -42,35 +42,23 @@ }, { "result": [ - 23515757.013399474, - 20215257.089284617, - 21073574.43878669, - 23751335.214581426, - 23870734.957599763 + 587621511.1614571, + 563901201.5760119, + 558907605.1141443, + 592131180.9976248, + 580282064.2821823 ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", - "transportStack": "tcp" - }, - { - "result": [ - 585071224.6885961, - 564122883.0005387, - 601602222.2636776, - 573379487.0183829, - 593773818.090205 - ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", + "implementation": "rust-libp2p-quinn", + "version": "v0.52", "transportStack": "quic-v1" }, { "result": [ - 307504345.4815674, - 307049864.1607806, - 305569317.1787684, - 299933512.2271783, - 309573869.6461722 + 303350936.8223497, + 286964977.924173, + 315075038.70949465, + 283952075.21250784, + 294792314.516067 ], "implementation": "https", "version": "v0.1", @@ -78,11 +66,11 @@ }, { "result": [ - 287800980.76480824, - 281363671.0025105, - 283999135.7410029, - 275834039.9122788, - 276217724.6617089 + 248955230.98554525, + 287854438.84119874, + 272133599.2185647, + 279250074.1516996, + 253393667.34529442 ], "implementation": "go-libp2p", "version": "v0.27", @@ -90,11 +78,11 @@ }, { "result": [ - 625064165.3990065, - 624672569.5981356, - 631085113.8804889, - 622547375.9986345, - 618318290.2512397 + 628532042.7331849, + 617444244.3285623, + 625160545.3616196, + 620091153.002094, + 606479285.7655139 ], "implementation": "go-libp2p", "version": "v0.27", @@ -108,11 +96,11 @@ "results": [ { "result": [ - 448653441.94081503, - 463726224.559235, - 462576532.17370397, - 453282684.05169034, - 454557218.14672446 + 476749517.7722385, + 467811983.10466784, + 446846915.95167285, + 440905820.23930603, + 442712191.435396 ], "implementation": "quic-go", "version": "v0.34", @@ -120,11 +108,11 @@ }, { "result": [ - 24272938.352030843, - 23612409.98601879, - 23889319.88239235, - 19732456.44340771, - 22556224.638749085 + 23489986.277543712, + 23989190.127659697, + 22047202.20693784, + 23535688.679104857, + 23750819.898304287 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -132,11 +120,11 @@ }, { "result": [ - 69297405.7025867, - 61729457.91142594, - 102231401.68700998, - 86695376.69219294, - 78425397.4811756 + 48010448.5791753, + 63604116.19768055, + 68905977.78654173, + 52916573.41143532, + 80712143.69185075 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -144,35 +132,23 @@ }, { "result": [ - 23926321.026550617, - 20128513.3682652, - 20875194.244746435, - 23317750.232327037, - 20751075.591506794 + 583364875.6727204, + 574905132.1426404, + 576181208.0931789, + 556790173.646611, + 584184486.9257556 ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", - "transportStack": "tcp" - }, - { - "result": [ - 559411761.0686907, - 571742866.2255255, - 579268122.7634223, - 570463202.2884122, - 585325675.8765239 - ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", + "implementation": "rust-libp2p-quinn", + "version": "v0.52", "transportStack": "quic-v1" }, { "result": [ - 291350547.4332152, - 296929637.4548476, - 291724194.3388055, - 275856537.2664585, - 293531211.03252536 + 275173785.9263513, + 289390075.919085, + 290850417.7955512, + 249953022.7856405, + 281877043.9985076 ], "implementation": "https", "version": "v0.1", @@ -180,11 +156,11 @@ }, { "result": [ - 294573484.43656474, - 194025762.6628138, - 271838526.3971789, - 280037017.7564919, - 275937812.17766625 + 273784647.29723024, + 272677630.60313463, + 270261907.5924625, + 277904300.24740565, + 280673597.2540147 ], "implementation": "go-libp2p", "version": "v0.27", @@ -192,11 +168,11 @@ }, { "result": [ - 613930753.6595503, - 607861599.6267879, - 624022469.1317983, - 611036643.079215, - 650071566.2349961 + 611693361.4131863, + 616559070.6479324, + 670183088.6106693, + 622577916.6065818, + 638752777.1129873 ], "implementation": "go-libp2p", "version": "v0.27", @@ -210,106 +186,106 @@ "results": [ { "result": [ - 0.064579, - 0.060944, - 0.060945, - 0.061542, - 0.063956, - 0.06269, - 0.064515, - 0.061967, - 0.062341, - 0.059849, - 0.063182, - 0.06394, - 0.059044, - 0.062294, - 0.061589, - 0.061087, - 0.063577, - 0.060209, - 0.064296, - 0.061301, - 0.062809, - 0.062883, - 0.063709, - 0.062143, - 0.062201, - 0.063141, - 0.061195, - 0.062346, - 0.060194, - 0.06118, - 0.061657, - 0.060901, - 0.064545, - 0.062013, - 0.062017, - 0.063399, - 0.061698, - 0.06354, - 0.062906, - 0.060566, - 0.062388, - 0.063037, - 0.062056, - 0.06173, - 0.061789, - 0.060722, - 0.062722, - 0.05967, - 0.06231, - 0.064521, - 0.0639, - 0.061779, - 0.059782, - 0.062073, - 0.061339, - 0.06111, - 0.06271, - 0.062378, - 0.059953, - 0.062484, - 0.064898, - 0.061991, - 0.06178, - 0.060356, - 0.061167, - 0.062737, - 0.064511, - 0.064355, - 0.061649, - 0.062309, - 0.05873, - 0.063992, - 0.060622, - 0.063957, - 0.06042, - 0.063722, - 0.065111, - 0.061298, - 0.061844, - 0.062755, - 0.059129, - 0.064224, - 0.061444, + 0.060905, + 0.062693, + 0.063777, + 0.063916, + 0.059215, + 0.065067, + 0.062213, + 0.064145, + 0.062774, + 0.062359, + 0.06166, + 0.061706, + 0.060264, + 0.060664, + 0.063287, + 0.061812, + 0.0629, + 0.059316, + 0.05919, + 0.062934, + 0.063118, + 0.060439, + 0.064315, + 0.062508, + 0.063761, + 0.063315, + 0.061367, + 0.062988, + 0.059807, + 0.060197, + 0.060838, + 0.062964, + 0.06223, + 0.062095, + 0.062096, + 0.064432, + 0.063195, + 0.065238, + 0.061205, + 0.062939, + 0.063537, + 0.06006, + 0.060019, + 0.064216, + 0.060701, + 0.062679, + 0.062253, + 0.064651, + 0.062843, + 0.060521, + 0.060848, + 0.059283, + 0.062424, + 0.061856, + 0.063087, + 0.063297, + 0.061369, 0.063544, - 0.061742, - 0.061421, - 0.060401, - 0.060902, - 0.060213, - 0.060572, - 0.06131, - 0.063109, - 0.062811, - 0.063055, - 0.060727, - 0.063729, + 0.062058, + 0.062173, + 0.062172, + 0.061188, + 0.063542, + 0.061727, + 0.061679, + 0.06286, + 0.060542, + 0.058694, + 0.061641, + 0.06066, + 0.061464, + 0.060379, + 0.062796, + 0.062687, + 0.062132, + 0.063595, + 0.064073, + 0.061627, + 0.060453, + 0.062774, + 0.063695, 0.060345, - 0.063429, - 0.062308, - 0.062516 + 0.061924, + 0.060824, + 0.059899, + 0.063754, + 0.062419, + 0.063831, + 0.064334, + 0.061046, + 0.061326, + 0.060717, + 0.064362, + 0.061458, + 0.058738, + 0.065154, + 0.062657, + 0.061958, + 0.062341, + 0.060581 ], "implementation": "quic-go", "version": "v0.34", @@ -317,106 +293,106 @@ }, { "result": [ - 0.122715925, - 0.127124448, - 0.121573012, - 0.125906511, - 0.127302257, - 0.125352371, - 0.125129702, - 0.12703777, - 0.129780454, - 0.118550991, - 0.123669909, - 0.126316689, - 0.121789977, - 0.125626583, - 0.122627308, - 0.125469638, - 0.127044056, - 0.123687654, - 0.128611206, - 0.126986414, - 0.123012026, - 0.126895423, - 0.122507683, - 0.121942506, - 0.125055835, - 0.12696239, - 0.12349714, - 0.124357935, - 0.126650479, - 0.121348162, - 0.122212146, - 0.125051765, - 0.127926954, - 0.126393692, - 0.125641423, - 0.122094834, - 0.124283215, - 0.122303441, - 0.123888695, - 0.118580559, - 0.125534447, - 0.122686587, - 0.121562405, - 0.118679206, - 0.126558623, - 0.123274264, - 0.128709089, - 0.122038062, - 0.126971841, - 0.120171029, - 0.125907948, - 0.127567269, - 0.126929345, - 0.127990138, - 0.121128658, - 0.130110072, - 0.126430485, - 0.125317296, - 0.126514898, - 0.122524788, - 0.127961859, - 0.126974916, - 0.122930433, - 0.125603056, - 0.125059727, - 0.121408205, - 0.125885733, - 0.129569046, - 0.12771782, - 0.124511652, - 0.129487102, - 0.11791064, - 0.126702346, - 0.123800182, - 0.121010069, - 0.122962977, - 0.128027393, - 0.124910468, - 0.128341771, - 0.126707544, - 0.120048588, - 0.12585114, - 0.124321148, - 0.126181425, - 0.126745848, - 0.125849498, - 0.120176737, - 0.128033079, - 0.123988207, - 0.128038394, - 0.121757578, - 0.12975601, - 0.123614173, - 0.125360164, - 0.125061549, - 0.12331277, - 0.121497094, - 0.117434269, - 0.124326885, - 0.127797534 + 0.121888817, + 0.126782828, + 0.126859234, + 0.126965903, + 0.121345578, + 0.126970089, + 0.122916614, + 0.127229748, + 0.127958864, + 0.117392392, + 0.125142897, + 0.122582385, + 0.124210822, + 0.123212725, + 0.121609478, + 0.125591431, + 0.124393383, + 0.128508447, + 0.120189564, + 0.124491921, + 0.122433356, + 0.117685992, + 0.122549189, + 0.120312995, + 0.125653765, + 0.122658262, + 0.124246051, + 0.122707117, + 0.122249119, + 0.12836673, + 0.122185442, + 0.118225327, + 0.130252955, + 0.125181184, + 0.121933468, + 0.130320394, + 0.122924563, + 0.117190831, + 0.127240584, + 0.125941095, + 0.130037099, + 0.128214222, + 0.128375952, + 0.122292666, + 0.119872308, + 0.124913874, + 0.127900565, + 0.124113457, + 0.121933097, + 0.125857287, + 0.12300402, + 0.124099483, + 0.12403564, + 0.118360141, + 0.122514163, + 0.125541903, + 0.126257782, + 0.129793511, + 0.128186572, + 0.122885629, + 0.120463873, + 0.122983595, + 0.125317978, + 0.121499828, + 0.127062349, + 0.123207304, + 0.124742893, + 0.125320406, + 0.119497825, + 0.126564094, + 0.124233296, + 0.122960197, + 0.124953109, + 0.125312498, + 0.124311479, + 0.124084743, + 0.124361733, + 0.126374126, + 0.127021601, + 0.121649422, + 0.127137925, + 0.123952327, + 0.125233014, + 0.12549781, + 0.124144517, + 0.128430317, + 0.123832155, + 0.120157176, + 0.12490297, + 0.119267766, + 0.124355495, + 0.12542756, + 0.127275064, + 0.123099353, + 0.126169216, + 0.122649968, + 0.122518246, + 0.125608568, + 0.125058112, + 0.128857953 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -424,106 +400,106 @@ }, { "result": [ - 0.121707515, - 0.128801803, - 0.127173393, - 0.12203573, - 0.129275265, - 0.12549095, - 0.128214, - 0.121735446, - 0.127532346, - 0.119361628, - 0.118447956, - 0.129920753, - 0.126210958, - 0.124916155, - 0.125518415, - 0.11968721, - 0.12181213, - 0.123928141, - 0.120680189, - 0.117585023, - 0.122614746, - 0.124692617, - 0.125742997, - 0.12375858, - 0.122790845, - 0.119180889, - 0.123678511, - 0.121270819, - 0.119821604, - 0.122695971, - 0.122649311, - 0.12340031, - 0.123333732, - 0.122848835, - 0.125697671, - 0.125758284, - 0.12173868, - 0.126956284, - 0.126987555, - 0.124533543, - 0.127533438, - 0.127724548, - 0.126665105, - 0.126241018, - 0.121491544, - 0.121806322, - 0.12638353, - 0.120439935, - 0.123773927, - 0.126178343, - 0.126442869, - 0.12889338, - 0.124366966, - 0.124445287, - 0.126543654, - 0.121577143, - 0.12396604, - 0.119942821, - 0.125978505, - 0.126005413, - 0.126084914, - 0.1257898, - 0.123553556, - 0.124876738, - 0.123706907, - 0.128767005, - 0.126555259, - 0.126745421, - 0.128428215, - 0.121598376, - 0.123587744, - 0.126553668, - 0.129035719, - 0.129142643, - 0.125418344, - 0.12757949, - 0.124426021, - 0.12505166, - 0.128472131, - 0.122041698, - 0.127306288, - 0.122781084, - 0.124002159, - 0.122610878, - 0.121600324, - 0.125144609, - 0.124892501, - 0.124478677, - 0.125708894, - 0.123793718, - 0.126234439, - 0.119904332, - 0.124661981, - 0.119277828, - 0.126381974, - 0.127187378, - 0.124550968, - 0.124253532, - 0.128331505, - 0.122850273 + 0.123959359, + 0.128597196, + 0.123645688, + 0.130001428, + 0.124287541, + 0.123489402, + 0.125663892, + 0.123268351, + 0.122893342, + 0.127601611, + 0.121443287, + 0.129990906, + 0.128984907, + 0.128755368, + 0.129821243, + 0.124287624, + 0.124759911, + 0.124384119, + 0.123781065, + 0.120626181, + 0.12425869, + 0.12484441, + 0.12554865, + 0.125071262, + 0.12328017, + 0.122791009, + 0.120896344, + 0.127605179, + 0.124412144, + 0.120545436, + 0.123343967, + 0.118978727, + 0.129852487, + 0.122387598, + 0.126926089, + 0.121785762, + 0.122798827, + 0.12720546, + 0.122693981, + 0.128857639, + 0.125739272, + 0.128852421, + 0.127223553, + 0.119462895, + 0.119503469, + 0.123971461, + 0.123001193, + 0.12538024, + 0.123656653, + 0.124206933, + 0.118723028, + 0.12171365, + 0.119679975, + 0.122688169, + 0.125532105, + 0.12467729, + 0.124548614, + 0.129949256, + 0.123589179, + 0.128655684, + 0.12706172, + 0.117397611, + 0.128028486, + 0.116589448, + 0.126781356, + 0.119530489, + 0.122856364, + 0.130406857, + 0.121626124, + 0.121430065, + 0.12317439, + 0.122788656, + 0.125830146, + 0.120794874, + 0.123413219, + 0.12540847, + 0.125231494, + 0.127017699, + 0.128824795, + 0.122608789, + 0.12601121, + 0.128660477, + 0.120707209, + 0.126615777, + 0.126164541, + 0.124650646, + 0.127625659, + 0.12996521, + 0.125899154, + 0.124287427, + 0.128696832, + 0.122317405, + 0.128389197, + 0.123922631, + 0.122882846, + 0.123757482, + 0.122617909, + 0.120690875, + 0.125843553, + 0.124550335 ], "implementation": "rust-libp2p", "version": "v0.52", @@ -531,320 +507,213 @@ }, { "result": [ - 0.128362261, - 0.126974278, - 0.125209141, - 0.122478945, - 0.117911986, - 0.116095817, - 0.124959141, - 0.125756739, - 0.128335986, - 0.125726331, - 0.118181358, - 0.120345076, - 0.12242772, - 0.124040551, - 0.125110288, - 0.123458389, - 0.121838884, - 0.127500984, - 0.127768907, - 0.122212982, - 0.122943258, - 0.123161507, - 0.127111568, - 0.123310993, - 0.123213121, - 0.123767718, - 0.127042794, - 0.120839857, - 0.127389072, - 0.125810606, - 0.127263445, - 0.127041749, - 0.124195083, - 0.125509928, - 0.119438648, - 0.122741521, - 0.123372778, - 0.127218273, - 0.125306606, - 0.124161507, - 0.124337468, - 0.121891076, - 0.123820172, - 0.126025466, - 0.12305152, - 0.120562871, - 0.125064174, - 0.125295643, - 0.122418842, - 0.123800525, - 0.127377915, - 0.124627402, - 0.129596133, - 0.121294048, - 0.123538814, - 0.121330579, - 0.125817884, - 0.120125252, - 0.124828404, - 0.126228584, - 0.124643316, - 0.124133949, - 0.12555157, - 0.126654323, - 0.123863847, - 0.125109418, - 0.121396406, - 0.121922919, - 0.119363959, - 0.121316, - 0.124821908, - 0.123410049, - 0.128707592, - 0.128975092, - 0.126517254, - 0.125092471, - 0.124701187, - 0.128433471, - 0.121606757, - 0.125306534, - 0.125994173, - 0.128461663, - 0.129044853, - 0.124354511, - 0.124206632, - 0.127762554, - 0.125848027, - 0.128659755, - 0.124867895, - 0.129038829, - 0.125183253, - 0.122072325, - 0.127442787, - 0.121594553, - 0.120573359, - 0.128691182, - 0.125449276, - 0.123658969, - 0.117432469, - 0.122085672 + 0.122959542, + 0.119172675, + 0.125785294, + 0.126732788, + 0.123672372, + 0.122138243, + 0.126820962, + 0.117703982, + 0.121954058, + 0.129110022, + 0.121741465, + 0.122407037, + 0.128858718, + 0.122529362, + 0.127466221, + 0.125633069, + 0.119739364, + 0.123356493, + 0.124873061, + 0.125838178, + 0.123822604, + 0.122621485, + 0.11614474, + 0.125800241, + 0.125986944, + 0.123546427, + 0.12685109, + 0.124864405, + 0.127437272, + 0.120370643, + 0.12721763, + 0.126592135, + 0.126560378, + 0.126423394, + 0.126787974, + 0.126224178, + 0.124837033, + 0.122792976, + 0.118061026, + 0.121845087, + 0.127258613, + 0.124904702, + 0.127376706, + 0.127589659, + 0.124485193, + 0.118824468, + 0.119617282, + 0.125763166, + 0.123484596, + 0.119797443, + 0.123008176, + 0.124559505, + 0.123062307, + 0.122636111, + 0.122872824, + 0.127815039, + 0.123764546, + 0.12278435, + 0.12523011, + 0.128936106, + 0.125786657, + 0.128800882, + 0.124278561, + 0.123605532, + 0.122974343, + 0.124353989, + 0.124479834, + 0.12473513, + 0.125646413, + 0.126160902, + 0.127421353, + 0.126007554, + 0.119885787, + 0.12217969, + 0.125820539, + 0.12553983, + 0.123063438, + 0.128444153, + 0.128793941, + 0.120125912, + 0.126360148, + 0.125571942, + 0.117775383, + 0.122981545, + 0.123144694, + 0.122741415, + 0.126264734, + 0.12555531, + 0.128356452, + 0.122931322, + 0.123081991, + 0.123462915, + 0.129979852, + 0.11673056, + 0.127034126, + 0.123508588, + 0.122462002, + 0.123825054, + 0.12687055, + 0.128212266 ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", - "transportStack": "tcp" - }, - { - "result": [ - 0.122869092, - 0.124431337, - 0.121906357, - 0.12481637, - 0.123631485, - 0.128678585, - 0.12715589, - 0.124518795, - 0.127337365, - 0.121102766, - 0.129984143, - 0.124431175, - 0.126226568, - 0.127645335, - 0.12484697, - 0.116446578, - 0.126420334, - 0.123049674, - 0.129097038, - 0.123198643, - 0.122508219, - 0.125564519, - 0.127069507, - 0.127175482, - 0.123345005, - 0.125915854, - 0.123364639, - 0.125165529, - 0.121041757, - 0.125752638, - 0.121730128, - 0.122520839, - 0.122881744, - 0.118197054, - 0.129109406, - 0.119760859, - 0.121579651, - 0.123015365, - 0.124035746, - 0.121953811, - 0.127326842, - 0.124871855, - 0.124730581, - 0.128684427, - 0.125044175, - 0.123623325, - 0.12237024, - 0.12263113, - 0.12433283, - 0.127582131, - 0.127442608, - 0.116619518, - 0.123824085, - 0.126220481, - 0.122113569, - 0.122649946, - 0.125875889, - 0.124814869, - 0.126290179, - 0.117367979, - 0.130287339, - 0.123797236, - 0.123239229, - 0.126985958, - 0.123583062, - 0.127592197, - 0.130333173, - 0.123063744, - 0.127598218, - 0.128295651, - 0.123817878, - 0.125764103, - 0.127565743, - 0.125545829, - 0.122122535, - 0.129621365, - 0.123257095, - 0.122509796, - 0.121009418, - 0.121594043, - 0.123473622, - 0.121534117, - 0.126163876, - 0.125333605, - 0.127195612, - 0.127351547, - 0.121993222, - 0.126615676, - 0.12552833, - 0.125550059, - 0.121579893, - 0.123527856, - 0.122079774, - 0.118737994, - 0.121930564, - 0.12874218, - 0.122401843, - 0.118570637, - 0.118821407, - 0.128929798 - ], - "implementation": "rust-libp2p", - "version": "v0.52-quinn", + "implementation": "rust-libp2p-quinn", + "version": "v0.52", "transportStack": "quic-v1" }, { "result": [ - 0.193955357, - 0.191838393, - 0.185707525, - 0.18439625, - 0.186092025, - 0.192814661, - 0.194410659, - 0.177698505, - 0.18397452, - 0.187375445, - 0.178686736, - 0.196266966, - 0.183676011, - 0.184100187, - 0.186398869, - 0.182792861, - 0.189500162, - 0.189730036, - 0.186554174, - 0.188403543, - 0.181595044, - 0.186891767, - 0.183568489, - 0.19310424, - 0.189837993, - 0.185709836, - 0.183880019, - 0.193767547, - 0.184314979, - 0.185259607, - 0.185158266, - 0.190057896, - 0.189713413, - 0.191629849, - 0.191103107, - 0.175275143, - 0.176528765, - 0.189455681, - 0.184480953, - 0.190791032, - 0.19110977, - 0.190078192, - 0.188819448, - 0.186047966, - 0.193759489, - 0.188825484, - 0.18713003, - 0.192682084, - 0.189891408, - 0.179442502, - 0.185840191, - 0.184212219, - 0.191268782, - 0.196474109, - 0.185797899, - 0.191178143, - 0.17996502, - 0.187223957, - 0.176518985, - 0.183058273, - 0.186481493, - 0.180805715, - 0.186388054, - 0.187049193, - 0.189086, - 0.180250814, - 0.179878324, - 0.191650656, - 0.177340718, - 0.177939012, - 0.186688349, - 0.193248071, - 0.189210006, - 0.184335885, - 0.195558318, - 0.191457144, - 0.190901391, - 0.183383845, - 0.185011959, - 0.183901911, - 0.188519315, - 0.182465856, - 0.188253398, - 0.187399945, - 0.186252925, - 0.186366281, - 0.190913025, - 0.191512127, - 0.188510364, - 0.191454509, - 0.193756964, - 0.187253431, - 0.185228882, - 0.184869075, - 0.190203354, - 0.188588841, - 0.185568816, - 0.189995959, - 0.188487615, - 0.185556762 + 0.192671927, + 0.187084065, + 0.175552916, + 0.187811443, + 0.181258092, + 0.178773915, + 0.184407282, + 0.188750984, + 0.190404653, + 0.193972946, + 0.19422714, + 0.193197157, + 0.184601995, + 0.189156641, + 0.18273711, + 0.193186608, + 0.183927795, + 0.186934131, + 0.190958771, + 0.188215948, + 0.18861096, + 0.179376037, + 0.188882707, + 0.188415451, + 0.188407497, + 0.184104996, + 0.185211475, + 0.190927007, + 0.187903707, + 0.187873183, + 0.181277743, + 0.176737817, + 0.182318449, + 0.191423202, + 0.19175423, + 0.187261063, + 0.187676617, + 0.189906142, + 0.190087361, + 0.194984876, + 0.184127509, + 0.193655673, + 0.191078817, + 0.184833035, + 0.189227263, + 0.184552453, + 0.188669053, + 0.19358092, + 0.180715816, + 0.189203468, + 0.188271142, + 0.191769747, + 0.188152263, + 0.1867012, + 0.19014576, + 0.182390004, + 0.18906202, + 0.187748528, + 0.193902019, + 0.176506366, + 0.186957762, + 0.180437455, + 0.189908086, + 0.188197305, + 0.186395375, + 0.188896764, + 0.188705668, + 0.187787773, + 0.186169419, + 0.187004826, + 0.195038059, + 0.192884548, + 0.1842106, + 0.181043471, + 0.185891909, + 0.183180241, + 0.191562036, + 0.179581737, + 0.191640308, + 0.188553541, + 0.184342605, + 0.188902344, + 0.189128194, + 0.178105402, + 0.188325638, + 0.195453313, + 0.180009013, + 0.184322314, + 0.186855893, + 0.191625024, + 0.190000384, + 0.193639647, + 0.190116934, + 0.176320468, + 0.18824858, + 0.195421926, + 0.183409955, + 0.184970207, + 0.184079156, + 0.194087143 ], "implementation": "https", "version": "v0.1", @@ -852,106 +721,106 @@ }, { "result": [ - 0.12627353, - 0.06322796, - 0.06239489, - 0.1264109, - 0.06442711, - 0.06288316, - 0.063423015, - 0.06305939, - 0.061200827, - 0.06405955, - 0.12528613, - 0.063808054, - 0.12575996, - 0.06232856, - 0.062106553, - 0.061742485, - 0.06300427, - 0.06365775, - 0.1264044, - 0.064532995, - 0.062343795, - 0.06286557, - 0.060364634, - 0.05971806, - 0.12353807, - 0.06258439, - 0.05929562, - 0.05972196, - 0.06360545, - 0.12925683, - 0.12601632, - 0.06344326, - 0.05966915, - 0.122336626, - 0.05977495, - 0.062246505, - 0.12645358, - 0.059061892, - 0.060633846, - 0.0607769, - 0.06428798, - 0.061549623, - 0.06140744, - 0.061188623, - 0.06331852, - 0.06342848, - 0.06377816, - 0.060076326, - 0.06246733, - 0.06367062, - 0.06297103, - 0.12433892, - 0.123757996, - 0.062185377, - 0.12267204, - 0.12601005, - 0.061688837, - 0.06108504, - 0.06469098, - 0.116891906, - 0.061518755, - 0.062108494, - 0.060667146, - 0.05975515, - 0.06373088, - 0.063342385, - 0.06419214, - 0.06232956, - 0.12768248, - 0.12530807, - 0.124848306, - 0.059195627, - 0.122880735, - 0.06024516, - 0.12394544, - 0.1219183, - 0.060800288, - 0.059110496, - 0.11872565, - 0.06012269, - 0.12392691, - 0.06155718, - 0.062292572, - 0.06255667, - 0.063000515, - 0.063261345, - 0.06152581, - 0.059689485, - 0.0626661, - 0.062457502, - 0.12794977, - 0.12336585, - 0.11849746, - 0.06303405, - 0.061456848, - 0.05913779, - 0.0627896, - 0.06271503, - 0.122967996, - 0.06494464 + 0.12284586, + 0.06356202, + 0.12617074, + 0.06282493, + 0.061815616, + 0.06362352, + 0.06082869, + 0.06432958, + 0.06315876, + 0.05908363, + 0.059232745, + 0.06027314, + 0.06502242, + 0.06328234, + 0.061135743, + 0.11751851, + 0.06007697, + 0.064317785, + 0.06128055, + 0.06401471, + 0.059891384, + 0.05860705, + 0.12133849, + 0.12717538, + 0.061451755, + 0.06018901, + 0.11672092, + 0.06269691, + 0.06361394, + 0.06001403, + 0.06319442, + 0.06324474, + 0.063566454, + 0.12721281, + 0.060657468, + 0.0618096, + 0.061807435, + 0.06388281, + 0.06334745, + 0.061351903, + 0.12644267, + 0.12629794, + 0.062263668, + 0.06421475, + 0.12943149, + 0.121865, + 0.06291233, + 0.12243436, + 0.06256572, + 0.12848657, + 0.06077569, + 0.060444485, + 0.06363407, + 0.12646717, + 0.06351031, + 0.0631581, + 0.12270894, + 0.0599375, + 0.12944615, + 0.1250837, + 0.062131096, + 0.060755134, + 0.06263599, + 0.05924945, + 0.06132086, + 0.12614691, + 0.063863166, + 0.06162121, + 0.062112417, + 0.06403672, + 0.06430894, + 0.06130885, + 0.12177931, + 0.061753605, + 0.06193953, + 0.05830817, + 0.06351672, + 0.059269108, + 0.12591228, + 0.064268105, + 0.06267702, + 0.06346971, + 0.06311837, + 0.0613091, + 0.06413541, + 0.0637649, + 0.12228569, + 0.12099567, + 0.06344195, + 0.06298874, + 0.061688073, + 0.06130069, + 0.06347542, + 0.06192032, + 0.062345494, + 0.06341245, + 0.062392864, + 0.06395089, + 0.06433641, + 0.062004086 ], "implementation": "go-libp2p", "version": "v0.27", @@ -959,106 +828,106 @@ }, { "result": [ - 0.06101121, - 0.06183345, - 0.06328221, - 0.06359649, - 0.0591485, - 0.06150341, - 0.06321516, - 0.059354752, - 0.060649384, - 0.06407967, - 0.058438282, - 0.059767395, - 0.061387077, - 0.06037511, - 0.06323172, - 0.06312479, - 0.063504405, - 0.06205196, - 0.062478967, - 0.06400248, - 0.06393319, - 0.06423314, - 0.06364058, - 0.06267748, - 0.061100945, - 0.0648428, - 0.06347108, - 0.063163914, - 0.06385114, - 0.065090336, - 0.062373925, - 0.06277121, - 0.06134507, - 0.061121274, - 0.06150395, - 0.061843053, - 0.06145542, - 0.0640399, - 0.06122422, - 0.06312072, - 0.05970491, - 0.06252107, - 0.063160375, - 0.065689474, - 0.0632885, - 0.06359938, - 0.06314578, - 0.05955939, - 0.060351036, - 0.05965191, - 0.061822657, - 0.060839895, - 0.06424156, - 0.060968608, - 0.064368546, - 0.062631555, - 0.06413804, - 0.06169937, - 0.064843975, - 0.06259285, - 0.064223975, - 0.0629793, - 0.061221484, - 0.06005889, - 0.06414129, - 0.062234107, - 0.063722774, - 0.06349979, - 0.062076468, - 0.061836954, - 0.062146034, - 0.060848385, - 0.0603355, - 0.064369574, - 0.0601086, - 0.064040475, - 0.05995296, - 0.06273966, - 0.06202841, - 0.061105706, - 0.060701724, - 0.061544996, - 0.062079486, - 0.064370014, - 0.06366293, - 0.059759732, - 0.06280063, - 0.05913446, - 0.06253907, - 0.063633665, - 0.061118312, - 0.062750965, - 0.064076975, - 0.06203803, - 0.06192361, - 0.06401403, - 0.06400168, - 0.06163904, - 0.06354152, - 0.060942505 + 0.06310233, + 0.06396904, + 0.061068095, + 0.06014748, + 0.061020043, + 0.061951455, + 0.06262575, + 0.061502624, + 0.06292979, + 0.062413953, + 0.06068053, + 0.061095, + 0.06352485, + 0.063265964, + 0.06007536, + 0.06358303, + 0.06369051, + 0.06305469, + 0.060174923, + 0.065094024, + 0.060472313, + 0.06494354, + 0.061717723, + 0.06155924, + 0.0621861, + 0.06177255, + 0.062224697, + 0.06117516, + 0.062988505, + 0.06410115, + 0.06282853, + 0.06439072, + 0.063188635, + 0.062161375, + 0.06147264, + 0.064257845, + 0.064405486, + 0.062159687, + 0.062297147, + 0.061637852, + 0.06016042, + 0.061473973, + 0.061981115, + 0.06444071, + 0.0607793, + 0.06296811, + 0.06263472, + 0.062778644, + 0.060931776, + 0.061821148, + 0.06353392, + 0.060889225, + 0.06347669, + 0.06429089, + 0.060341045, + 0.06401452, + 0.06424325, + 0.06072287, + 0.060300607, + 0.061922014, + 0.06056163, + 0.0633675, + 0.06412715, + 0.06494307, + 0.06391485, + 0.0580077, + 0.06350252, + 0.063422434, + 0.061420485, + 0.0620956, + 0.06521214, + 0.062092576, + 0.0622884, + 0.06318063, + 0.061394177, + 0.06411254, + 0.060078748, + 0.062312506, + 0.061563957, + 0.06315601, + 0.06415131, + 0.06386827, + 0.064262696, + 0.062073503, + 0.061300326, + 0.06398816, + 0.065058194, + 0.061822336, + 0.061251495, + 0.06363339, + 0.06366372, + 0.06278822, + 0.0629387, + 0.06343747, + 0.06232634, + 0.06368589, + 0.06327905, + 0.06165553, + 0.06013382, + 0.06105537 ], "implementation": "go-libp2p", "version": "v0.27", @@ -1070,173 +939,173 @@ "pings": { "unit": "s", "results": [ - 0.0611, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.0611, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.061, - 0.0613, - 0.061, - 0.061 + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.062, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061799999999999994, + 0.061799999999999994, + 0.061700000000000005, + 0.0619, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.0621, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605, + 0.0605 ] }, "iperf": { "unit": "bit/s", "results": [ - 3260000000, - 3260000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3260000000, - 3260000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3250000000, - 3260000000, - 3260000000, - 3260000000, - 3230000000, - 3200000000, - 3190000000, - 3180000000, - 3180000000, - 3200000000, - 3240000000, - 3240000000, - 3250000000, - 3240000000, - 3250000000, - 3250000000, - 3240000000, - 3240000000, - 3250000000, - 3250000000, - 3250000000, + 3290000000, + 3290000000, + 3280000000, + 3280000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, 3270000000, 3280000000, 3280000000, 3280000000, 3280000000, + 3280000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3290000000, + 3280000000, + 3280000000, + 3280000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, 3270000000, 3270000000, 3280000000, 3280000000, 3270000000, - 3250000000, - 3050000000 + 3130000000 ] } } \ No newline at end of file diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index e43e95e6d..11aa98a3a 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,6 +1,6 @@ export type Version = { id: string, - implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https" | "quic-go", + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "rust-libp2p-quinn" | "zig-libp2p" | "https" | "quic-go", transportStacks: string[], } @@ -16,9 +16,9 @@ export const versions: Array = [ transportStacks: ["tcp", "quic-v1"] }, { - id: "v0.52-quinn", - implementation: "rust-libp2p", - transportStacks: ["tcp", "quic-v1"] + id: "v0.52", + implementation: "rust-libp2p-quinn", + transportStacks: ["quic-v1"] }, { id: "v0.1", From 9b3d61a991b7f99c82783961f679bfaf2af7daa4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 18 May 2023 17:09:31 +0900 Subject: [PATCH 085/101] fix(quic-go): use upstream With https://github.com/quic-go/perf/pull/5 and https://github.com/quic-go/perf/pull/4 one can use the upstream implementation directly. --- perf/impl/quic-go/v0.34/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/perf/impl/quic-go/v0.34/Makefile b/perf/impl/quic-go/v0.34/Makefile index b8c4a51af..d8c1cedc1 100644 --- a/perf/impl/quic-go/v0.34/Makefile +++ b/perf/impl/quic-go/v0.34/Makefile @@ -1,4 +1,4 @@ -commitSha := b3ed7966a563d528b7aa19265cbca929bf2bc73f +commitSha := 5ef52595604bee86e75d9692d08441ed6c208668 all: perf @@ -10,8 +10,7 @@ perf-${commitSha}: perf-${commitSha}.zip unzip -o perf-${commitSha}.zip perf-${commitSha}.zip: - # TODO: Depend on upstream, not mxinden - wget -O $@ "https://github.com/mxinden/perf/archive/${commitSha}.zip" + wget -O $@ "https://github.com/quic-go/perf/archive/${commitSha}.zip" clean: rm perf-*.zip From a91159bba21133ac76fde2f7ddc6c27ec2ac1382 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 19 May 2023 16:07:21 +0900 Subject: [PATCH 086/101] Have rsync adhere to .gitignore --- perf/runner/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 3d2fd5ce8..76de3f9dc 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -220,7 +220,7 @@ function execCommand(cmd: string): string { } function copyAndBuildPerfImplementations(ip: string) { - const stdout = execCommand(`rsync -avz --progress ../impl ec2-user@${ip}:/home/ec2-user`); + const stdout = execCommand(`rsync -avz --progress --filter=':- .gitignore' ../impl ec2-user@${ip}:/home/ec2-user`); console.error(stdout.toString()); const stdout2 = execCommand(`ssh ec2-user@${ip} 'cd impl && make'`); From c5de2c7b1b2f3475aa6565b4ef07f11ab411129a Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 19 May 2023 18:23:01 +0900 Subject: [PATCH 087/101] Change implementation output format - Makes emited values self-describing. - Ensures accounting of connection establishment. - Allows differentiation in subsequent data analysis. --- perf/README.md | 5 +- perf/impl/go-libp2p/v0.27/.gitignore | 3 + perf/impl/go-libp2p/v0.27/Makefile | 8 +- perf/impl/go-libp2p/v0.27/main.go | 39 +- perf/impl/go-libp2p/v0.27/perf.go | 21 +- perf/impl/https/.gitignore | 1 + perf/impl/https/v0.1/Makefile | 4 +- perf/impl/https/v0.1/main.go | 31 +- perf/impl/quic-go/v0.34/Makefile | 9 +- perf/impl/rust-libp2p-quinn/v0.52/Makefile | 2 +- perf/impl/rust-libp2p/v0.52/Makefile | 2 +- perf/runner/benchmark-results.json | 4800 ++++++++++++++++---- perf/runner/src/benchmark-result-type.ts | 14 +- perf/runner/src/index.ts | 34 +- 14 files changed, 3963 insertions(+), 1010 deletions(-) create mode 100644 perf/impl/go-libp2p/v0.27/.gitignore diff --git a/perf/README.md b/perf/README.md index 69031d1f5..4fd2f544e 100644 --- a/perf/README.md +++ b/perf/README.md @@ -41,6 +41,9 @@ Benchmark results can be visualized with https://observablehq.com/@mxinden-works - `--download-bytes` number of bytes to upload per stream. - Output - Logging MUST go to stderr. - - Measurement output is printed to stdout as JSON in the form of `{ latencies: [ 1.0, 42.0 ]}`. + - Measurement output is printed to stdout as JSON in the form of: + ```json + {"connectionEstablishedSeconds":0.246442851,"uploadSeconds":0.000002077,"DownloadSeconds":0.060712241} + ``` 2. Reference implementation in `runner/src/versions.ts`. diff --git a/perf/impl/go-libp2p/v0.27/.gitignore b/perf/impl/go-libp2p/v0.27/.gitignore new file mode 100644 index 000000000..d06b4219a --- /dev/null +++ b/perf/impl/go-libp2p/v0.27/.gitignore @@ -0,0 +1,3 @@ +perf +.cache +v0.27 \ No newline at end of file diff --git a/perf/impl/go-libp2p/v0.27/Makefile b/perf/impl/go-libp2p/v0.27/Makefile index 3742d184b..061ec78ef 100644 --- a/perf/impl/go-libp2p/v0.27/Makefile +++ b/perf/impl/go-libp2p/v0.27/Makefile @@ -1,9 +1,13 @@ +GO_FILES := $(wildcard *.go) + all: perf -perf: +perf: $(GO_FILES) docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . clean: rm perf + rm .cache + rm v0.27 -.PHONY: all +.PHONY: all clean diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index c341e03b6..0772727eb 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -5,12 +5,12 @@ import ( "encoding/json" "flag" "fmt" - "time" "strings" + "time" "github.com/libp2p/go-libp2p" - "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/crypto" + "github.com/libp2p/go-libp2p/core/peer" "github.com/multiformats/go-multiaddr" ) @@ -23,13 +23,12 @@ func main() { downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") flag.Parse() - var opts []libp2p.Option - if *runServer { + if *runServer { opts = append(opts, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/udp/4001/quic-v1")) // TODO: Fake identity. For testing only. - priv, _, err := crypto.GenerateEd25519Key(&simpleReader{seed:uint8(*secretKeySeed)}) + priv, _, err := crypto.GenerateEd25519Key(&simpleReader{seed: uint8(*secretKeySeed)}) if err != nil { panic(err) } @@ -75,31 +74,23 @@ func main() { panic(err) } + start := time.Now() err = h.Connect(context.Background(), *serverInfo) if err != nil { panic(err) } + connectionEstablished := time.Since(start) - times := make([]time.Duration, 0, 1) - - start := time.Now() - err = perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) + upload, download, err := perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) if err != nil { panic(err) } - times = append(times, time.Since(start)) - - // float32 because json - timesS := make([]float32, 0, len(times)) - for _, t := range times { - timesS = append(timesS, float32(t.Seconds())) - } - - latencies := Latencies{ - Latencies: timesS, - } - jsonB, err := json.Marshal(latencies) + jsonB, err := json.Marshal(Result{ + ConnectionEstablishedSeconds: connectionEstablished.Seconds(), + UploadSeconds: upload.Seconds(), + DownloadSeconds: download.Seconds(), + }) if err != nil { panic(err) } @@ -107,8 +98,10 @@ func main() { fmt.Println(string(jsonB)) } -type Latencies struct { - Latencies []float32 `json:"latencies"` +type Result struct { + ConnectionEstablishedSeconds float64 `json:"connectionEstablishedSeconds"` + UploadSeconds float64 `json:"uploadSeconds"` + DownloadSeconds float64 `json: "downloadSeconds"` } type simpleReader struct { diff --git a/perf/impl/go-libp2p/v0.27/perf.go b/perf/impl/go-libp2p/v0.27/perf.go index cc7096bcb..7a3e2b7a3 100644 --- a/perf/impl/go-libp2p/v0.27/perf.go +++ b/perf/impl/go-libp2p/v0.27/perf.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "fmt" "io" + "time" logging "github.com/ipfs/go-log/v2" pool "github.com/libp2p/go-buffer-pool" @@ -93,10 +94,10 @@ func (ps *PerfService) drainStream(ctx context.Context, s network.Stream, buf [] } } -func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) error { +func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) (time.Duration, time.Duration, error) { s, err := ps.Host.NewStream(ctx, p, ID) if err != nil { - return err + return 0, 0, err } buf := pool.Get(BlockSize) @@ -107,22 +108,26 @@ func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint6 _, err = s.Write(sizeBuf) if err != nil { - - return err + return 0, 0, err } + sendStart := time.Now() err = ps.sendBytes(ctx, s, bytesToSend, buf) if err != nil { - return err + return 0, 0, err } + sendDuration := time.Since(sendStart) + recvStart := time.Now() recvd, err := ps.drainStream(ctx, s, buf) if err != nil { - return err + return sendDuration, 0, err } + recvDuration := time.Since(recvStart) if recvd != bytesToRecv { - return fmt.Errorf("expected to recv %d bytes, got %d", bytesToRecv, recvd) + return sendDuration, recvDuration, fmt.Errorf("expected to recv %d bytes, got %d", bytesToRecv, recvd) } - return err + + return sendDuration, recvDuration, nil } diff --git a/perf/impl/https/.gitignore b/perf/impl/https/.gitignore index 6652a25c1..819c818b2 100644 --- a/perf/impl/https/.gitignore +++ b/perf/impl/https/.gitignore @@ -2,3 +2,4 @@ go-libp2p-*.zip go-libp2p-* go-libp2p-*/* image.json +https diff --git a/perf/impl/https/v0.1/Makefile b/perf/impl/https/v0.1/Makefile index 3742d184b..7df62c287 100644 --- a/perf/impl/https/v0.1/Makefile +++ b/perf/impl/https/v0.1/Makefile @@ -1,6 +1,8 @@ +GO_FILES := $(wildcard *.go) + all: perf -perf: +perf: $(GO_FILES) docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . clean: diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index b0b2a0f4b..9dc952d45 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -54,7 +54,7 @@ func handleRequest(w http.ResponseWriter, r *http.Request) { } } -func runClient(serverAddr string, uploadBytes, downloadBytes uint64) (time.Duration, error) { +func runClient(serverAddr string, uploadBytes, downloadBytes uint64) (time.Duration, time.Duration, error) { client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ @@ -69,19 +69,20 @@ func runClient(serverAddr string, uploadBytes, downloadBytes uint64) (time.Durat startTime := time.Now() resp, err := client.Post(fmt.Sprintf("https://%s/", serverAddr), "application/octet-stream", bytes.NewReader(reqBody)) if err != nil { - return 0, err + return 0, 0, err } + uploadDoneTime := time.Now() respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return 0, fmt.Errorf("error reading response: %w\n", err) + return 0, 0, fmt.Errorf("error reading response: %w\n", err) } defer resp.Body.Close() if uint64(len(respBody)) != downloadBytes { - return 0, fmt.Errorf("expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) + return 0, 0, fmt.Errorf("expected %d bytes in response, but received %d\n", downloadBytes, len(respBody)) } - return time.Since(startTime), nil + return uploadDoneTime.Sub(startTime), time.Since(uploadDoneTime), nil } func generateEphemeralCertificate() (tls.Certificate, error) { @@ -135,8 +136,10 @@ func generateEphemeralCertificate() (tls.Certificate, error) { return cert, nil } -type Latencies struct { - Latencies []float64 `json:"latencies"` +type Result struct { + ConnectionEstablishedSeconds float64 `json:"connectionEstablishedSeconds"` + UploadSeconds float64 `json:"uploadSeconds"` + DownloadSeconds float64 `json: "downloadSeconds"` } func main() { @@ -178,17 +181,17 @@ func main() { } // Run the client and print the results - d, err := runClient(*serverAddr, *uploadBytes, *downloadBytes) + upload, download, err := runClient(*serverAddr, *uploadBytes, *downloadBytes) if err != nil { log.Fatal(err) } - // Convert durations to seconds and marshal as JSON - latencies := Latencies{ - Latencies: []float64{d.Seconds()}, - } - - jsonB, err := json.Marshal(latencies) + jsonB, err := json.Marshal(Result{ + // TODO: Ideally we would be able to measure the Go std TCP+TLS connection establishment time. + ConnectionEstablishedSeconds: 0, + UploadSeconds: upload.Seconds(), + DownloadSeconds: download.Seconds(), + }) if err != nil { panic(err) } diff --git a/perf/impl/quic-go/v0.34/Makefile b/perf/impl/quic-go/v0.34/Makefile index d8c1cedc1..b3e08dd5c 100644 --- a/perf/impl/quic-go/v0.34/Makefile +++ b/perf/impl/quic-go/v0.34/Makefile @@ -1,4 +1,4 @@ -commitSha := 5ef52595604bee86e75d9692d08441ed6c208668 +commitSha := d6c70ce629c3df1ac0ad71baafc2d6e53d02de40 all: perf @@ -10,13 +10,16 @@ perf-${commitSha}: perf-${commitSha}.zip unzip -o perf-${commitSha}.zip perf-${commitSha}.zip: - wget -O $@ "https://github.com/quic-go/perf/archive/${commitSha}.zip" + # TODO: Use upstream + wget -O $@ "https://github.com/mxinden/perf/archive/${commitSha}.zip" clean: rm perf-*.zip rm -rf perf-* rm perf + rm .cache + rm v0.27 -.PHONY: clean +.PHONY: all clean diff --git a/perf/impl/rust-libp2p-quinn/v0.52/Makefile b/perf/impl/rust-libp2p-quinn/v0.52/Makefile index 7211ff749..2314aa9e1 100644 --- a/perf/impl/rust-libp2p-quinn/v0.52/Makefile +++ b/perf/impl/rust-libp2p-quinn/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := bb75989700e64318203027e7f6fe284a0e86a1e5 +commitSha := f91afe9e64ed89441f45a1bb3261c3930da040d1 all: perf diff --git a/perf/impl/rust-libp2p/v0.52/Makefile b/perf/impl/rust-libp2p/v0.52/Makefile index 4a649348a..9565472bd 100644 --- a/perf/impl/rust-libp2p/v0.52/Makefile +++ b/perf/impl/rust-libp2p/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := 08e4276e048f4d90c064960e689f41e4f30c80b9 +commitSha := fa6886cd73d09b9b0ff0b7ce6334a42d760ddf88 all: perf diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 5ea4f4d87..84b879146 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -6,11 +6,31 @@ "results": [ { "result": [ - 476723778.8248372, - 461660061.64927495, - 482555957.5924573, - 477675526.484072, - 454270690.6168601 + { + "connectionEstablishedSeconds": 0.064615047, + "uploadSeconds": 0.988964167, + "DownloadSeconds": 1.19e-7 + }, + { + "connectionEstablishedSeconds": 0.064595, + "uploadSeconds": 1.006270274, + "DownloadSeconds": 5.7e-8 + }, + { + "connectionEstablishedSeconds": 0.061957379, + "uploadSeconds": 0.967206045, + "DownloadSeconds": 1.5e-7 + }, + { + "connectionEstablishedSeconds": 0.066333628, + "uploadSeconds": 1.041923666, + "DownloadSeconds": 8.1e-8 + }, + { + "connectionEstablishedSeconds": 0.064395005, + "uploadSeconds": 1.001865646, + "DownloadSeconds": 1.51e-7 + } ], "implementation": "quic-go", "version": "v0.34", @@ -18,11 +38,31 @@ }, { "result": [ - 23765074.98195795, - 22951785.20901357, - 21295876.480998363, - 20670355.201553, - 22423122.172141254 + { + "connection_established_seconds": 0.130085386, + "upload_seconds": 37.706576579, + "download_seconds": 0.06323964 + }, + { + "connection_established_seconds": 0.126073934, + "upload_seconds": 35.394770671, + "download_seconds": 0.062791976 + }, + { + "connection_established_seconds": 0.118604112, + "upload_seconds": 34.323311088, + "download_seconds": 0.059298347 + }, + { + "connection_established_seconds": 0.124873844, + "upload_seconds": 35.669218402, + "download_seconds": 0.063715144 + }, + { + "connection_established_seconds": 0.127441566, + "upload_seconds": 35.740599168, + "download_seconds": 0.063565162 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -30,11 +70,31 @@ }, { "result": [ - 36852744.228101, - 43840643.78511356, - 57316078.625662796, - 52626915.16678075, - 105155556.02028346 + { + "connection_established_seconds": 0.065548222, + "upload_seconds": 14.530045427, + "download_seconds": 0.000076453 + }, + { + "connection_established_seconds": 0.065969131, + "upload_seconds": 9.529083867, + "download_seconds": 0.000050095 + }, + { + "connection_established_seconds": 0.066708447, + "upload_seconds": 12.083736464, + "download_seconds": 0.000108361 + }, + { + "connection_established_seconds": 0.062826795, + "upload_seconds": 8.016417861, + "download_seconds": 0.000057748 + }, + { + "connection_established_seconds": 0.061946997, + "upload_seconds": 15.177270054, + "download_seconds": 0.000040064 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -42,11 +102,31 @@ }, { "result": [ - 587621511.1614571, - 563901201.5760119, - 558907605.1141443, - 592131180.9976248, - 580282064.2821823 + { + "connection_established_seconds": 0.065995905, + "upload_seconds": 1.485719002, + "download_seconds": 0.000553305 + }, + { + "connection_established_seconds": 0.063538531, + "upload_seconds": 1.395860033, + "download_seconds": 0.000067559 + }, + { + "connection_established_seconds": 0.065835491, + "upload_seconds": 1.454903434, + "download_seconds": 0.00003936 + }, + { + "connection_established_seconds": 0.062994266, + "upload_seconds": 1.390279352, + "download_seconds": 0.000037439 + }, + { + "connection_established_seconds": 0.061966219, + "upload_seconds": 1.365005507, + "download_seconds": 0.000038552 + } ], "implementation": "rust-libp2p-quinn", "version": "v0.52", @@ -54,11 +134,31 @@ }, { "result": [ - 303350936.8223497, - 286964977.924173, - 315075038.70949465, - 283952075.21250784, - 294792314.516067 + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 2.874647174, + "DownloadSeconds": 0.000004258 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 2.834617305, + "DownloadSeconds": 0.000002323 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 2.7802673049999997, + "DownloadSeconds": 0.000002272 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 2.875364372, + "DownloadSeconds": 0.000004399 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 2.886239104, + "DownloadSeconds": 0.000004495 + } ], "implementation": "https", "version": "v0.1", @@ -66,11 +166,31 @@ }, { "result": [ - 248955230.98554525, - 287854438.84119874, - 272133599.2185647, - 279250074.1516996, - 253393667.34529442 + { + "connectionEstablishedSeconds": 0.251550611, + "uploadSeconds": 2.846900655, + "DownloadSeconds": 0.123533731 + }, + { + "connectionEstablishedSeconds": 0.242425913, + "uploadSeconds": 2.795257683, + "DownloadSeconds": 0.118580522 + }, + { + "connectionEstablishedSeconds": 0.246873845, + "uploadSeconds": 3.063707114, + "DownloadSeconds": 0.121986488 + }, + { + "connectionEstablishedSeconds": 0.249576396, + "uploadSeconds": 3.085365409, + "DownloadSeconds": 0.122945992 + }, + { + "connectionEstablishedSeconds": 0.245968516, + "uploadSeconds": 2.773947588, + "DownloadSeconds": 0.120331421 + } ], "implementation": "go-libp2p", "version": "v0.27", @@ -78,17 +198,41 @@ }, { "result": [ - 628532042.7331849, - 617444244.3285623, - 625160545.3616196, - 620091153.002094, - 606479285.7655139 + { + "connectionEstablishedSeconds": 0.126053411, + "uploadSeconds": 1.260300357, + "DownloadSeconds": 0.061025325 + }, + { + "connectionEstablishedSeconds": 0.1235829, + "uploadSeconds": 1.221448272, + "DownloadSeconds": 0.059113222 + }, + { + "connectionEstablishedSeconds": 0.12598381, + "uploadSeconds": 1.248171035, + "DownloadSeconds": 0.060479591 + }, + { + "connectionEstablishedSeconds": 0.127167588, + "uploadSeconds": 1.270804783, + "DownloadSeconds": 0.060895254 + }, + { + "connectionEstablishedSeconds": 0.12712039, + "uploadSeconds": 1.276295741, + "DownloadSeconds": 0.061811092 + } ], "implementation": "go-libp2p", "version": "v0.27", "transportStack": "quic-v1" } - ] + ], + "parameters": { + "uploadBytes": 104857600, + "downloadBytes": 0 + } }, { "name": "Single Connection throughput – Download 100 MiB", @@ -96,11 +240,31 @@ "results": [ { "result": [ - 476749517.7722385, - 467811983.10466784, - 446846915.95167285, - 440905820.23930603, - 442712191.435396 + { + "connectionEstablishedSeconds": 0.061999713, + "uploadSeconds": 4.39e-7, + "DownloadSeconds": 1.028321192 + }, + { + "connectionEstablishedSeconds": 0.064917296, + "uploadSeconds": 5.56e-7, + "DownloadSeconds": 1.061596996 + }, + { + "connectionEstablishedSeconds": 0.066126296, + "uploadSeconds": 7.02e-7, + "DownloadSeconds": 1.087863123 + }, + { + "connectionEstablishedSeconds": 0.062688429, + "uploadSeconds": 5.69e-7, + "DownloadSeconds": 1.042664418 + }, + { + "connectionEstablishedSeconds": 0.062954018, + "uploadSeconds": 5.47e-7, + "DownloadSeconds": 1.0342652 + } ], "implementation": "quic-go", "version": "v0.34", @@ -108,11 +272,31 @@ }, { "result": [ - 23489986.277543712, - 23989190.127659697, - 22047202.20693784, - 23535688.679104857, - 23750819.898304287 + { + "connection_established_seconds": 0.12706415, + "upload_seconds": 0.063256119, + "download_seconds": 35.974620608 + }, + { + "connection_established_seconds": 0.127749712, + "upload_seconds": 0.063366234, + "download_seconds": 41.601253149 + }, + { + "connection_established_seconds": 0.122257267, + "upload_seconds": 0.060835769, + "download_seconds": 34.346292556 + }, + { + "connection_established_seconds": 0.128953805, + "upload_seconds": 0.064083786, + "download_seconds": 42.747025706 + }, + { + "connection_established_seconds": 0.1210829, + "upload_seconds": 0.060118424, + "download_seconds": 34.064101133 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -120,11 +304,31 @@ }, { "result": [ - 48010448.5791753, - 63604116.19768055, - 68905977.78654173, - 52916573.41143532, - 80712143.69185075 + { + "connection_established_seconds": 0.066243543, + "upload_seconds": 0.129079158, + "download_seconds": 10.54329554 + }, + { + "connection_established_seconds": 0.063366265, + "upload_seconds": 0.123480025, + "download_seconds": 13.530595282 + }, + { + "connection_established_seconds": 0.063453185, + "upload_seconds": 0.123524922, + "download_seconds": 12.251153406 + }, + { + "connection_established_seconds": 0.063395541, + "upload_seconds": 0.123495377, + "download_seconds": 10.753483627 + }, + { + "connection_established_seconds": 0.063278224, + "upload_seconds": 0.123278503, + "download_seconds": 13.267019601 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -132,11 +336,31 @@ }, { "result": [ - 583364875.6727204, - 574905132.1426404, - 576181208.0931789, - 556790173.646611, - 584184486.9257556 + { + "connection_established_seconds": 0.06488199, + "upload_seconds": 0.125932155, + "download_seconds": 1.3633550589999999 + }, + { + "connection_established_seconds": 0.064353019, + "upload_seconds": 0.125460117, + "download_seconds": 1.3598140189999999 + }, + { + "connection_established_seconds": 0.062296858, + "upload_seconds": 0.12124451, + "download_seconds": 1.313197081 + }, + { + "connection_established_seconds": 0.065277725, + "upload_seconds": 0.127151015, + "download_seconds": 1.415552125 + }, + { + "connection_established_seconds": 0.064746505, + "upload_seconds": 0.126296331, + "download_seconds": 1.373616806 + } ], "implementation": "rust-libp2p-quinn", "version": "v0.52", @@ -144,11 +368,31 @@ }, { "result": [ - 275173785.9263513, - 289390075.919085, - 290850417.7955512, - 249953022.7856405, - 281877043.9985076 + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187967569, + "DownloadSeconds": 2.7059459219999997 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185706236, + "DownloadSeconds": 2.61942649 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192289066, + "DownloadSeconds": 2.716054685 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.191801605, + "DownloadSeconds": 2.802501777 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193762824, + "DownloadSeconds": 3.006738304 + } ], "implementation": "https", "version": "v0.1", @@ -156,11 +400,31 @@ }, { "result": [ - 273784647.29723024, - 272677630.60313463, - 270261907.5924625, - 277904300.24740565, - 280673597.2540147 + { + "connectionEstablishedSeconds": 0.249739662, + "uploadSeconds": 0.000002098, + "DownloadSeconds": 2.9350942460000002 + }, + { + "connectionEstablishedSeconds": 0.254077537, + "uploadSeconds": 0.000001776, + "DownloadSeconds": 2.99984772 + }, + { + "connectionEstablishedSeconds": 0.26064741, + "uploadSeconds": 0.000002265, + "DownloadSeconds": 3.07579614 + }, + { + "connectionEstablishedSeconds": 0.248876875, + "uploadSeconds": 0.000001814, + "DownloadSeconds": 3.109052261 + }, + { + "connectionEstablishedSeconds": 0.257652776, + "uploadSeconds": 0.000001835, + "DownloadSeconds": 3.094898801 + } ], "implementation": "go-libp2p", "version": "v0.27", @@ -168,17 +432,41 @@ }, { "result": [ - 611693361.4131863, - 616559070.6479324, - 670183088.6106693, - 622577916.6065818, - 638752777.1129873 + { + "connectionEstablishedSeconds": 0.129198968, + "uploadSeconds": 0.000001513, + "DownloadSeconds": 1.336376132 + }, + { + "connectionEstablishedSeconds": 0.128866615, + "uploadSeconds": 0.000001247, + "DownloadSeconds": 1.357847528 + }, + { + "connectionEstablishedSeconds": 0.128139163, + "uploadSeconds": 0.000001393, + "DownloadSeconds": 1.343668511 + }, + { + "connectionEstablishedSeconds": 0.130263946, + "uploadSeconds": 0.000001313, + "DownloadSeconds": 1.353385803 + }, + { + "connectionEstablishedSeconds": 0.124757242, + "uploadSeconds": 0.000001468, + "DownloadSeconds": 1.3143922639999999 + } ], "implementation": "go-libp2p", "version": "v0.27", "transportStack": "quic-v1" } - ] + ], + "parameters": { + "uploadBytes": 0, + "downloadBytes": 104857600 + } }, { "name": "Connection establishment + 1 byte round trip latencies", @@ -186,106 +474,506 @@ "results": [ { "result": [ - 0.060905, - 0.062693, - 0.063777, - 0.063916, - 0.059215, - 0.065067, - 0.062213, - 0.064145, - 0.062774, - 0.062359, - 0.06166, - 0.061706, - 0.060264, - 0.060664, - 0.063287, - 0.061812, - 0.0629, - 0.059316, - 0.05919, - 0.062934, - 0.063118, - 0.060439, - 0.064315, - 0.062508, - 0.063761, - 0.063315, - 0.061367, - 0.062988, - 0.059807, - 0.060197, - 0.060838, - 0.062964, - 0.06223, - 0.062095, - 0.062096, - 0.064432, - 0.063195, - 0.065238, - 0.061205, - 0.062939, - 0.063537, - 0.06006, - 0.060019, - 0.064216, - 0.060701, - 0.062679, - 0.062253, - 0.064651, - 0.062843, - 0.060521, - 0.060848, - 0.059283, - 0.062424, - 0.061856, - 0.063087, - 0.063297, - 0.061369, - 0.063544, - 0.062058, - 0.062173, - 0.062172, - 0.061188, - 0.063542, - 0.061727, - 0.061679, - 0.06286, - 0.060542, - 0.058694, - 0.061641, - 0.06066, - 0.061464, - 0.060379, - 0.062796, - 0.062687, - 0.062132, - 0.063595, - 0.064073, - 0.061627, - 0.060453, - 0.062774, - 0.063695, - 0.060345, - 0.061924, - 0.060824, - 0.059899, - 0.063754, - 0.062419, - 0.063831, - 0.064334, - 0.061046, - 0.061326, - 0.060717, - 0.064362, - 0.061458, - 0.058738, - 0.065154, - 0.062657, - 0.061958, - 0.062341, - 0.060581 + { + "connectionEstablishedSeconds": 0.065069473, + "uploadSeconds": 0.000001866, + "DownloadSeconds": 0.062256472 + }, + { + "connectionEstablishedSeconds": 0.064288585, + "uploadSeconds": 0.000002063, + "DownloadSeconds": 0.06233876 + }, + { + "connectionEstablishedSeconds": 0.064484789, + "uploadSeconds": 0.000002073, + "DownloadSeconds": 0.062723672 + }, + { + "connectionEstablishedSeconds": 0.062385008, + "uploadSeconds": 0.000001881, + "DownloadSeconds": 0.060628645 + }, + { + "connectionEstablishedSeconds": 0.063304243, + "uploadSeconds": 0.000001961, + "DownloadSeconds": 0.061635519 + }, + { + "connectionEstablishedSeconds": 0.063332073, + "uploadSeconds": 8.86e-7, + "DownloadSeconds": 0.061448365 + }, + { + "connectionEstablishedSeconds": 0.062947885, + "uploadSeconds": 8.13e-7, + "DownloadSeconds": 0.0612649 + }, + { + "connectionEstablishedSeconds": 0.065377389, + "uploadSeconds": 7.24e-7, + "DownloadSeconds": 0.063726463 + }, + { + "connectionEstablishedSeconds": 0.06389184, + "uploadSeconds": 0.000001823, + "DownloadSeconds": 0.062134002 + }, + { + "connectionEstablishedSeconds": 0.06182418, + "uploadSeconds": 0.000001945, + "DownloadSeconds": 0.060201813 + }, + { + "connectionEstablishedSeconds": 0.062630776, + "uploadSeconds": 0.000001825, + "DownloadSeconds": 0.060914704 + }, + { + "connectionEstablishedSeconds": 0.06616315, + "uploadSeconds": 0.000001876, + "DownloadSeconds": 0.064389835 + }, + { + "connectionEstablishedSeconds": 0.060004119, + "uploadSeconds": 0.000001963, + "DownloadSeconds": 0.058251497 + }, + { + "connectionEstablishedSeconds": 0.064923606, + "uploadSeconds": 8.29e-7, + "DownloadSeconds": 0.063041205 + }, + { + "connectionEstablishedSeconds": 0.064839276, + "uploadSeconds": 0.000001954, + "DownloadSeconds": 0.063133865 + }, + { + "connectionEstablishedSeconds": 0.063852939, + "uploadSeconds": 0.000001953, + "DownloadSeconds": 0.062121333 + }, + { + "connectionEstablishedSeconds": 0.064406821, + "uploadSeconds": 8.09e-7, + "DownloadSeconds": 0.064277535 + }, + { + "connectionEstablishedSeconds": 0.063644647, + "uploadSeconds": 0.00000193, + "DownloadSeconds": 0.061865325 + }, + { + "connectionEstablishedSeconds": 0.06144155, + "uploadSeconds": 0.000001766, + "DownloadSeconds": 0.059727007 + }, + { + "connectionEstablishedSeconds": 0.060326476, + "uploadSeconds": 0.000001896, + "DownloadSeconds": 0.058577622 + }, + { + "connectionEstablishedSeconds": 0.062268388, + "uploadSeconds": 8.54e-7, + "DownloadSeconds": 0.060703616 + }, + { + "connectionEstablishedSeconds": 0.06514159, + "uploadSeconds": 0.000001883, + "DownloadSeconds": 0.063407356 + }, + { + "connectionEstablishedSeconds": 0.06609423, + "uploadSeconds": 0.000001916, + "DownloadSeconds": 0.06438571 + }, + { + "connectionEstablishedSeconds": 0.06248634, + "uploadSeconds": 0.000001957, + "DownloadSeconds": 0.060845688 + }, + { + "connectionEstablishedSeconds": 0.059670474, + "uploadSeconds": 0.000001877, + "DownloadSeconds": 0.058048044 + }, + { + "connectionEstablishedSeconds": 0.064270199, + "uploadSeconds": 0.000001983, + "DownloadSeconds": 0.062635036 + }, + { + "connectionEstablishedSeconds": 0.06429604, + "uploadSeconds": 7.7e-7, + "DownloadSeconds": 0.062659615 + }, + { + "connectionEstablishedSeconds": 0.064919854, + "uploadSeconds": 0.000001919, + "DownloadSeconds": 0.063192498 + }, + { + "connectionEstablishedSeconds": 0.065954302, + "uploadSeconds": 0.00000183, + "DownloadSeconds": 0.064251883 + }, + { + "connectionEstablishedSeconds": 0.064098869, + "uploadSeconds": 7.44e-7, + "DownloadSeconds": 0.062482036 + }, + { + "connectionEstablishedSeconds": 0.062022221, + "uploadSeconds": 8.36e-7, + "DownloadSeconds": 0.060461973 + }, + { + "connectionEstablishedSeconds": 0.064627862, + "uploadSeconds": 0.000001859, + "DownloadSeconds": 0.062912864 + }, + { + "connectionEstablishedSeconds": 0.066653299, + "uploadSeconds": 7.84e-7, + "DownloadSeconds": 0.065027545 + }, + { + "connectionEstablishedSeconds": 0.063758312, + "uploadSeconds": 0.000001955, + "DownloadSeconds": 0.061661263 + }, + { + "connectionEstablishedSeconds": 0.065877464, + "uploadSeconds": 0.000002, + "DownloadSeconds": 0.06417309 + }, + { + "connectionEstablishedSeconds": 0.064380299, + "uploadSeconds": 8.84e-7, + "DownloadSeconds": 0.062695264 + }, + { + "connectionEstablishedSeconds": 0.066849312, + "uploadSeconds": 0.000001934, + "DownloadSeconds": 0.06515325 + }, + { + "connectionEstablishedSeconds": 0.065114281, + "uploadSeconds": 8.7e-7, + "DownloadSeconds": 0.063618019 + }, + { + "connectionEstablishedSeconds": 0.060301618, + "uploadSeconds": 8.29e-7, + "DownloadSeconds": 0.058627961 + }, + { + "connectionEstablishedSeconds": 0.061927104, + "uploadSeconds": 0.000001807, + "DownloadSeconds": 0.060320047 + }, + { + "connectionEstablishedSeconds": 0.061410291, + "uploadSeconds": 7.8e-7, + "DownloadSeconds": 0.059774255 + }, + { + "connectionEstablishedSeconds": 0.060291912, + "uploadSeconds": 0.000001748, + "DownloadSeconds": 0.058655747 + }, + { + "connectionEstablishedSeconds": 0.064003172, + "uploadSeconds": 0.0000019, + "DownloadSeconds": 0.062414151 + }, + { + "connectionEstablishedSeconds": 0.062299025, + "uploadSeconds": 0.000001929, + "DownloadSeconds": 0.060600816 + }, + { + "connectionEstablishedSeconds": 0.063780385, + "uploadSeconds": 0.000001764, + "DownloadSeconds": 0.062150151 + }, + { + "connectionEstablishedSeconds": 0.064086724, + "uploadSeconds": 0.000001943, + "DownloadSeconds": 0.062438543 + }, + { + "connectionEstablishedSeconds": 0.061971952, + "uploadSeconds": 7.16e-7, + "DownloadSeconds": 0.060368773 + }, + { + "connectionEstablishedSeconds": 0.063038818, + "uploadSeconds": 0.000001832, + "DownloadSeconds": 0.06087449 + }, + { + "connectionEstablishedSeconds": 0.066742315, + "uploadSeconds": 0.00000196, + "DownloadSeconds": 0.065181044 + }, + { + "connectionEstablishedSeconds": 0.065213307, + "uploadSeconds": 0.000001839, + "DownloadSeconds": 0.063552711 + }, + { + "connectionEstablishedSeconds": 0.061494505, + "uploadSeconds": 7.04e-7, + "DownloadSeconds": 0.059872531 + }, + { + "connectionEstablishedSeconds": 0.061478888, + "uploadSeconds": 0.000001866, + "DownloadSeconds": 0.059847426 + }, + { + "connectionEstablishedSeconds": 0.06497519, + "uploadSeconds": 0.000001808, + "DownloadSeconds": 0.06337211 + }, + { + "connectionEstablishedSeconds": 0.065036928, + "uploadSeconds": 0.000001851, + "DownloadSeconds": 0.063292299 + }, + { + "connectionEstablishedSeconds": 0.06468815, + "uploadSeconds": 0.000001992, + "DownloadSeconds": 0.063006364 + }, + { + "connectionEstablishedSeconds": 0.06523528, + "uploadSeconds": 0.000001856, + "DownloadSeconds": 0.063706587 + }, + { + "connectionEstablishedSeconds": 0.064295975, + "uploadSeconds": 0.000001796, + "DownloadSeconds": 0.062484971 + }, + { + "connectionEstablishedSeconds": 0.061726106, + "uploadSeconds": 8.4e-7, + "DownloadSeconds": 0.060078095 + }, + { + "connectionEstablishedSeconds": 0.062668852, + "uploadSeconds": 0.00000191, + "DownloadSeconds": 0.060334766 + }, + { + "connectionEstablishedSeconds": 0.064838194, + "uploadSeconds": 0.00000196, + "DownloadSeconds": 0.063181639 + }, + { + "connectionEstablishedSeconds": 0.06429928, + "uploadSeconds": 0.000001752, + "DownloadSeconds": 0.062645255 + }, + { + "connectionEstablishedSeconds": 0.059668224, + "uploadSeconds": 0.000001862, + "DownloadSeconds": 0.058021052 + }, + { + "connectionEstablishedSeconds": 0.06296264, + "uploadSeconds": 0.000001912, + "DownloadSeconds": 0.061298395 + }, + { + "connectionEstablishedSeconds": 0.059958842, + "uploadSeconds": 0.000001862, + "DownloadSeconds": 0.058318696 + }, + { + "connectionEstablishedSeconds": 0.063492431, + "uploadSeconds": 7.18e-7, + "DownloadSeconds": 0.06173307 + }, + { + "connectionEstablishedSeconds": 0.06592515, + "uploadSeconds": 0.00000176, + "DownloadSeconds": 0.064247585 + }, + { + "connectionEstablishedSeconds": 0.064512627, + "uploadSeconds": 0.000001836, + "DownloadSeconds": 0.062787141 + }, + { + "connectionEstablishedSeconds": 0.063431219, + "uploadSeconds": 7.89e-7, + "DownloadSeconds": 0.061738575 + }, + { + "connectionEstablishedSeconds": 0.062946175, + "uploadSeconds": 7.77e-7, + "DownloadSeconds": 0.061326043 + }, + { + "connectionEstablishedSeconds": 0.063931168, + "uploadSeconds": 7.83e-7, + "DownloadSeconds": 0.062336508 + }, + { + "connectionEstablishedSeconds": 0.062151404, + "uploadSeconds": 0.000001791, + "DownloadSeconds": 0.059868496 + }, + { + "connectionEstablishedSeconds": 0.062883368, + "uploadSeconds": 7.56e-7, + "DownloadSeconds": 0.061280069 + }, + { + "connectionEstablishedSeconds": 0.064648947, + "uploadSeconds": 0.000001843, + "DownloadSeconds": 0.063037667 + }, + { + "connectionEstablishedSeconds": 0.060729236, + "uploadSeconds": 7.3e-7, + "DownloadSeconds": 0.059125773 + }, + { + "connectionEstablishedSeconds": 0.063317758, + "uploadSeconds": 0.000001834, + "DownloadSeconds": 0.061730434 + }, + { + "connectionEstablishedSeconds": 0.066656664, + "uploadSeconds": 7.91e-7, + "DownloadSeconds": 0.064998067 + }, + { + "connectionEstablishedSeconds": 0.06258373, + "uploadSeconds": 0.000002, + "DownloadSeconds": 0.060890619 + }, + { + "connectionEstablishedSeconds": 0.06319078, + "uploadSeconds": 6.89e-7, + "DownloadSeconds": 0.061459901 + }, + { + "connectionEstablishedSeconds": 0.064543424, + "uploadSeconds": 0.000001756, + "DownloadSeconds": 0.063178255 + }, + { + "connectionEstablishedSeconds": 0.062345482, + "uploadSeconds": 0.000001939, + "DownloadSeconds": 0.060653297 + }, + { + "connectionEstablishedSeconds": 0.061808393, + "uploadSeconds": 0.000001924, + "DownloadSeconds": 0.060171952 + }, + { + "connectionEstablishedSeconds": 0.065829336, + "uploadSeconds": 0.000001791, + "DownloadSeconds": 0.064152923 + }, + { + "connectionEstablishedSeconds": 0.061952759, + "uploadSeconds": 0.000001878, + "DownloadSeconds": 0.060281317 + }, + { + "connectionEstablishedSeconds": 0.064850571, + "uploadSeconds": 0.000001778, + "DownloadSeconds": 0.063198825 + }, + { + "connectionEstablishedSeconds": 0.063476523, + "uploadSeconds": 7.43e-7, + "DownloadSeconds": 0.061770307 + }, + { + "connectionEstablishedSeconds": 0.066471319, + "uploadSeconds": 8.72e-7, + "DownloadSeconds": 0.064391845 + }, + { + "connectionEstablishedSeconds": 0.064264771, + "uploadSeconds": 0.000001808, + "DownloadSeconds": 0.062746709 + }, + { + "connectionEstablishedSeconds": 0.063894644, + "uploadSeconds": 7.2e-7, + "DownloadSeconds": 0.062251002 + }, + { + "connectionEstablishedSeconds": 0.063922439, + "uploadSeconds": 0.000001856, + "DownloadSeconds": 0.062219476 + }, + { + "connectionEstablishedSeconds": 0.066209402, + "uploadSeconds": 7.94e-7, + "DownloadSeconds": 0.064478021 + }, + { + "connectionEstablishedSeconds": 0.063985061, + "uploadSeconds": 8.04e-7, + "DownloadSeconds": 0.062304085 + }, + { + "connectionEstablishedSeconds": 0.062835992, + "uploadSeconds": 8.01e-7, + "DownloadSeconds": 0.061305266 + }, + { + "connectionEstablishedSeconds": 0.061206315, + "uploadSeconds": 0.000001983, + "DownloadSeconds": 0.059519765 + }, + { + "connectionEstablishedSeconds": 0.063490488, + "uploadSeconds": 0.000001799, + "DownloadSeconds": 0.06185446 + }, + { + "connectionEstablishedSeconds": 0.062635641, + "uploadSeconds": 0.00000199, + "DownloadSeconds": 0.060952837 + }, + { + "connectionEstablishedSeconds": 0.065738211, + "uploadSeconds": 0.000001799, + "DownloadSeconds": 0.064081999 + }, + { + "connectionEstablishedSeconds": 0.063443249, + "uploadSeconds": 0.000001864, + "DownloadSeconds": 0.061807711 + }, + { + "connectionEstablishedSeconds": 0.062892786, + "uploadSeconds": 0.000001823, + "DownloadSeconds": 0.061237758 + }, + { + "connectionEstablishedSeconds": 0.063952929, + "uploadSeconds": 0.000001745, + "DownloadSeconds": 0.062293249 + }, + { + "connectionEstablishedSeconds": 0.06369205, + "uploadSeconds": 7.4e-7, + "DownloadSeconds": 0.06221562 + } ], "implementation": "quic-go", "version": "v0.34", @@ -293,106 +981,506 @@ }, { "result": [ - 0.121888817, - 0.126782828, - 0.126859234, - 0.126965903, - 0.121345578, - 0.126970089, - 0.122916614, - 0.127229748, - 0.127958864, - 0.117392392, - 0.125142897, - 0.122582385, - 0.124210822, - 0.123212725, - 0.121609478, - 0.125591431, - 0.124393383, - 0.128508447, - 0.120189564, - 0.124491921, - 0.122433356, - 0.117685992, - 0.122549189, - 0.120312995, - 0.125653765, - 0.122658262, - 0.124246051, - 0.122707117, - 0.122249119, - 0.12836673, - 0.122185442, - 0.118225327, - 0.130252955, - 0.125181184, - 0.121933468, - 0.130320394, - 0.122924563, - 0.117190831, - 0.127240584, - 0.125941095, - 0.130037099, - 0.128214222, - 0.128375952, - 0.122292666, - 0.119872308, - 0.124913874, - 0.127900565, - 0.124113457, - 0.121933097, - 0.125857287, - 0.12300402, - 0.124099483, - 0.12403564, - 0.118360141, - 0.122514163, - 0.125541903, - 0.126257782, - 0.129793511, - 0.128186572, - 0.122885629, - 0.120463873, - 0.122983595, - 0.125317978, - 0.121499828, - 0.127062349, - 0.123207304, - 0.124742893, - 0.125320406, - 0.119497825, - 0.126564094, - 0.124233296, - 0.122960197, - 0.124953109, - 0.125312498, - 0.124311479, - 0.124084743, - 0.124361733, - 0.126374126, - 0.127021601, - 0.121649422, - 0.127137925, - 0.123952327, - 0.125233014, - 0.12549781, - 0.124144517, - 0.128430317, - 0.123832155, - 0.120157176, - 0.12490297, - 0.119267766, - 0.124355495, - 0.12542756, - 0.127275064, - 0.123099353, - 0.126169216, - 0.122649968, - 0.122518246, - 0.125608568, - 0.125058112, - 0.128857953 + { + "connection_established_seconds": 0.124145125, + "upload_seconds": 0.061859659, + "download_seconds": 0.061728155 + }, + { + "connection_established_seconds": 0.125843822, + "upload_seconds": 0.062567003, + "download_seconds": 0.062580374 + }, + { + "connection_established_seconds": 0.128356336, + "upload_seconds": 0.063803389, + "download_seconds": 0.06394792 + }, + { + "connection_established_seconds": 0.125477543, + "upload_seconds": 0.062407752, + "download_seconds": 0.062384645 + }, + { + "connection_established_seconds": 0.121965219, + "upload_seconds": 0.060644372, + "download_seconds": 0.060629723 + }, + { + "connection_established_seconds": 0.123418626, + "upload_seconds": 0.061339105, + "download_seconds": 0.061357789 + }, + { + "connection_established_seconds": 0.12581403, + "upload_seconds": 0.062546744, + "download_seconds": 0.062553167 + }, + { + "connection_established_seconds": 0.124444099, + "upload_seconds": 0.061550699, + "download_seconds": 0.061594448 + }, + { + "connection_established_seconds": 0.126029087, + "upload_seconds": 0.06264191, + "download_seconds": 0.062662179 + }, + { + "connection_established_seconds": 0.12795165, + "upload_seconds": 0.063613922, + "download_seconds": 0.063630625 + }, + { + "connection_established_seconds": 0.125703903, + "upload_seconds": 0.062461812, + "download_seconds": 0.062475161 + }, + { + "connection_established_seconds": 0.125912662, + "upload_seconds": 0.062574314, + "download_seconds": 0.062594162 + }, + { + "connection_established_seconds": 0.124266318, + "upload_seconds": 0.061767835, + "download_seconds": 0.061794058 + }, + { + "connection_established_seconds": 0.122011611, + "upload_seconds": 0.060626943, + "download_seconds": 0.060894199 + }, + { + "connection_established_seconds": 0.122673098, + "upload_seconds": 0.060966735, + "download_seconds": 0.061010991 + }, + { + "connection_established_seconds": 0.124042209, + "upload_seconds": 0.061603136, + "download_seconds": 0.061670242 + }, + { + "connection_established_seconds": 0.119048947, + "upload_seconds": 0.058947587, + "download_seconds": 0.059002538 + }, + { + "connection_established_seconds": 0.128934417, + "upload_seconds": 0.064095484, + "download_seconds": 0.064128754 + }, + { + "connection_established_seconds": 0.122362305, + "upload_seconds": 0.060785743, + "download_seconds": 0.060800834 + }, + { + "connection_established_seconds": 0.121230527, + "upload_seconds": 0.060245036, + "download_seconds": 0.060381548 + }, + { + "connection_established_seconds": 0.124992226, + "upload_seconds": 0.062181934, + "download_seconds": 0.06209275 + }, + { + "connection_established_seconds": 0.127526691, + "upload_seconds": 0.063399351, + "download_seconds": 0.063405159 + }, + { + "connection_established_seconds": 0.124249699, + "upload_seconds": 0.061870978, + "download_seconds": 0.061780321 + }, + { + "connection_established_seconds": 0.126347503, + "upload_seconds": 0.062858753, + "download_seconds": 0.062814028 + }, + { + "connection_established_seconds": 0.11682585, + "upload_seconds": 0.058026417, + "download_seconds": 0.058059279 + }, + { + "connection_established_seconds": 0.122583849, + "upload_seconds": 0.060917102, + "download_seconds": 0.060954055 + }, + { + "connection_established_seconds": 0.123544343, + "upload_seconds": 0.06142371, + "download_seconds": 0.061420304 + }, + { + "connection_established_seconds": 0.12710688, + "upload_seconds": 0.063145252, + "download_seconds": 0.063224586 + }, + { + "connection_established_seconds": 0.127842154, + "upload_seconds": 0.063501412, + "download_seconds": 0.063566842 + }, + { + "connection_established_seconds": 0.123062881, + "upload_seconds": 0.061182822, + "download_seconds": 0.061162174 + }, + { + "connection_established_seconds": 0.12615966, + "upload_seconds": 0.062682485, + "download_seconds": 0.062684356 + }, + { + "connection_established_seconds": 0.120560034, + "upload_seconds": 0.059891731, + "download_seconds": 0.059905717 + }, + { + "connection_established_seconds": 0.120055808, + "upload_seconds": 0.059680657, + "download_seconds": 0.059689754 + }, + { + "connection_established_seconds": 0.117916772, + "upload_seconds": 0.058567597, + "download_seconds": 0.058605824 + }, + { + "connection_established_seconds": 0.124189356, + "upload_seconds": 0.061700699, + "download_seconds": 0.061744668 + }, + { + "connection_established_seconds": 0.122986734, + "upload_seconds": 0.061131076, + "download_seconds": 0.061157656 + }, + { + "connection_established_seconds": 0.123495903, + "upload_seconds": 0.061318598, + "download_seconds": 0.061348062 + }, + { + "connection_established_seconds": 0.11902555, + "upload_seconds": 0.059132276, + "download_seconds": 0.05916622 + }, + { + "connection_established_seconds": 0.128687472, + "upload_seconds": 0.064000216, + "download_seconds": 0.063988446 + }, + { + "connection_established_seconds": 0.121696737, + "upload_seconds": 0.060479899, + "download_seconds": 0.060491725 + }, + { + "connection_established_seconds": 0.12475878, + "upload_seconds": 0.062033193, + "download_seconds": 0.062057929 + }, + { + "connection_established_seconds": 0.128872156, + "upload_seconds": 0.06408639, + "download_seconds": 0.064089976 + }, + { + "connection_established_seconds": 0.121594455, + "upload_seconds": 0.06041272, + "download_seconds": 0.060461311 + }, + { + "connection_established_seconds": 0.124767425, + "upload_seconds": 0.062014862, + "download_seconds": 0.062043844 + }, + { + "connection_established_seconds": 0.126761906, + "upload_seconds": 0.062920659, + "download_seconds": 0.062972128 + }, + { + "connection_established_seconds": 0.124931648, + "upload_seconds": 0.062079875, + "download_seconds": 0.062108369 + }, + { + "connection_established_seconds": 0.122642546, + "upload_seconds": 0.060930495, + "download_seconds": 0.060985003 + }, + { + "connection_established_seconds": 0.127321614, + "upload_seconds": 0.063321951, + "download_seconds": 0.06330981 + }, + { + "connection_established_seconds": 0.126709211, + "upload_seconds": 0.062986201, + "download_seconds": 0.063011283 + }, + { + "connection_established_seconds": 0.127663243, + "upload_seconds": 0.063264135, + "download_seconds": 0.063304528 + }, + { + "connection_established_seconds": 0.120960863, + "upload_seconds": 0.060081181, + "download_seconds": 0.060120516 + }, + { + "connection_established_seconds": 0.123381844, + "upload_seconds": 0.061365268, + "download_seconds": 0.061315441 + }, + { + "connection_established_seconds": 0.128545917, + "upload_seconds": 0.063891788, + "download_seconds": 0.06394697 + }, + { + "connection_established_seconds": 0.117939599, + "upload_seconds": 0.058599891, + "download_seconds": 0.058641942 + }, + { + "connection_established_seconds": 0.119184747, + "upload_seconds": 0.059090548, + "download_seconds": 0.059103432 + }, + { + "connection_established_seconds": 0.119225496, + "upload_seconds": 0.05922733, + "download_seconds": 0.059264784 + }, + { + "connection_established_seconds": 0.122905732, + "upload_seconds": 0.061065736, + "download_seconds": 0.061151848 + }, + { + "connection_established_seconds": 0.125260299, + "upload_seconds": 0.062258568, + "download_seconds": 0.062296567 + }, + { + "connection_established_seconds": 0.125666793, + "upload_seconds": 0.06246034, + "download_seconds": 0.062490292 + }, + { + "connection_established_seconds": 0.130158543, + "upload_seconds": 0.064693106, + "download_seconds": 0.06471281 + }, + { + "connection_established_seconds": 0.123926745, + "upload_seconds": 0.061615685, + "download_seconds": 0.061623424 + }, + { + "connection_established_seconds": 0.12913928, + "upload_seconds": 0.064184865, + "download_seconds": 0.064204226 + }, + { + "connection_established_seconds": 0.120888422, + "upload_seconds": 0.060079159, + "download_seconds": 0.060075203 + }, + { + "connection_established_seconds": 0.121925559, + "upload_seconds": 0.06058572, + "download_seconds": 0.060601655 + }, + { + "connection_established_seconds": 0.12744737, + "upload_seconds": 0.063359326, + "download_seconds": 0.063369463 + }, + { + "connection_established_seconds": 0.121927453, + "upload_seconds": 0.060578582, + "download_seconds": 0.060592778 + }, + { + "connection_established_seconds": 0.12108071, + "upload_seconds": 0.060175648, + "download_seconds": 0.060614869 + }, + { + "connection_established_seconds": 0.127892119, + "upload_seconds": 0.063587952, + "download_seconds": 0.063609969 + }, + { + "connection_established_seconds": 0.120905003, + "upload_seconds": 0.060085677, + "download_seconds": 0.060124089 + }, + { + "connection_established_seconds": 0.120594857, + "upload_seconds": 0.059925071, + "download_seconds": 0.059965372 + }, + { + "connection_established_seconds": 0.126257335, + "upload_seconds": 0.062704273, + "download_seconds": 0.062742059 + }, + { + "connection_established_seconds": 0.125894135, + "upload_seconds": 0.062578119, + "download_seconds": 0.062602191 + }, + { + "connection_established_seconds": 0.123692801, + "upload_seconds": 0.061494169, + "download_seconds": 0.061509289 + }, + { + "connection_established_seconds": 0.125885482, + "upload_seconds": 0.062573749, + "download_seconds": 0.062580884 + }, + { + "connection_established_seconds": 0.12775227, + "upload_seconds": 0.063489935, + "download_seconds": 0.063545142 + }, + { + "connection_established_seconds": 0.124090919, + "upload_seconds": 0.061676606, + "download_seconds": 0.061714668 + }, + { + "connection_established_seconds": 0.127768893, + "upload_seconds": 0.063489949, + "download_seconds": 0.063512222 + }, + { + "connection_established_seconds": 0.121857213, + "upload_seconds": 0.060515969, + "download_seconds": 0.060548248 + }, + { + "connection_established_seconds": 0.120858895, + "upload_seconds": 0.059936957, + "download_seconds": 0.059978208 + }, + { + "connection_established_seconds": 0.125957099, + "upload_seconds": 0.062588604, + "download_seconds": 0.062638697 + }, + { + "connection_established_seconds": 0.128928719, + "upload_seconds": 0.064153287, + "download_seconds": 0.064156072 + }, + { + "connection_established_seconds": 0.123693096, + "upload_seconds": 0.061581606, + "download_seconds": 0.061498676 + }, + { + "connection_established_seconds": 0.11974957, + "upload_seconds": 0.059490641, + "download_seconds": 0.059520038 + }, + { + "connection_established_seconds": 0.127675593, + "upload_seconds": 0.063485346, + "download_seconds": 0.063516515 + }, + { + "connection_established_seconds": 0.129245549, + "upload_seconds": 0.064255694, + "download_seconds": 0.064269179 + }, + { + "connection_established_seconds": 0.130277486, + "upload_seconds": 0.064766765, + "download_seconds": 0.064795694 + }, + { + "connection_established_seconds": 0.127990056, + "upload_seconds": 0.063648257, + "download_seconds": 0.063665452 + }, + { + "connection_established_seconds": 0.127237517, + "upload_seconds": 0.063228796, + "download_seconds": 0.063325575 + }, + { + "connection_established_seconds": 0.126827288, + "upload_seconds": 0.063057107, + "download_seconds": 0.063060423 + }, + { + "connection_established_seconds": 0.128076095, + "upload_seconds": 0.063600281, + "download_seconds": 0.063563121 + }, + { + "connection_established_seconds": 0.126112736, + "upload_seconds": 0.062712107, + "download_seconds": 0.062709074 + }, + { + "connection_established_seconds": 0.126037179, + "upload_seconds": 0.062549752, + "download_seconds": 0.062570997 + }, + { + "connection_established_seconds": 0.124178306, + "upload_seconds": 0.061731673, + "download_seconds": 0.061729123 + }, + { + "connection_established_seconds": 0.122969035, + "upload_seconds": 0.061091485, + "download_seconds": 0.061125026 + }, + { + "connection_established_seconds": 0.126242854, + "upload_seconds": 0.062729515, + "download_seconds": 0.062781941 + }, + { + "connection_established_seconds": 0.12955639, + "upload_seconds": 0.064371501, + "download_seconds": 0.064425928 + }, + { + "connection_established_seconds": 0.123962068, + "upload_seconds": 0.061665617, + "download_seconds": 0.061628992 + }, + { + "connection_established_seconds": 0.12504171, + "upload_seconds": 0.062189832, + "download_seconds": 0.06221121 + }, + { + "connection_established_seconds": 0.130446313, + "upload_seconds": 0.064829082, + "download_seconds": 0.064873804 + }, + { + "connection_established_seconds": 0.129508575, + "upload_seconds": 0.064349556, + "download_seconds": 0.064360501 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -400,106 +1488,506 @@ }, { "result": [ - 0.123959359, - 0.128597196, - 0.123645688, - 0.130001428, - 0.124287541, - 0.123489402, - 0.125663892, - 0.123268351, - 0.122893342, - 0.127601611, - 0.121443287, - 0.129990906, - 0.128984907, - 0.128755368, - 0.129821243, - 0.124287624, - 0.124759911, - 0.124384119, - 0.123781065, - 0.120626181, - 0.12425869, - 0.12484441, - 0.12554865, - 0.125071262, - 0.12328017, - 0.122791009, - 0.120896344, - 0.127605179, - 0.124412144, - 0.120545436, - 0.123343967, - 0.118978727, - 0.129852487, - 0.122387598, - 0.126926089, - 0.121785762, - 0.122798827, - 0.12720546, - 0.122693981, - 0.128857639, - 0.125739272, - 0.128852421, - 0.127223553, - 0.119462895, - 0.119503469, - 0.123971461, - 0.123001193, - 0.12538024, - 0.123656653, - 0.124206933, - 0.118723028, - 0.12171365, - 0.119679975, - 0.122688169, - 0.125532105, - 0.12467729, - 0.124548614, - 0.129949256, - 0.123589179, - 0.128655684, - 0.12706172, - 0.117397611, - 0.128028486, - 0.116589448, - 0.126781356, - 0.119530489, - 0.122856364, - 0.130406857, - 0.121626124, - 0.121430065, - 0.12317439, - 0.122788656, - 0.125830146, - 0.120794874, - 0.123413219, - 0.12540847, - 0.125231494, - 0.127017699, - 0.128824795, - 0.122608789, - 0.12601121, - 0.128660477, - 0.120707209, - 0.126615777, - 0.126164541, - 0.124650646, - 0.127625659, - 0.12996521, - 0.125899154, - 0.124287427, - 0.128696832, - 0.122317405, - 0.128389197, - 0.123922631, - 0.122882846, - 0.123757482, - 0.122617909, - 0.120690875, - 0.125843553, - 0.124550335 + { + "connection_established_seconds": 0.064777868, + "upload_seconds": 0.125998204, + "download_seconds": 0.000075636 + }, + { + "connection_established_seconds": 0.06294562, + "upload_seconds": 0.12275897, + "download_seconds": 0.000073667 + }, + { + "connection_established_seconds": 0.064982803, + "upload_seconds": 0.126651951, + "download_seconds": 0.000069897 + }, + { + "connection_established_seconds": 0.063169272, + "upload_seconds": 0.123140985, + "download_seconds": 0.000078117 + }, + { + "connection_established_seconds": 0.061480717, + "upload_seconds": 0.119770789, + "download_seconds": 0.000080836 + }, + { + "connection_established_seconds": 0.064885998, + "upload_seconds": 0.126467413, + "download_seconds": 0.000045782 + }, + { + "connection_established_seconds": 0.063326276, + "upload_seconds": 0.123218016, + "download_seconds": 0.000074582 + }, + { + "connection_established_seconds": 0.065046438, + "upload_seconds": 0.126780176, + "download_seconds": 0.000073816 + }, + { + "connection_established_seconds": 0.062702721, + "upload_seconds": 0.122423041, + "download_seconds": 0.000073728 + }, + { + "connection_established_seconds": 0.065586164, + "upload_seconds": 0.127955324, + "download_seconds": 0.000080008 + }, + { + "connection_established_seconds": 0.066246125, + "upload_seconds": 0.129010614, + "download_seconds": 0.000081791 + }, + { + "connection_established_seconds": 0.064241739, + "upload_seconds": 0.125201385, + "download_seconds": 0.000082527 + }, + { + "connection_established_seconds": 0.063676962, + "upload_seconds": 0.124129189, + "download_seconds": 0.000092577 + }, + { + "connection_established_seconds": 0.061776373, + "upload_seconds": 0.120380327, + "download_seconds": 0.000088589 + }, + { + "connection_established_seconds": 0.064540106, + "upload_seconds": 0.125817512, + "download_seconds": 0.000063514 + }, + { + "connection_established_seconds": 0.06378064, + "upload_seconds": 0.124386111, + "download_seconds": 0.000071957 + }, + { + "connection_established_seconds": 0.063139452, + "upload_seconds": 0.12295606, + "download_seconds": 0.000080053 + }, + { + "connection_established_seconds": 0.062069621, + "upload_seconds": 0.120622443, + "download_seconds": 0.000053712 + }, + { + "connection_established_seconds": 0.062981833, + "upload_seconds": 0.12289405, + "download_seconds": 0.00008086 + }, + { + "connection_established_seconds": 0.064930467, + "upload_seconds": 0.126605086, + "download_seconds": 0.000082813 + }, + { + "connection_established_seconds": 0.06285884, + "upload_seconds": 0.122514956, + "download_seconds": 0.000093668 + }, + { + "connection_established_seconds": 0.061271851, + "upload_seconds": 0.119193715, + "download_seconds": 0.000082919 + }, + { + "connection_established_seconds": 0.064243355, + "upload_seconds": 0.125646122, + "download_seconds": 0.000087232 + }, + { + "connection_established_seconds": 0.063067288, + "upload_seconds": 0.122717381, + "download_seconds": 0.000073586 + }, + { + "connection_established_seconds": 0.0665023, + "upload_seconds": 0.129655903, + "download_seconds": 0.000069867 + }, + { + "connection_established_seconds": 0.064118954, + "upload_seconds": 0.124881153, + "download_seconds": 0.000059721 + }, + { + "connection_established_seconds": 0.063248922, + "upload_seconds": 0.123328557, + "download_seconds": 0.000078478 + }, + { + "connection_established_seconds": 0.061599504, + "upload_seconds": 0.119807769, + "download_seconds": 0.000086405 + }, + { + "connection_established_seconds": 0.063174339, + "upload_seconds": 0.123168493, + "download_seconds": 0.000078535 + }, + { + "connection_established_seconds": 0.064735618, + "upload_seconds": 0.12625337, + "download_seconds": 0.000055502 + }, + { + "connection_established_seconds": 0.062365727, + "upload_seconds": 0.121573982, + "download_seconds": 0.000067009 + }, + { + "connection_established_seconds": 0.062613185, + "upload_seconds": 0.122205546, + "download_seconds": 0.00006355 + }, + { + "connection_established_seconds": 0.063637113, + "upload_seconds": 0.124060759, + "download_seconds": 0.000104106 + }, + { + "connection_established_seconds": 0.065089764, + "upload_seconds": 0.127116541, + "download_seconds": 0.000069329 + }, + { + "connection_established_seconds": 0.063268963, + "upload_seconds": 0.123293679, + "download_seconds": 0.000070154 + }, + { + "connection_established_seconds": 0.064351409, + "upload_seconds": 0.125566891, + "download_seconds": 0.000081906 + }, + { + "connection_established_seconds": 0.063977541, + "upload_seconds": 0.124605088, + "download_seconds": 0.000090947 + }, + { + "connection_established_seconds": 0.064431774, + "upload_seconds": 0.125293052, + "download_seconds": 0.000097249 + }, + { + "connection_established_seconds": 0.062392999, + "upload_seconds": 0.12150546, + "download_seconds": 0.000089871 + }, + { + "connection_established_seconds": 0.065171834, + "upload_seconds": 0.126893219, + "download_seconds": 0.00006415 + }, + { + "connection_established_seconds": 0.063419236, + "upload_seconds": 0.123194115, + "download_seconds": 0.0000752 + }, + { + "connection_established_seconds": 0.062857141, + "upload_seconds": 0.122546209, + "download_seconds": 0.000079444 + }, + { + "connection_established_seconds": 0.060385801, + "upload_seconds": 0.117631317, + "download_seconds": 0.000085714 + }, + { + "connection_established_seconds": 0.066192975, + "upload_seconds": 0.128907583, + "download_seconds": 0.00007039 + }, + { + "connection_established_seconds": 0.06264006, + "upload_seconds": 0.121778547, + "download_seconds": 0.000095732 + }, + { + "connection_established_seconds": 0.064492003, + "upload_seconds": 0.125525397, + "download_seconds": 0.000046312 + }, + { + "connection_established_seconds": 0.065256489, + "upload_seconds": 0.127060265, + "download_seconds": 0.000111949 + }, + { + "connection_established_seconds": 0.064660316, + "upload_seconds": 0.125923877, + "download_seconds": 0.000077244 + }, + { + "connection_established_seconds": 0.06355617, + "upload_seconds": 0.123885464, + "download_seconds": 0.000086419 + }, + { + "connection_established_seconds": 0.062414997, + "upload_seconds": 0.121797196, + "download_seconds": 0.00010588 + }, + { + "connection_established_seconds": 0.066173573, + "upload_seconds": 0.12932854, + "download_seconds": 0.000063044 + }, + { + "connection_established_seconds": 0.062986592, + "upload_seconds": 0.122868444, + "download_seconds": 0.000081463 + }, + { + "connection_established_seconds": 0.063503944, + "upload_seconds": 0.12384623, + "download_seconds": 0.000075366 + }, + { + "connection_established_seconds": 0.064330604, + "upload_seconds": 0.125533853, + "download_seconds": 0.000079061 + }, + { + "connection_established_seconds": 0.065544157, + "upload_seconds": 0.128015899, + "download_seconds": 0.000068859 + }, + { + "connection_established_seconds": 0.064812758, + "upload_seconds": 0.126523177, + "download_seconds": 0.000073051 + }, + { + "connection_established_seconds": 0.062981201, + "upload_seconds": 0.122817041, + "download_seconds": 0.000148614 + }, + { + "connection_established_seconds": 0.066029472, + "upload_seconds": 0.128808333, + "download_seconds": 0.000127753 + }, + { + "connection_established_seconds": 0.063809677, + "upload_seconds": 0.124393806, + "download_seconds": 0.000074221 + }, + { + "connection_established_seconds": 0.064258717, + "upload_seconds": 0.125336028, + "download_seconds": 0.000071534 + }, + { + "connection_established_seconds": 0.063431624, + "upload_seconds": 0.123813457, + "download_seconds": 0.000076783 + }, + { + "connection_established_seconds": 0.066005284, + "upload_seconds": 0.128856331, + "download_seconds": 0.000081916 + }, + { + "connection_established_seconds": 0.06587658, + "upload_seconds": 0.128505099, + "download_seconds": 0.000082519 + }, + { + "connection_established_seconds": 0.062858795, + "upload_seconds": 0.122414246, + "download_seconds": 0.000083717 + }, + { + "connection_established_seconds": 0.061783997, + "upload_seconds": 0.119334631, + "download_seconds": 0.000109582 + }, + { + "connection_established_seconds": 0.062791376, + "upload_seconds": 0.122468863, + "download_seconds": 0.000076865 + }, + { + "connection_established_seconds": 0.062901138, + "upload_seconds": 0.122598995, + "download_seconds": 0.000071515 + }, + { + "connection_established_seconds": 0.062531113, + "upload_seconds": 0.121863399, + "download_seconds": 0.000087865 + }, + { + "connection_established_seconds": 0.064976981, + "upload_seconds": 0.126558119, + "download_seconds": 0.000115422 + }, + { + "connection_established_seconds": 0.064216494, + "upload_seconds": 0.124962731, + "download_seconds": 0.000083004 + }, + { + "connection_established_seconds": 0.062264406, + "upload_seconds": 0.121360788, + "download_seconds": 0.000073056 + }, + { + "connection_established_seconds": 0.064672496, + "upload_seconds": 0.126154373, + "download_seconds": 0.000091576 + }, + { + "connection_established_seconds": 0.065740028, + "upload_seconds": 0.128227022, + "download_seconds": 0.000154756 + }, + { + "connection_established_seconds": 0.061835942, + "upload_seconds": 0.120442236, + "download_seconds": 0.000074908 + }, + { + "connection_established_seconds": 0.063429564, + "upload_seconds": 0.123661597, + "download_seconds": 0.000052419 + }, + { + "connection_established_seconds": 0.066476234, + "upload_seconds": 0.129799817, + "download_seconds": 0.000076399 + }, + { + "connection_established_seconds": 0.062667103, + "upload_seconds": 0.122210395, + "download_seconds": 0.000075119 + }, + { + "connection_established_seconds": 0.062874746, + "upload_seconds": 0.122624341, + "download_seconds": 0.000099077 + }, + { + "connection_established_seconds": 0.063208043, + "upload_seconds": 0.123244426, + "download_seconds": 0.000083971 + }, + { + "connection_established_seconds": 0.062803152, + "upload_seconds": 0.12237716, + "download_seconds": 0.000077384 + }, + { + "connection_established_seconds": 0.064475435, + "upload_seconds": 0.12574189, + "download_seconds": 0.000047054 + }, + { + "connection_established_seconds": 0.066113533, + "upload_seconds": 0.129156976, + "download_seconds": 0.000076801 + }, + { + "connection_established_seconds": 0.065250443, + "upload_seconds": 0.12746102, + "download_seconds": 0.000052761 + }, + { + "connection_established_seconds": 0.064099146, + "upload_seconds": 0.12506225, + "download_seconds": 0.000077246 + }, + { + "connection_established_seconds": 0.063758761, + "upload_seconds": 0.124206074, + "download_seconds": 0.000081693 + }, + { + "connection_established_seconds": 0.064691732, + "upload_seconds": 0.126195825, + "download_seconds": 0.000075353 + }, + { + "connection_established_seconds": 0.062189209, + "upload_seconds": 0.121311004, + "download_seconds": 0.000069429 + }, + { + "connection_established_seconds": 0.061228587, + "upload_seconds": 0.119376962, + "download_seconds": 0.00007423 + }, + { + "connection_established_seconds": 0.061882032, + "upload_seconds": 0.12067482, + "download_seconds": 0.000089354 + }, + { + "connection_established_seconds": 0.060575704, + "upload_seconds": 0.118040972, + "download_seconds": 0.000095531 + }, + { + "connection_established_seconds": 0.063224556, + "upload_seconds": 0.123390466, + "download_seconds": 0.000077311 + }, + { + "connection_established_seconds": 0.061287889, + "upload_seconds": 0.119465674, + "download_seconds": 0.000074671 + }, + { + "connection_established_seconds": 0.062176027, + "upload_seconds": 0.121133286, + "download_seconds": 0.00007535 + }, + { + "connection_established_seconds": 0.064492176, + "upload_seconds": 0.125851577, + "download_seconds": 0.000077252 + }, + { + "connection_established_seconds": 0.063885163, + "upload_seconds": 0.124464327, + "download_seconds": 0.00007576 + }, + { + "connection_established_seconds": 0.062164169, + "upload_seconds": 0.12127478, + "download_seconds": 0.000070603 + }, + { + "connection_established_seconds": 0.062933372, + "upload_seconds": 0.12266429, + "download_seconds": 0.000075274 + }, + { + "connection_established_seconds": 0.063141544, + "upload_seconds": 0.123043061, + "download_seconds": 0.000067134 + }, + { + "connection_established_seconds": 0.064007733, + "upload_seconds": 0.124852186, + "download_seconds": 0.000092172 + }, + { + "connection_established_seconds": 0.062662758, + "upload_seconds": 0.121683962, + "download_seconds": 0.000097485 + } ], "implementation": "rust-libp2p", "version": "v0.52", @@ -507,106 +1995,506 @@ }, { "result": [ - 0.122959542, - 0.119172675, - 0.125785294, - 0.126732788, - 0.123672372, - 0.122138243, - 0.126820962, - 0.117703982, - 0.121954058, - 0.129110022, - 0.121741465, - 0.122407037, - 0.128858718, - 0.122529362, - 0.127466221, - 0.125633069, - 0.119739364, - 0.123356493, - 0.124873061, - 0.125838178, - 0.123822604, - 0.122621485, - 0.11614474, - 0.125800241, - 0.125986944, - 0.123546427, - 0.12685109, - 0.124864405, - 0.127437272, - 0.120370643, - 0.12721763, - 0.126592135, - 0.126560378, - 0.126423394, - 0.126787974, - 0.126224178, - 0.124837033, - 0.122792976, - 0.118061026, - 0.121845087, - 0.127258613, - 0.124904702, - 0.127376706, - 0.127589659, - 0.124485193, - 0.118824468, - 0.119617282, - 0.125763166, - 0.123484596, - 0.119797443, - 0.123008176, - 0.124559505, - 0.123062307, - 0.122636111, - 0.122872824, - 0.127815039, - 0.123764546, - 0.12278435, - 0.12523011, - 0.128936106, - 0.125786657, - 0.128800882, - 0.124278561, - 0.123605532, - 0.122974343, - 0.124353989, - 0.124479834, - 0.12473513, - 0.125646413, - 0.126160902, - 0.127421353, - 0.126007554, - 0.119885787, - 0.12217969, - 0.125820539, - 0.12553983, - 0.123063438, - 0.128444153, - 0.128793941, - 0.120125912, - 0.126360148, - 0.125571942, - 0.117775383, - 0.122981545, - 0.123144694, - 0.122741415, - 0.126264734, - 0.12555531, - 0.128356452, - 0.122931322, - 0.123081991, - 0.123462915, - 0.129979852, - 0.11673056, - 0.127034126, - 0.123508588, - 0.122462002, - 0.123825054, - 0.12687055, - 0.128212266 + { + "connection_established_seconds": 0.065345597, + "upload_seconds": 0.126627588, + "download_seconds": 0.000079782 + }, + { + "connection_established_seconds": 0.06195985, + "upload_seconds": 0.120559278, + "download_seconds": 0.000063813 + }, + { + "connection_established_seconds": 0.065746356, + "upload_seconds": 0.1281704, + "download_seconds": 0.000042327 + }, + { + "connection_established_seconds": 0.06182322, + "upload_seconds": 0.120358159, + "download_seconds": 0.000054483 + }, + { + "connection_established_seconds": 0.063796406, + "upload_seconds": 0.124231577, + "download_seconds": 0.000042138 + }, + { + "connection_established_seconds": 0.064608911, + "upload_seconds": 0.125767583, + "download_seconds": 0.000042794 + }, + { + "connection_established_seconds": 0.065418586, + "upload_seconds": 0.127598866, + "download_seconds": 0.0000745 + }, + { + "connection_established_seconds": 0.063857974, + "upload_seconds": 0.12470036, + "download_seconds": 0.000054574 + }, + { + "connection_established_seconds": 0.064741435, + "upload_seconds": 0.126321487, + "download_seconds": 0.000049352 + }, + { + "connection_established_seconds": 0.062298059, + "upload_seconds": 0.121567394, + "download_seconds": 0.000043745 + }, + { + "connection_established_seconds": 0.062853679, + "upload_seconds": 0.1215074, + "download_seconds": 0.000068952 + }, + { + "connection_established_seconds": 0.061282703, + "upload_seconds": 0.119296348, + "download_seconds": 0.000044825 + }, + { + "connection_established_seconds": 0.065680616, + "upload_seconds": 0.128422717, + "download_seconds": 0.00004375 + }, + { + "connection_established_seconds": 0.060174806, + "upload_seconds": 0.117313557, + "download_seconds": 0.000045011 + }, + { + "connection_established_seconds": 0.064585942, + "upload_seconds": 0.126086034, + "download_seconds": 0.000043884 + }, + { + "connection_established_seconds": 0.064333531, + "upload_seconds": 0.125695507, + "download_seconds": 0.000041636 + }, + { + "connection_established_seconds": 0.063111935, + "upload_seconds": 0.122901385, + "download_seconds": 0.000043733 + }, + { + "connection_established_seconds": 0.064714655, + "upload_seconds": 0.12637165, + "download_seconds": 0.000044685 + }, + { + "connection_established_seconds": 0.062752903, + "upload_seconds": 0.122323865, + "download_seconds": 0.000060012 + }, + { + "connection_established_seconds": 0.066008082, + "upload_seconds": 0.128951116, + "download_seconds": 0.000043653 + }, + { + "connection_established_seconds": 0.064480896, + "upload_seconds": 0.125931628, + "download_seconds": 0.000061708 + }, + { + "connection_established_seconds": 0.065804323, + "upload_seconds": 0.128470453, + "download_seconds": 0.00004138 + }, + { + "connection_established_seconds": 0.064074568, + "upload_seconds": 0.125002588, + "download_seconds": 0.000074019 + }, + { + "connection_established_seconds": 0.064293037, + "upload_seconds": 0.125354149, + "download_seconds": 0.000044326 + }, + { + "connection_established_seconds": 0.062835329, + "upload_seconds": 0.122464034, + "download_seconds": 0.000046381 + }, + { + "connection_established_seconds": 0.062287958, + "upload_seconds": 0.121541381, + "download_seconds": 0.00005813 + }, + { + "connection_established_seconds": 0.063293814, + "upload_seconds": 0.123336206, + "download_seconds": 0.000049922 + }, + { + "connection_established_seconds": 0.062950057, + "upload_seconds": 0.122558901, + "download_seconds": 0.000075057 + }, + { + "connection_established_seconds": 0.064089433, + "upload_seconds": 0.125055731, + "download_seconds": 0.000049211 + }, + { + "connection_established_seconds": 0.062809583, + "upload_seconds": 0.122608524, + "download_seconds": 0.000044586 + }, + { + "connection_established_seconds": 0.063234631, + "upload_seconds": 0.123434574, + "download_seconds": 0.000044071 + }, + { + "connection_established_seconds": 0.06434445, + "upload_seconds": 0.125639794, + "download_seconds": 0.000042225 + }, + { + "connection_established_seconds": 0.064164746, + "upload_seconds": 0.125205322, + "download_seconds": 0.00005385 + }, + { + "connection_established_seconds": 0.066054385, + "upload_seconds": 0.128645324, + "download_seconds": 0.000117253 + }, + { + "connection_established_seconds": 0.064043208, + "upload_seconds": 0.124796422, + "download_seconds": 0.00004381 + }, + { + "connection_established_seconds": 0.065831828, + "upload_seconds": 0.128577677, + "download_seconds": 0.000060214 + }, + { + "connection_established_seconds": 0.060849511, + "upload_seconds": 0.118586915, + "download_seconds": 0.000043138 + }, + { + "connection_established_seconds": 0.066767867, + "upload_seconds": 0.130452973, + "download_seconds": 0.00004553 + }, + { + "connection_established_seconds": 0.06153828, + "upload_seconds": 0.119777042, + "download_seconds": 0.000074773 + }, + { + "connection_established_seconds": 0.06366191, + "upload_seconds": 0.124192021, + "download_seconds": 0.000047986 + }, + { + "connection_established_seconds": 0.062317532, + "upload_seconds": 0.121469918, + "download_seconds": 0.000050752 + }, + { + "connection_established_seconds": 0.064815759, + "upload_seconds": 0.126497739, + "download_seconds": 0.00004439 + }, + { + "connection_established_seconds": 0.065128152, + "upload_seconds": 0.127083413, + "download_seconds": 0.00004496 + }, + { + "connection_established_seconds": 0.061595343, + "upload_seconds": 0.11990911, + "download_seconds": 0.000049068 + }, + { + "connection_established_seconds": 0.06438175, + "upload_seconds": 0.125755389, + "download_seconds": 0.000054198 + }, + { + "connection_established_seconds": 0.064237585, + "upload_seconds": 0.125526082, + "download_seconds": 0.000045735 + }, + { + "connection_established_seconds": 0.066888061, + "upload_seconds": 0.130603408, + "download_seconds": 0.000062431 + }, + { + "connection_established_seconds": 0.062696867, + "upload_seconds": 0.122318473, + "download_seconds": 0.000060549 + }, + { + "connection_established_seconds": 0.062242458, + "upload_seconds": 0.121236386, + "download_seconds": 0.00004419 + }, + { + "connection_established_seconds": 0.065115077, + "upload_seconds": 0.127120581, + "download_seconds": 0.000043557 + }, + { + "connection_established_seconds": 0.061703831, + "upload_seconds": 0.120399369, + "download_seconds": 0.000076802 + }, + { + "connection_established_seconds": 0.060947387, + "upload_seconds": 0.118735343, + "download_seconds": 0.000041297 + }, + { + "connection_established_seconds": 0.062627883, + "upload_seconds": 0.122338635, + "download_seconds": 0.000062754 + }, + { + "connection_established_seconds": 0.06587111, + "upload_seconds": 0.128622617, + "download_seconds": 0.000071002 + }, + { + "connection_established_seconds": 0.061339484, + "upload_seconds": 0.119520814, + "download_seconds": 0.000044442 + }, + { + "connection_established_seconds": 0.06266093, + "upload_seconds": 0.122319167, + "download_seconds": 0.000045757 + }, + { + "connection_established_seconds": 0.059822555, + "upload_seconds": 0.116451437, + "download_seconds": 0.000051119 + }, + { + "connection_established_seconds": 0.064790049, + "upload_seconds": 0.126349844, + "download_seconds": 0.000054441 + }, + { + "connection_established_seconds": 0.060382326, + "upload_seconds": 0.117494745, + "download_seconds": 0.000066657 + }, + { + "connection_established_seconds": 0.064148746, + "upload_seconds": 0.125341426, + "download_seconds": 0.000068746 + }, + { + "connection_established_seconds": 0.064827261, + "upload_seconds": 0.126498123, + "download_seconds": 0.000046183 + }, + { + "connection_established_seconds": 0.063153185, + "upload_seconds": 0.123135312, + "download_seconds": 0.000056084 + }, + { + "connection_established_seconds": 0.064816062, + "upload_seconds": 0.126277356, + "download_seconds": 0.000057828 + }, + { + "connection_established_seconds": 0.064278199, + "upload_seconds": 0.125414573, + "download_seconds": 0.000056262 + }, + { + "connection_established_seconds": 0.062752747, + "upload_seconds": 0.122380922, + "download_seconds": 0.00004374 + }, + { + "connection_established_seconds": 0.063445685, + "upload_seconds": 0.12384881, + "download_seconds": 0.000058514 + }, + { + "connection_established_seconds": 0.061353473, + "upload_seconds": 0.11954829, + "download_seconds": 0.000046112 + }, + { + "connection_established_seconds": 0.061389462, + "upload_seconds": 0.119577677, + "download_seconds": 0.00004814 + }, + { + "connection_established_seconds": 0.06504855, + "upload_seconds": 0.126994673, + "download_seconds": 0.000045321 + }, + { + "connection_established_seconds": 0.063919567, + "upload_seconds": 0.124684165, + "download_seconds": 0.000046332 + }, + { + "connection_established_seconds": 0.063229164, + "upload_seconds": 0.123321507, + "download_seconds": 0.000067032 + }, + { + "connection_established_seconds": 0.06335159, + "upload_seconds": 0.123595726, + "download_seconds": 0.000041004 + }, + { + "connection_established_seconds": 0.065081469, + "upload_seconds": 0.126797911, + "download_seconds": 0.000043306 + }, + { + "connection_established_seconds": 0.061901279, + "upload_seconds": 0.120697729, + "download_seconds": 0.000047542 + }, + { + "connection_established_seconds": 0.064367226, + "upload_seconds": 0.125627014, + "download_seconds": 0.000045714 + }, + { + "connection_established_seconds": 0.063913815, + "upload_seconds": 0.124644766, + "download_seconds": 0.00004568 + }, + { + "connection_established_seconds": 0.06340771, + "upload_seconds": 0.123482778, + "download_seconds": 0.000044898 + }, + { + "connection_established_seconds": 0.063186517, + "upload_seconds": 0.123321763, + "download_seconds": 0.000058528 + }, + { + "connection_established_seconds": 0.064830366, + "upload_seconds": 0.126475036, + "download_seconds": 0.000043936 + }, + { + "connection_established_seconds": 0.064311509, + "upload_seconds": 0.1256985, + "download_seconds": 0.00004633 + }, + { + "connection_established_seconds": 0.064923178, + "upload_seconds": 0.126746877, + "download_seconds": 0.000053903 + }, + { + "connection_established_seconds": 0.062433534, + "upload_seconds": 0.121735648, + "download_seconds": 0.000042678 + }, + { + "connection_established_seconds": 0.0630008, + "upload_seconds": 0.122846943, + "download_seconds": 0.000069978 + }, + { + "connection_established_seconds": 0.061905677, + "upload_seconds": 0.120652533, + "download_seconds": 0.000041876 + }, + { + "connection_established_seconds": 0.061748607, + "upload_seconds": 0.120433329, + "download_seconds": 0.000051629 + }, + { + "connection_established_seconds": 0.063537551, + "upload_seconds": 0.12409735, + "download_seconds": 0.000048765 + }, + { + "connection_established_seconds": 0.065324316, + "upload_seconds": 0.127421798, + "download_seconds": 0.000050191 + }, + { + "connection_established_seconds": 0.062042321, + "upload_seconds": 0.120701257, + "download_seconds": 0.000083878 + }, + { + "connection_established_seconds": 0.065968655, + "upload_seconds": 0.128594752, + "download_seconds": 0.000046201 + }, + { + "connection_established_seconds": 0.066267306, + "upload_seconds": 0.129164475, + "download_seconds": 0.000047815 + }, + { + "connection_established_seconds": 0.063216526, + "upload_seconds": 0.123040735, + "download_seconds": 0.000048823 + }, + { + "connection_established_seconds": 0.062511579, + "upload_seconds": 0.121695004, + "download_seconds": 0.000098282 + }, + { + "connection_established_seconds": 0.06385184, + "upload_seconds": 0.124698687, + "download_seconds": 0.00004754 + }, + { + "connection_established_seconds": 0.066343358, + "upload_seconds": 0.129372553, + "download_seconds": 0.000045503 + }, + { + "connection_established_seconds": 0.063851167, + "upload_seconds": 0.124576921, + "download_seconds": 0.000073813 + }, + { + "connection_established_seconds": 0.061794819, + "upload_seconds": 0.120476674, + "download_seconds": 0.000054353 + }, + { + "connection_established_seconds": 0.062373556, + "upload_seconds": 0.121513655, + "download_seconds": 0.000064687 + }, + { + "connection_established_seconds": 0.065235287, + "upload_seconds": 0.127276967, + "download_seconds": 0.000043501 + }, + { + "connection_established_seconds": 0.063303476, + "upload_seconds": 0.123601522, + "download_seconds": 0.000054569 + }, + { + "connection_established_seconds": 0.06083302, + "upload_seconds": 0.118595803, + "download_seconds": 0.000044348 + } ], "implementation": "rust-libp2p-quinn", "version": "v0.52", @@ -614,106 +2502,506 @@ }, { "result": [ - 0.192671927, - 0.187084065, - 0.175552916, - 0.187811443, - 0.181258092, - 0.178773915, - 0.184407282, - 0.188750984, - 0.190404653, - 0.193972946, - 0.19422714, - 0.193197157, - 0.184601995, - 0.189156641, - 0.18273711, - 0.193186608, - 0.183927795, - 0.186934131, - 0.190958771, - 0.188215948, - 0.18861096, - 0.179376037, - 0.188882707, - 0.188415451, - 0.188407497, - 0.184104996, - 0.185211475, - 0.190927007, - 0.187903707, - 0.187873183, - 0.181277743, - 0.176737817, - 0.182318449, - 0.191423202, - 0.19175423, - 0.187261063, - 0.187676617, - 0.189906142, - 0.190087361, - 0.194984876, - 0.184127509, - 0.193655673, - 0.191078817, - 0.184833035, - 0.189227263, - 0.184552453, - 0.188669053, - 0.19358092, - 0.180715816, - 0.189203468, - 0.188271142, - 0.191769747, - 0.188152263, - 0.1867012, - 0.19014576, - 0.182390004, - 0.18906202, - 0.187748528, - 0.193902019, - 0.176506366, - 0.186957762, - 0.180437455, - 0.189908086, - 0.188197305, - 0.186395375, - 0.188896764, - 0.188705668, - 0.187787773, - 0.186169419, - 0.187004826, - 0.195038059, - 0.192884548, - 0.1842106, - 0.181043471, - 0.185891909, - 0.183180241, - 0.191562036, - 0.179581737, - 0.191640308, - 0.188553541, - 0.184342605, - 0.188902344, - 0.189128194, - 0.178105402, - 0.188325638, - 0.195453313, - 0.180009013, - 0.184322314, - 0.186855893, - 0.191625024, - 0.190000384, - 0.193639647, - 0.190116934, - 0.176320468, - 0.18824858, - 0.195421926, - 0.183409955, - 0.184970207, - 0.184079156, - 0.194087143 + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192846838, + "DownloadSeconds": 0.000037175 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187225653, + "DownloadSeconds": 0.00002122 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180294225, + "DownloadSeconds": 0.000020804 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188550533, + "DownloadSeconds": 0.00001889 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187079499, + "DownloadSeconds": 0.000019885 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183078712, + "DownloadSeconds": 0.000019767 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.179674262, + "DownloadSeconds": 0.000018376 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.189301769, + "DownloadSeconds": 0.000016046 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.179261369, + "DownloadSeconds": 0.000021543 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.195516869, + "DownloadSeconds": 0.00002226 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.191348801, + "DownloadSeconds": 0.000019777 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187403028, + "DownloadSeconds": 0.000019978 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.194552184, + "DownloadSeconds": 0.000027462 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187159984, + "DownloadSeconds": 0.000018502 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.190738456, + "DownloadSeconds": 0.000021419 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192054637, + "DownloadSeconds": 0.000026524 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180311141, + "DownloadSeconds": 0.000020699 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.191411991, + "DownloadSeconds": 0.000021317 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188145831, + "DownloadSeconds": 0.000020147 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186536958, + "DownloadSeconds": 0.000017486 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.18584601, + "DownloadSeconds": 0.000021541 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.178354975, + "DownloadSeconds": 0.000020018 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.178293565, + "DownloadSeconds": 0.000019429 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186344401, + "DownloadSeconds": 0.000016421 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193071917, + "DownloadSeconds": 0.000019174 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.190289691, + "DownloadSeconds": 0.000026341 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188518447, + "DownloadSeconds": 0.000021059 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.19045129, + "DownloadSeconds": 0.000026429 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186835899, + "DownloadSeconds": 0.000030147 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183109891, + "DownloadSeconds": 0.000023588 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185059453, + "DownloadSeconds": 0.000023165 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185681056, + "DownloadSeconds": 0.000026437 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183409423, + "DownloadSeconds": 0.000016582 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.184370277, + "DownloadSeconds": 0.000026094 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192355075, + "DownloadSeconds": 0.0000183 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.184482574, + "DownloadSeconds": 0.000022659 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185725446, + "DownloadSeconds": 0.000016072 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188063944, + "DownloadSeconds": 0.000022491 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180056658, + "DownloadSeconds": 0.000017605 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188372489, + "DownloadSeconds": 0.000022438 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192814141, + "DownloadSeconds": 0.000020323 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187925726, + "DownloadSeconds": 0.000025641 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187622686, + "DownloadSeconds": 0.000018206 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.187187961, + "DownloadSeconds": 0.00001939 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.182899565, + "DownloadSeconds": 0.000019681 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185843579, + "DownloadSeconds": 0.000019817 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188049356, + "DownloadSeconds": 0.00002526 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.195165351, + "DownloadSeconds": 0.000019705 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186840089, + "DownloadSeconds": 0.000020557 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.18747958, + "DownloadSeconds": 0.000026473 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185693664, + "DownloadSeconds": 0.000019646 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193451665, + "DownloadSeconds": 0.000022524 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.194108328, + "DownloadSeconds": 0.000019511 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.189855379, + "DownloadSeconds": 0.000019748 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.182903898, + "DownloadSeconds": 0.000017027 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.191944715, + "DownloadSeconds": 0.000027435 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.191778908, + "DownloadSeconds": 0.000025572 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.190211536, + "DownloadSeconds": 0.000026185 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.184234077, + "DownloadSeconds": 0.000033723 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185647252, + "DownloadSeconds": 0.000030603 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183308292, + "DownloadSeconds": 0.000022054 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180877607, + "DownloadSeconds": 0.000026982 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180613209, + "DownloadSeconds": 0.000026944 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.19123981, + "DownloadSeconds": 0.000022695 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188249077, + "DownloadSeconds": 0.00001968 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188310162, + "DownloadSeconds": 0.000019461 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192340124, + "DownloadSeconds": 0.000024555 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188473932, + "DownloadSeconds": 0.000015915 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186878094, + "DownloadSeconds": 0.000019374 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185679154, + "DownloadSeconds": 0.000016414 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.180612714, + "DownloadSeconds": 0.000019835 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192304312, + "DownloadSeconds": 0.000021444 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188282608, + "DownloadSeconds": 0.000017187 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183278194, + "DownloadSeconds": 0.000018204 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.184437713, + "DownloadSeconds": 0.000027936 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185529677, + "DownloadSeconds": 0.00001732 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193016666, + "DownloadSeconds": 0.000020431 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.195416309, + "DownloadSeconds": 0.000022508 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183699899, + "DownloadSeconds": 0.000021716 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185744257, + "DownloadSeconds": 0.000022602 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.189250203, + "DownloadSeconds": 0.000020598 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185181606, + "DownloadSeconds": 0.000019866 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.18333426, + "DownloadSeconds": 0.000020514 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193817077, + "DownloadSeconds": 0.000018949 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.18357926, + "DownloadSeconds": 0.000024613 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.179392491, + "DownloadSeconds": 0.000026305 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.190020686, + "DownloadSeconds": 0.000027925 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.192780389, + "DownloadSeconds": 0.000021992 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.189871699, + "DownloadSeconds": 0.000020478 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.195791204, + "DownloadSeconds": 0.000022177 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.183957873, + "DownloadSeconds": 0.000020035 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186134924, + "DownloadSeconds": 0.000021316 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186717805, + "DownloadSeconds": 0.000019271 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.193530685, + "DownloadSeconds": 0.000022671 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.186105862, + "DownloadSeconds": 0.000025304 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.18535181, + "DownloadSeconds": 0.000019895 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.184994725, + "DownloadSeconds": 0.000025617 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.188647571, + "DownloadSeconds": 0.000027329 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.190621346, + "DownloadSeconds": 0.000026131 + }, + { + "connectionEstablishedSeconds": 0, + "uploadSeconds": 0.185577895, + "DownloadSeconds": 0.000022229 + } ], "implementation": "https", "version": "v0.1", @@ -721,106 +3009,506 @@ }, { "result": [ - 0.12284586, - 0.06356202, - 0.12617074, - 0.06282493, - 0.061815616, - 0.06362352, - 0.06082869, - 0.06432958, - 0.06315876, - 0.05908363, - 0.059232745, - 0.06027314, - 0.06502242, - 0.06328234, - 0.061135743, - 0.11751851, - 0.06007697, - 0.064317785, - 0.06128055, - 0.06401471, - 0.059891384, - 0.05860705, - 0.12133849, - 0.12717538, - 0.061451755, - 0.06018901, - 0.11672092, - 0.06269691, - 0.06361394, - 0.06001403, - 0.06319442, - 0.06324474, - 0.063566454, - 0.12721281, - 0.060657468, - 0.0618096, - 0.061807435, - 0.06388281, - 0.06334745, - 0.061351903, - 0.12644267, - 0.12629794, - 0.062263668, - 0.06421475, - 0.12943149, - 0.121865, - 0.06291233, - 0.12243436, - 0.06256572, - 0.12848657, - 0.06077569, - 0.060444485, - 0.06363407, - 0.12646717, - 0.06351031, - 0.0631581, - 0.12270894, - 0.0599375, - 0.12944615, - 0.1250837, - 0.062131096, - 0.060755134, - 0.06263599, - 0.05924945, - 0.06132086, - 0.12614691, - 0.063863166, - 0.06162121, - 0.062112417, - 0.06403672, - 0.06430894, - 0.06130885, - 0.12177931, - 0.061753605, - 0.06193953, - 0.05830817, - 0.06351672, - 0.059269108, - 0.12591228, - 0.064268105, - 0.06267702, - 0.06346971, - 0.06311837, - 0.0613091, - 0.06413541, - 0.0637649, - 0.12228569, - 0.12099567, - 0.06344195, - 0.06298874, - 0.061688073, - 0.06130069, - 0.06347542, - 0.06192032, - 0.062345494, - 0.06341245, - 0.062392864, - 0.06395089, - 0.06433641, - 0.062004086 + { + "connectionEstablishedSeconds": 0.246982543, + "uploadSeconds": 0.000002333, + "DownloadSeconds": 0.060636799 + }, + { + "connectionEstablishedSeconds": 0.254987407, + "uploadSeconds": 0.000002637, + "DownloadSeconds": 0.125583931 + }, + { + "connectionEstablishedSeconds": 0.252265474, + "uploadSeconds": 0.000003042, + "DownloadSeconds": 0.124496056 + }, + { + "connectionEstablishedSeconds": 0.257593737, + "uploadSeconds": 0.000001947, + "DownloadSeconds": 0.063516924 + }, + { + "connectionEstablishedSeconds": 0.249634131, + "uploadSeconds": 0.000002236, + "DownloadSeconds": 0.061606688 + }, + { + "connectionEstablishedSeconds": 0.256219747, + "uploadSeconds": 0.000002639, + "DownloadSeconds": 0.063248102 + }, + { + "connectionEstablishedSeconds": 0.252442248, + "uploadSeconds": 0.000002197, + "DownloadSeconds": 0.062669369 + }, + { + "connectionEstablishedSeconds": 0.259427625, + "uploadSeconds": 0.000003211, + "DownloadSeconds": 0.127981684 + }, + { + "connectionEstablishedSeconds": 0.246514725, + "uploadSeconds": 0.000002665, + "DownloadSeconds": 0.121201652 + }, + { + "connectionEstablishedSeconds": 0.256074228, + "uploadSeconds": 0.000002774, + "DownloadSeconds": 0.063105187 + }, + { + "connectionEstablishedSeconds": 0.257314965, + "uploadSeconds": 0.000002128, + "DownloadSeconds": 0.063868077 + }, + { + "connectionEstablishedSeconds": 0.252954088, + "uploadSeconds": 0.000002252, + "DownloadSeconds": 0.062319815 + }, + { + "connectionEstablishedSeconds": 0.247593448, + "uploadSeconds": 0.000002732, + "DownloadSeconds": 0.061417523 + }, + { + "connectionEstablishedSeconds": 0.248485597, + "uploadSeconds": 0.000002477, + "DownloadSeconds": 0.122739395 + }, + { + "connectionEstablishedSeconds": 0.252755774, + "uploadSeconds": 0.000003128, + "DownloadSeconds": 0.12465053 + }, + { + "connectionEstablishedSeconds": 0.24678383, + "uploadSeconds": 0.000003171, + "DownloadSeconds": 0.061170425 + }, + { + "connectionEstablishedSeconds": 0.256799921, + "uploadSeconds": 0.000002516, + "DownloadSeconds": 0.063288139 + }, + { + "connectionEstablishedSeconds": 0.258533884, + "uploadSeconds": 0.000002448, + "DownloadSeconds": 0.063377461 + }, + { + "connectionEstablishedSeconds": 0.240389808, + "uploadSeconds": 0.000002816, + "DownloadSeconds": 0.117642179 + }, + { + "connectionEstablishedSeconds": 0.252817235, + "uploadSeconds": 0.000002452, + "DownloadSeconds": 0.123930684 + }, + { + "connectionEstablishedSeconds": 0.253777012, + "uploadSeconds": 0.000002057, + "DownloadSeconds": 0.062848806 + }, + { + "connectionEstablishedSeconds": 0.245131591, + "uploadSeconds": 0.000003236, + "DownloadSeconds": 0.120963083 + }, + { + "connectionEstablishedSeconds": 0.240467804, + "uploadSeconds": 0.000004461, + "DownloadSeconds": 0.118627047 + }, + { + "connectionEstablishedSeconds": 0.255467807, + "uploadSeconds": 0.000002626, + "DownloadSeconds": 0.062827272 + }, + { + "connectionEstablishedSeconds": 0.249338884, + "uploadSeconds": 0.000002342, + "DownloadSeconds": 0.121499683 + }, + { + "connectionEstablishedSeconds": 0.252348186, + "uploadSeconds": 0.000003027, + "DownloadSeconds": 0.062162683 + }, + { + "connectionEstablishedSeconds": 0.249576434, + "uploadSeconds": 0.00000247, + "DownloadSeconds": 0.061533785 + }, + { + "connectionEstablishedSeconds": 0.25301387, + "uploadSeconds": 0.000002702, + "DownloadSeconds": 0.062807451 + }, + { + "connectionEstablishedSeconds": 0.247662665, + "uploadSeconds": 0.000002964, + "DownloadSeconds": 0.122013051 + }, + { + "connectionEstablishedSeconds": 0.250252663, + "uploadSeconds": 0.000002914, + "DownloadSeconds": 0.123407763 + }, + { + "connectionEstablishedSeconds": 0.262054694, + "uploadSeconds": 0.000002659, + "DownloadSeconds": 0.06503719 + }, + { + "connectionEstablishedSeconds": 0.25894961, + "uploadSeconds": 0.000003183, + "DownloadSeconds": 0.063781309 + }, + { + "connectionEstablishedSeconds": 0.253447479, + "uploadSeconds": 0.000005445, + "DownloadSeconds": 0.125038249 + }, + { + "connectionEstablishedSeconds": 0.25890693, + "uploadSeconds": 0.000002949, + "DownloadSeconds": 0.064290345 + }, + { + "connectionEstablishedSeconds": 0.238136713, + "uploadSeconds": 0.000002751, + "DownloadSeconds": 0.058523439 + }, + { + "connectionEstablishedSeconds": 0.238031833, + "uploadSeconds": 0.00000201, + "DownloadSeconds": 0.058612018 + }, + { + "connectionEstablishedSeconds": 0.243987405, + "uploadSeconds": 0.000002645, + "DownloadSeconds": 0.120430154 + }, + { + "connectionEstablishedSeconds": 0.25092512, + "uploadSeconds": 0.000003203, + "DownloadSeconds": 0.062239462 + }, + { + "connectionEstablishedSeconds": 0.241461478, + "uploadSeconds": 0.000002746, + "DownloadSeconds": 0.05956789 + }, + { + "connectionEstablishedSeconds": 0.251482992, + "uploadSeconds": 0.00000234, + "DownloadSeconds": 0.061933183 + }, + { + "connectionEstablishedSeconds": 0.247927088, + "uploadSeconds": 0.000002999, + "DownloadSeconds": 0.061510988 + }, + { + "connectionEstablishedSeconds": 0.245592314, + "uploadSeconds": 0.000003012, + "DownloadSeconds": 0.06085414 + }, + { + "connectionEstablishedSeconds": 0.249204108, + "uploadSeconds": 0.000002654, + "DownloadSeconds": 0.06184334 + }, + { + "connectionEstablishedSeconds": 0.257982473, + "uploadSeconds": 0.000002161, + "DownloadSeconds": 0.064057546 + }, + { + "connectionEstablishedSeconds": 0.253774449, + "uploadSeconds": 0.000002049, + "DownloadSeconds": 0.062934467 + }, + { + "connectionEstablishedSeconds": 0.247291556, + "uploadSeconds": 0.000002676, + "DownloadSeconds": 0.060877055 + }, + { + "connectionEstablishedSeconds": 0.255902439, + "uploadSeconds": 0.000002621, + "DownloadSeconds": 0.063567814 + }, + { + "connectionEstablishedSeconds": 0.254482313, + "uploadSeconds": 0.000002629, + "DownloadSeconds": 0.063151743 + }, + { + "connectionEstablishedSeconds": 0.240553161, + "uploadSeconds": 0.000002261, + "DownloadSeconds": 0.059636037 + }, + { + "connectionEstablishedSeconds": 0.248356912, + "uploadSeconds": 0.000002729, + "DownloadSeconds": 0.061578029 + }, + { + "connectionEstablishedSeconds": 0.242345309, + "uploadSeconds": 0.00000288, + "DownloadSeconds": 0.060093916 + }, + { + "connectionEstablishedSeconds": 0.259227269, + "uploadSeconds": 0.000005216, + "DownloadSeconds": 0.1279868 + }, + { + "connectionEstablishedSeconds": 0.259282408, + "uploadSeconds": 0.000002551, + "DownloadSeconds": 0.063973717 + }, + { + "connectionEstablishedSeconds": 0.25319996, + "uploadSeconds": 0.000002716, + "DownloadSeconds": 0.125036282 + }, + { + "connectionEstablishedSeconds": 0.262780483, + "uploadSeconds": 0.000002704, + "DownloadSeconds": 0.064785965 + }, + { + "connectionEstablishedSeconds": 0.240429364, + "uploadSeconds": 0.000002006, + "DownloadSeconds": 0.059475532 + }, + { + "connectionEstablishedSeconds": 0.252537049, + "uploadSeconds": 0.000002748, + "DownloadSeconds": 0.06261609 + }, + { + "connectionEstablishedSeconds": 0.249712979, + "uploadSeconds": 0.000002727, + "DownloadSeconds": 0.061898698 + }, + { + "connectionEstablishedSeconds": 0.248365572, + "uploadSeconds": 0.000003349, + "DownloadSeconds": 0.061521647 + }, + { + "connectionEstablishedSeconds": 0.247755439, + "uploadSeconds": 0.000002551, + "DownloadSeconds": 0.061002033 + }, + { + "connectionEstablishedSeconds": 0.246475735, + "uploadSeconds": 0.000002701, + "DownloadSeconds": 0.061086692 + }, + { + "connectionEstablishedSeconds": 0.259489949, + "uploadSeconds": 0.000001757, + "DownloadSeconds": 0.063943852 + }, + { + "connectionEstablishedSeconds": 0.258184785, + "uploadSeconds": 0.000001873, + "DownloadSeconds": 0.063650594 + }, + { + "connectionEstablishedSeconds": 0.261070592, + "uploadSeconds": 0.000002752, + "DownloadSeconds": 0.064366046 + }, + { + "connectionEstablishedSeconds": 0.250568312, + "uploadSeconds": 0.000002142, + "DownloadSeconds": 0.123570903 + }, + { + "connectionEstablishedSeconds": 0.255666103, + "uploadSeconds": 0.000003077, + "DownloadSeconds": 0.063432424 + }, + { + "connectionEstablishedSeconds": 0.248139992, + "uploadSeconds": 0.000002787, + "DownloadSeconds": 0.122421755 + }, + { + "connectionEstablishedSeconds": 0.244705897, + "uploadSeconds": 0.000002085, + "DownloadSeconds": 0.060794925 + }, + { + "connectionEstablishedSeconds": 0.257247483, + "uploadSeconds": 0.000002563, + "DownloadSeconds": 0.12735091 + }, + { + "connectionEstablishedSeconds": 0.249235758, + "uploadSeconds": 0.00000251, + "DownloadSeconds": 0.061837351 + }, + { + "connectionEstablishedSeconds": 0.255130828, + "uploadSeconds": 0.000002263, + "DownloadSeconds": 0.063169157 + }, + { + "connectionEstablishedSeconds": 0.251280256, + "uploadSeconds": 0.000002482, + "DownloadSeconds": 0.123259335 + }, + { + "connectionEstablishedSeconds": 0.251983159, + "uploadSeconds": 0.00000274, + "DownloadSeconds": 0.124431896 + }, + { + "connectionEstablishedSeconds": 0.245704446, + "uploadSeconds": 0.000001875, + "DownloadSeconds": 0.120470878 + }, + { + "connectionEstablishedSeconds": 0.250201435, + "uploadSeconds": 0.000002586, + "DownloadSeconds": 0.061731154 + }, + { + "connectionEstablishedSeconds": 0.238093943, + "uploadSeconds": 0.00000245, + "DownloadSeconds": 0.058674458 + }, + { + "connectionEstablishedSeconds": 0.250553571, + "uploadSeconds": 0.000002285, + "DownloadSeconds": 0.061589498 + }, + { + "connectionEstablishedSeconds": 0.244439626, + "uploadSeconds": 0.000003027, + "DownloadSeconds": 0.060154682 + }, + { + "connectionEstablishedSeconds": 0.242412471, + "uploadSeconds": 0.000002316, + "DownloadSeconds": 0.059615017 + }, + { + "connectionEstablishedSeconds": 0.25048618, + "uploadSeconds": 0.000002677, + "DownloadSeconds": 0.061737041 + }, + { + "connectionEstablishedSeconds": 0.258953892, + "uploadSeconds": 0.000002587, + "DownloadSeconds": 0.063803021 + }, + { + "connectionEstablishedSeconds": 0.250412263, + "uploadSeconds": 0.0000034, + "DownloadSeconds": 0.12281949 + }, + { + "connectionEstablishedSeconds": 0.254144016, + "uploadSeconds": 0.000002754, + "DownloadSeconds": 0.06300859 + }, + { + "connectionEstablishedSeconds": 0.260298291, + "uploadSeconds": 0.000002975, + "DownloadSeconds": 0.064623551 + }, + { + "connectionEstablishedSeconds": 0.243397209, + "uploadSeconds": 0.000002481, + "DownloadSeconds": 0.059877624 + }, + { + "connectionEstablishedSeconds": 0.24772037, + "uploadSeconds": 0.000002941, + "DownloadSeconds": 0.060984094 + }, + { + "connectionEstablishedSeconds": 0.253506036, + "uploadSeconds": 0.000002337, + "DownloadSeconds": 0.062951461 + }, + { + "connectionEstablishedSeconds": 0.254973803, + "uploadSeconds": 0.000002862, + "DownloadSeconds": 0.062826139 + }, + { + "connectionEstablishedSeconds": 0.255472034, + "uploadSeconds": 0.000002332, + "DownloadSeconds": 0.063002547 + }, + { + "connectionEstablishedSeconds": 0.256008456, + "uploadSeconds": 0.000002753, + "DownloadSeconds": 0.126330132 + }, + { + "connectionEstablishedSeconds": 0.258165071, + "uploadSeconds": 0.000002056, + "DownloadSeconds": 0.063652588 + }, + { + "connectionEstablishedSeconds": 0.25799469, + "uploadSeconds": 0.000003118, + "DownloadSeconds": 0.126573181 + }, + { + "connectionEstablishedSeconds": 0.235590117, + "uploadSeconds": 0.000002624, + "DownloadSeconds": 0.057922146 + }, + { + "connectionEstablishedSeconds": 0.243184757, + "uploadSeconds": 0.000002738, + "DownloadSeconds": 0.059965651 + }, + { + "connectionEstablishedSeconds": 0.248694484, + "uploadSeconds": 0.000002604, + "DownloadSeconds": 0.061723598 + }, + { + "connectionEstablishedSeconds": 0.251370563, + "uploadSeconds": 0.000002583, + "DownloadSeconds": 0.06197375 + }, + { + "connectionEstablishedSeconds": 0.242432428, + "uploadSeconds": 0.000002486, + "DownloadSeconds": 0.060143536 + }, + { + "connectionEstablishedSeconds": 0.243723796, + "uploadSeconds": 0.000002083, + "DownloadSeconds": 0.060037652 + }, + { + "connectionEstablishedSeconds": 0.246442851, + "uploadSeconds": 0.000002077, + "DownloadSeconds": 0.060712241 + }, + { + "connectionEstablishedSeconds": 0.246539718, + "uploadSeconds": 0.000002761, + "DownloadSeconds": 0.061199242 + } ], "implementation": "go-libp2p", "version": "v0.27", @@ -828,284 +3516,530 @@ }, { "result": [ - 0.06310233, - 0.06396904, - 0.061068095, - 0.06014748, - 0.061020043, - 0.061951455, - 0.06262575, - 0.061502624, - 0.06292979, - 0.062413953, - 0.06068053, - 0.061095, - 0.06352485, - 0.063265964, - 0.06007536, - 0.06358303, - 0.06369051, - 0.06305469, - 0.060174923, - 0.065094024, - 0.060472313, - 0.06494354, - 0.061717723, - 0.06155924, - 0.0621861, - 0.06177255, - 0.062224697, - 0.06117516, - 0.062988505, - 0.06410115, - 0.06282853, - 0.06439072, - 0.063188635, - 0.062161375, - 0.06147264, - 0.064257845, - 0.064405486, - 0.062159687, - 0.062297147, - 0.061637852, - 0.06016042, - 0.061473973, - 0.061981115, - 0.06444071, - 0.0607793, - 0.06296811, - 0.06263472, - 0.062778644, - 0.060931776, - 0.061821148, - 0.06353392, - 0.060889225, - 0.06347669, - 0.06429089, - 0.060341045, - 0.06401452, - 0.06424325, - 0.06072287, - 0.060300607, - 0.061922014, - 0.06056163, - 0.0633675, - 0.06412715, - 0.06494307, - 0.06391485, - 0.0580077, - 0.06350252, - 0.063422434, - 0.061420485, - 0.0620956, - 0.06521214, - 0.062092576, - 0.0622884, - 0.06318063, - 0.061394177, - 0.06411254, - 0.060078748, - 0.062312506, - 0.061563957, - 0.06315601, - 0.06415131, - 0.06386827, - 0.064262696, - 0.062073503, - 0.061300326, - 0.06398816, - 0.065058194, - 0.061822336, - 0.061251495, - 0.06363339, - 0.06366372, - 0.06278822, - 0.0629387, - 0.06343747, - 0.06232634, - 0.06368589, - 0.06327905, - 0.06165553, - 0.06013382, - 0.06105537 + { + "connectionEstablishedSeconds": 0.132559832, + "uploadSeconds": 0.000001845, + "DownloadSeconds": 0.064081759 + }, + { + "connectionEstablishedSeconds": 0.127538862, + "uploadSeconds": 0.000001708, + "DownloadSeconds": 0.062170888 + }, + { + "connectionEstablishedSeconds": 0.130805692, + "uploadSeconds": 0.000001773, + "DownloadSeconds": 0.062955061 + }, + { + "connectionEstablishedSeconds": 0.127036422, + "uploadSeconds": 0.000001649, + "DownloadSeconds": 0.061978598 + }, + { + "connectionEstablishedSeconds": 0.127375116, + "uploadSeconds": 0.000001559, + "DownloadSeconds": 0.061272425 + }, + { + "connectionEstablishedSeconds": 0.127377704, + "uploadSeconds": 0.000001414, + "DownloadSeconds": 0.062145909 + }, + { + "connectionEstablishedSeconds": 0.125731216, + "uploadSeconds": 0.000001507, + "DownloadSeconds": 0.06135568 + }, + { + "connectionEstablishedSeconds": 0.133088001, + "uploadSeconds": 0.000001788, + "DownloadSeconds": 0.064553093 + }, + { + "connectionEstablishedSeconds": 0.129277284, + "uploadSeconds": 0.000001466, + "DownloadSeconds": 0.062234834 + }, + { + "connectionEstablishedSeconds": 0.119158102, + "uploadSeconds": 0.000001566, + "DownloadSeconds": 0.058061112 + }, + { + "connectionEstablishedSeconds": 0.130364186, + "uploadSeconds": 0.000001615, + "DownloadSeconds": 0.062807167 + }, + { + "connectionEstablishedSeconds": 0.127736162, + "uploadSeconds": 0.000001415, + "DownloadSeconds": 0.061511958 + }, + { + "connectionEstablishedSeconds": 0.1278484, + "uploadSeconds": 0.000001513, + "DownloadSeconds": 0.061515556 + }, + { + "connectionEstablishedSeconds": 0.128970078, + "uploadSeconds": 0.000001392, + "DownloadSeconds": 0.061986167 + }, + { + "connectionEstablishedSeconds": 0.128039225, + "uploadSeconds": 0.000001606, + "DownloadSeconds": 0.06170743 + }, + { + "connectionEstablishedSeconds": 0.127508048, + "uploadSeconds": 0.000001458, + "DownloadSeconds": 0.062212279 + }, + { + "connectionEstablishedSeconds": 0.133455738, + "uploadSeconds": 0.00000138, + "DownloadSeconds": 0.064288489 + }, + { + "connectionEstablishedSeconds": 0.129520369, + "uploadSeconds": 0.000001526, + "DownloadSeconds": 0.062379621 + }, + { + "connectionEstablishedSeconds": 0.126453297, + "uploadSeconds": 0.000001579, + "DownloadSeconds": 0.061700191 + }, + { + "connectionEstablishedSeconds": 0.129627112, + "uploadSeconds": 0.000001465, + "DownloadSeconds": 0.062720055 + }, + { + "connectionEstablishedSeconds": 0.134000827, + "uploadSeconds": 0.000001321, + "DownloadSeconds": 0.064357089 + }, + { + "connectionEstablishedSeconds": 0.124745152, + "uploadSeconds": 0.000001493, + "DownloadSeconds": 0.060808097 + }, + { + "connectionEstablishedSeconds": 0.127733997, + "uploadSeconds": 0.000002662, + "DownloadSeconds": 0.060965292 + }, + { + "connectionEstablishedSeconds": 0.124760848, + "uploadSeconds": 0.000001412, + "DownloadSeconds": 0.06091855 + }, + { + "connectionEstablishedSeconds": 0.133028696, + "uploadSeconds": 0.000001889, + "DownloadSeconds": 0.064165736 + }, + { + "connectionEstablishedSeconds": 0.131580179, + "uploadSeconds": 0.000009386, + "DownloadSeconds": 0.063439782 + }, + { + "connectionEstablishedSeconds": 0.13153408, + "uploadSeconds": 0.000001474, + "DownloadSeconds": 0.063494493 + }, + { + "connectionEstablishedSeconds": 0.133677377, + "uploadSeconds": 0.00000147, + "DownloadSeconds": 0.064309541 + }, + { + "connectionEstablishedSeconds": 0.129927372, + "uploadSeconds": 0.000001525, + "DownloadSeconds": 0.063450867 + }, + { + "connectionEstablishedSeconds": 0.131694963, + "uploadSeconds": 0.000001381, + "DownloadSeconds": 0.063434821 + }, + { + "connectionEstablishedSeconds": 0.127899617, + "uploadSeconds": 0.000001411, + "DownloadSeconds": 0.061525214 + }, + { + "connectionEstablishedSeconds": 0.130203328, + "uploadSeconds": 0.000001495, + "DownloadSeconds": 0.062757457 + }, + { + "connectionEstablishedSeconds": 0.128960662, + "uploadSeconds": 0.000001403, + "DownloadSeconds": 0.062074948 + }, + { + "connectionEstablishedSeconds": 0.130867787, + "uploadSeconds": 0.000001446, + "DownloadSeconds": 0.062989249 + }, + { + "connectionEstablishedSeconds": 0.127509261, + "uploadSeconds": 0.000001399, + "DownloadSeconds": 0.061493018 + }, + { + "connectionEstablishedSeconds": 0.125964276, + "uploadSeconds": 0.000001522, + "DownloadSeconds": 0.060573677 + }, + { + "connectionEstablishedSeconds": 0.127927289, + "uploadSeconds": 0.000001423, + "DownloadSeconds": 0.06157576 + }, + { + "connectionEstablishedSeconds": 0.130932601, + "uploadSeconds": 0.000001443, + "DownloadSeconds": 0.063025361 + }, + { + "connectionEstablishedSeconds": 0.131325237, + "uploadSeconds": 0.000001453, + "DownloadSeconds": 0.063283316 + }, + { + "connectionEstablishedSeconds": 0.131567611, + "uploadSeconds": 0.000001482, + "DownloadSeconds": 0.063480748 + }, + { + "connectionEstablishedSeconds": 0.127139527, + "uploadSeconds": 0.000001498, + "DownloadSeconds": 0.062091433 + }, + { + "connectionEstablishedSeconds": 0.130935865, + "uploadSeconds": 0.000001494, + "DownloadSeconds": 0.063252549 + }, + { + "connectionEstablishedSeconds": 0.126708782, + "uploadSeconds": 0.000001385, + "DownloadSeconds": 0.061000908 + }, + { + "connectionEstablishedSeconds": 0.131170813, + "uploadSeconds": 0.000001618, + "DownloadSeconds": 0.063156049 + }, + { + "connectionEstablishedSeconds": 0.127562236, + "uploadSeconds": 0.000001422, + "DownloadSeconds": 0.061339877 + }, + { + "connectionEstablishedSeconds": 0.127373514, + "uploadSeconds": 0.000001411, + "DownloadSeconds": 0.062119254 + }, + { + "connectionEstablishedSeconds": 0.124467553, + "uploadSeconds": 0.000001406, + "DownloadSeconds": 0.060622762 + }, + { + "connectionEstablishedSeconds": 0.130264415, + "uploadSeconds": 0.000001423, + "DownloadSeconds": 0.063243987 + }, + { + "connectionEstablishedSeconds": 0.129495604, + "uploadSeconds": 0.000001529, + "DownloadSeconds": 0.062278168 + }, + { + "connectionEstablishedSeconds": 0.130634463, + "uploadSeconds": 0.000001486, + "DownloadSeconds": 0.062895839 + }, + { + "connectionEstablishedSeconds": 0.130588454, + "uploadSeconds": 0.000001659, + "DownloadSeconds": 0.062499732 + }, + { + "connectionEstablishedSeconds": 0.131876225, + "uploadSeconds": 0.000001316, + "DownloadSeconds": 0.064669517 + }, + { + "connectionEstablishedSeconds": 0.1300481, + "uploadSeconds": 0.000001564, + "DownloadSeconds": 0.062634327 + }, + { + "connectionEstablishedSeconds": 0.125223091, + "uploadSeconds": 0.000001481, + "DownloadSeconds": 0.061157475 + }, + { + "connectionEstablishedSeconds": 0.129800235, + "uploadSeconds": 0.000001461, + "DownloadSeconds": 0.062495938 + }, + { + "connectionEstablishedSeconds": 0.128935513, + "uploadSeconds": 0.000001289, + "DownloadSeconds": 0.062087854 + }, + { + "connectionEstablishedSeconds": 0.131783337, + "uploadSeconds": 0.000001504, + "DownloadSeconds": 0.063374993 + }, + { + "connectionEstablishedSeconds": 0.128899161, + "uploadSeconds": 0.000001482, + "DownloadSeconds": 0.062178416 + }, + { + "connectionEstablishedSeconds": 0.131739113, + "uploadSeconds": 0.000001386, + "DownloadSeconds": 0.063473909 + }, + { + "connectionEstablishedSeconds": 0.132251676, + "uploadSeconds": 0.000001453, + "DownloadSeconds": 0.06368673 + }, + { + "connectionEstablishedSeconds": 0.131773613, + "uploadSeconds": 0.000001447, + "DownloadSeconds": 0.063479142 + }, + { + "connectionEstablishedSeconds": 0.127176818, + "uploadSeconds": 0.0000014, + "DownloadSeconds": 0.061173964 + }, + { + "connectionEstablishedSeconds": 0.128782265, + "uploadSeconds": 0.000001717, + "DownloadSeconds": 0.06190894 + }, + { + "connectionEstablishedSeconds": 0.126829132, + "uploadSeconds": 0.00000196, + "DownloadSeconds": 0.060960895 + }, + { + "connectionEstablishedSeconds": 0.130953162, + "uploadSeconds": 0.000001626, + "DownloadSeconds": 0.062989085 + }, + { + "connectionEstablishedSeconds": 0.120174779, + "uploadSeconds": 0.000001516, + "DownloadSeconds": 0.058639118 + }, + { + "connectionEstablishedSeconds": 0.12485797, + "uploadSeconds": 0.000001441, + "DownloadSeconds": 0.061003542 + }, + { + "connectionEstablishedSeconds": 0.124848685, + "uploadSeconds": 0.000001469, + "DownloadSeconds": 0.060034978 + }, + { + "connectionEstablishedSeconds": 0.131629743, + "uploadSeconds": 0.000001449, + "DownloadSeconds": 0.063505673 + }, + { + "connectionEstablishedSeconds": 0.118768582, + "uploadSeconds": 0.000001448, + "DownloadSeconds": 0.057896358 + }, + { + "connectionEstablishedSeconds": 0.132635801, + "uploadSeconds": 0.000001474, + "DownloadSeconds": 0.063932235 + }, + { + "connectionEstablishedSeconds": 0.126282233, + "uploadSeconds": 0.000001428, + "DownloadSeconds": 0.061655677 + }, + { + "connectionEstablishedSeconds": 0.130103183, + "uploadSeconds": 0.000001461, + "DownloadSeconds": 0.063143473 + }, + { + "connectionEstablishedSeconds": 0.126639755, + "uploadSeconds": 0.000001414, + "DownloadSeconds": 0.06089211 + }, + { + "connectionEstablishedSeconds": 0.130654578, + "uploadSeconds": 0.000001511, + "DownloadSeconds": 0.062895361 + }, + { + "connectionEstablishedSeconds": 0.130549247, + "uploadSeconds": 0.000001451, + "DownloadSeconds": 0.063388518 + }, + { + "connectionEstablishedSeconds": 0.121943873, + "uploadSeconds": 0.000001546, + "DownloadSeconds": 0.05863414 + }, + { + "connectionEstablishedSeconds": 0.128689427, + "uploadSeconds": 0.000001541, + "DownloadSeconds": 0.061924851 + }, + { + "connectionEstablishedSeconds": 0.125593774, + "uploadSeconds": 0.000001388, + "DownloadSeconds": 0.061346375 + }, + { + "connectionEstablishedSeconds": 0.126114403, + "uploadSeconds": 0.000001478, + "DownloadSeconds": 0.061483351 + }, + { + "connectionEstablishedSeconds": 0.124927605, + "uploadSeconds": 0.000001518, + "DownloadSeconds": 0.060145482 + }, + { + "connectionEstablishedSeconds": 0.128973538, + "uploadSeconds": 0.00000153, + "DownloadSeconds": 0.062205281 + }, + { + "connectionEstablishedSeconds": 0.128944333, + "uploadSeconds": 0.000001505, + "DownloadSeconds": 0.062992906 + }, + { + "connectionEstablishedSeconds": 0.128396058, + "uploadSeconds": 0.000001591, + "DownloadSeconds": 0.061744308 + }, + { + "connectionEstablishedSeconds": 0.123635078, + "uploadSeconds": 0.000001673, + "DownloadSeconds": 0.059731873 + }, + { + "connectionEstablishedSeconds": 0.126869663, + "uploadSeconds": 0.000001602, + "DownloadSeconds": 0.060971931 + }, + { + "connectionEstablishedSeconds": 0.129249375, + "uploadSeconds": 0.00000168, + "DownloadSeconds": 0.062236365 + }, + { + "connectionEstablishedSeconds": 0.129164979, + "uploadSeconds": 0.000001724, + "DownloadSeconds": 0.063029812 + }, + { + "connectionEstablishedSeconds": 0.133137747, + "uploadSeconds": 0.00000146, + "DownloadSeconds": 0.064202058 + }, + { + "connectionEstablishedSeconds": 0.126919816, + "uploadSeconds": 0.000001559, + "DownloadSeconds": 0.061051216 + }, + { + "connectionEstablishedSeconds": 0.129161057, + "uploadSeconds": 0.000001515, + "DownloadSeconds": 0.062148438 + }, + { + "connectionEstablishedSeconds": 0.12643837, + "uploadSeconds": 0.000001527, + "DownloadSeconds": 0.060876096 + }, + { + "connectionEstablishedSeconds": 0.12883837, + "uploadSeconds": 0.000001477, + "DownloadSeconds": 0.062117541 + }, + { + "connectionEstablishedSeconds": 0.125180919, + "uploadSeconds": 0.00000138, + "DownloadSeconds": 0.060162327 + }, + { + "connectionEstablishedSeconds": 0.128980365, + "uploadSeconds": 0.000001464, + "DownloadSeconds": 0.062863695 + }, + { + "connectionEstablishedSeconds": 0.125982137, + "uploadSeconds": 0.000001546, + "DownloadSeconds": 0.060601693 + }, + { + "connectionEstablishedSeconds": 0.122040921, + "uploadSeconds": 0.00000147, + "DownloadSeconds": 0.05863226 + }, + { + "connectionEstablishedSeconds": 0.13145477, + "uploadSeconds": 0.000001542, + "DownloadSeconds": 0.064228081 + }, + { + "connectionEstablishedSeconds": 0.128118009, + "uploadSeconds": 0.000001748, + "DownloadSeconds": 0.062337372 + }, + { + "connectionEstablishedSeconds": 0.129970686, + "uploadSeconds": 0.000001924, + "DownloadSeconds": 0.062586235 + } ], "implementation": "go-libp2p", "version": "v0.27", "transportStack": "quic-v1" } - ] + ], + "parameters": { + "uploadBytes": 1, + "downloadBytes": 1 + } } ], "pings": { "unit": "s", "results": [ - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.062, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061799999999999994, - 0.061799999999999994, - 0.061700000000000005, - 0.0619, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.0621, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605, - 0.0605 + 0.0603 ] }, "iperf": { "unit": "bit/s", "results": [ - 3290000000, - 3290000000, 3280000000, 3280000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3280000000, - 3280000000, - 3280000000, - 3280000000, - 3280000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3290000000, - 3280000000, - 3280000000, - 3280000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3280000000, - 3280000000, - 3270000000, - 3130000000 + 3080000000 ] } } \ No newline at end of file diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index b3ceaadab..4fe15d302 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -20,15 +20,27 @@ export type Benchmark = { name: string, unit: "bit/s" | "s", results: Result[], + parameters: +} + +export type Parameters = { + uploadBytes: number, + downloadBytes: number, } export type Result = { - result: number[], + result: ResultValue[], implementation: string, transportStack: string, version: string }; +export type ResultValue = { + connectionEstablishedSeconds: number, + uploadSeconds: number, + downloadSeconds: number, +}; + export type Comparison = { name: string, result: number, diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 76de3f9dc..588134785 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -2,7 +2,7 @@ import { execSync } from 'child_process'; import { versions } from './versions'; import yargs from 'yargs'; import fs from 'fs'; -import { BenchmarkResults, Benchmark, Result, IperfResults, PingResults } from './benchmark-result-type'; +import { BenchmarkResults, Benchmark, Result, IperfResults, PingResults, ResultValue } from './benchmark-result-type'; async function main(clientPublicIP: string, serverPublicIP: string) { const pings = runPing(clientPublicIP, serverPublicIP); @@ -133,7 +133,7 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench console.error(serverSTDOUT); for (const transportStack of version.transportStacks) { - const latencies = runClient({ + const result = runClient({ clientPublicIP: args.clientPublicIP, serverPublicIP: args.serverPublicIP, id: version.id, @@ -142,17 +142,10 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench uploadBytes: args.uploadBytes, downloadBytes: args.downloadBytes, iterations: args.iterations, - }).latencies.map(l => { - switch(args.unit) { - case "bit/s": - return (args.uploadBytes + args.downloadBytes) * 8 / l; - case "s": - return l; - } }); results.push({ - result: latencies, + result, implementation: version.implementation, version: version.id, transportStack: transportStack, @@ -164,6 +157,10 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench name: args.name, unit: args.unit, results, + parameters: { + uploadBytes: args.uploadBytes, + downloadBytes: args.downloadBytes, + } }; } @@ -179,28 +176,21 @@ interface ArgsRunBenchmark { iterations: number, } -interface Latencies { - latencies: number[]; -} - - -function runClient(args: ArgsRunBenchmark): Latencies { +function runClient(args: ArgsRunBenchmark): ResultValue[] { console.error(`=== Starting client ${args.implementation}/${args.id}/${args.transportStack}`); const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-address ${args.serverPublicIP}:4001 --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes}` const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` const stdout = execCommand(cmd); - // TODO: Does it really still make sense for the binary to return an array? + const lines = stdout.toString().trim().split('\n'); - const combined: Latencies = { - latencies: [], - }; + const combined: ResultValue[]= []; for (const line of lines) { - const latencies = JSON.parse(line) as Latencies; - combined.latencies.push(...latencies.latencies); + const result = JSON.parse(line) as ResultValue; + combined.push(result); } return combined; From b1408bdf2e667defaa3ac35ca3070bd301ca0b74 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 19 May 2023 18:36:55 +0900 Subject: [PATCH 088/101] Update benchmark-results.json --- perf/runner/benchmark-results.json | 162 ++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 2 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 84b879146..318a6dccc 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -4031,7 +4031,106 @@ "pings": { "unit": "s", "results": [ - 0.0603 + 0.061, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.061, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061799999999999994, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061700000000000005, + 0.061, + 0.060899999999999996, + 0.061, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.0624, + 0.0624, + 0.0624, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996, + 0.060899999999999996 ] }, "iperf": { @@ -4039,7 +4138,66 @@ "results": [ 3280000000, 3280000000, - 3080000000 + 3280000000, + 3280000000, + 3280000000, + 3280000000, + 3280000000, + 3280000000, + 3290000000, + 3290000000, + 3280000000, + 3290000000, + 3290000000, + 3280000000, + 3290000000, + 3290000000, + 3290000000, + 3290000000, + 3290000000, + 3290000000, + 3300000000, + 3290000000, + 3290000000, + 3240000000, + 3230000000, + 3240000000, + 3230000000, + 3240000000, + 3290000000, + 3290000000, + 3290000000, + 3300000000, + 3290000000, + 3280000000, + 3290000000, + 3290000000, + 3290000000, + 3290000000, + 3290000000, + 3280000000, + 3280000000, + 3280000000, + 3300000000, + 3290000000, + 3290000000, + 3280000000, + 3280000000, + 3290000000, + 3290000000, + 3290000000, + 3280000000, + 3240000000, + 3230000000, + 3230000000, + 3240000000, + 3240000000, + 3280000000, + 3290000000, + 3290000000, + 3290000000, + 3280000000, + 2920000000 ] } } \ No newline at end of file From ce948341f32839bbda2d44c33d62303d8cbdf7ae Mon Sep 17 00:00:00 2001 From: Max Inden Date: Fri, 19 May 2023 18:52:43 +0900 Subject: [PATCH 089/101] Fix field names --- perf/README.md | 2 +- perf/impl/go-libp2p/v0.27/main.go | 2 +- perf/impl/https/v0.1/main.go | 2 +- perf/impl/quic-go/v0.34/Makefile | 2 +- perf/impl/rust-libp2p-quinn/v0.52/Makefile | 2 +- perf/impl/rust-libp2p/v0.52/Makefile | 2 +- perf/runner/benchmark-results.json | 2864 ++++++++++---------- 7 files changed, 1438 insertions(+), 1438 deletions(-) diff --git a/perf/README.md b/perf/README.md index 4fd2f544e..5463f410b 100644 --- a/perf/README.md +++ b/perf/README.md @@ -43,7 +43,7 @@ Benchmark results can be visualized with https://observablehq.com/@mxinden-works - Logging MUST go to stderr. - Measurement output is printed to stdout as JSON in the form of: ```json - {"connectionEstablishedSeconds":0.246442851,"uploadSeconds":0.000002077,"DownloadSeconds":0.060712241} + {"connectionEstablishedSeconds":0.246442851,"uploadSeconds":0.000002077,"downloadSeconds":0.060712241} ``` 2. Reference implementation in `runner/src/versions.ts`. diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 0772727eb..ca591e542 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -101,7 +101,7 @@ func main() { type Result struct { ConnectionEstablishedSeconds float64 `json:"connectionEstablishedSeconds"` UploadSeconds float64 `json:"uploadSeconds"` - DownloadSeconds float64 `json: "downloadSeconds"` + DownloadSeconds float64 `json:"downloadSeconds"` } type simpleReader struct { diff --git a/perf/impl/https/v0.1/main.go b/perf/impl/https/v0.1/main.go index 9dc952d45..fc1e97eac 100644 --- a/perf/impl/https/v0.1/main.go +++ b/perf/impl/https/v0.1/main.go @@ -139,7 +139,7 @@ func generateEphemeralCertificate() (tls.Certificate, error) { type Result struct { ConnectionEstablishedSeconds float64 `json:"connectionEstablishedSeconds"` UploadSeconds float64 `json:"uploadSeconds"` - DownloadSeconds float64 `json: "downloadSeconds"` + DownloadSeconds float64 `json:"downloadSeconds"` } func main() { diff --git a/perf/impl/quic-go/v0.34/Makefile b/perf/impl/quic-go/v0.34/Makefile index b3e08dd5c..6c3c45b3a 100644 --- a/perf/impl/quic-go/v0.34/Makefile +++ b/perf/impl/quic-go/v0.34/Makefile @@ -1,4 +1,4 @@ -commitSha := d6c70ce629c3df1ac0ad71baafc2d6e53d02de40 +commitSha := b50b0322f56ff6e332189349478063259e0a0f8c all: perf diff --git a/perf/impl/rust-libp2p-quinn/v0.52/Makefile b/perf/impl/rust-libp2p-quinn/v0.52/Makefile index 2314aa9e1..8c429563d 100644 --- a/perf/impl/rust-libp2p-quinn/v0.52/Makefile +++ b/perf/impl/rust-libp2p-quinn/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := f91afe9e64ed89441f45a1bb3261c3930da040d1 +commitSha := df5180aab0ca44129e195d6030a9cf20eb593376 all: perf diff --git a/perf/impl/rust-libp2p/v0.52/Makefile b/perf/impl/rust-libp2p/v0.52/Makefile index 9565472bd..95b91269d 100644 --- a/perf/impl/rust-libp2p/v0.52/Makefile +++ b/perf/impl/rust-libp2p/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := fa6886cd73d09b9b0ff0b7ce6334a42d760ddf88 +commitSha := 488f0072cb937394d6c5c4678a5504b63403316e all: perf diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 318a6dccc..905fc0d08 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -9,27 +9,27 @@ { "connectionEstablishedSeconds": 0.064615047, "uploadSeconds": 0.988964167, - "DownloadSeconds": 1.19e-7 + "downloadSeconds": 1.19e-7 }, { "connectionEstablishedSeconds": 0.064595, "uploadSeconds": 1.006270274, - "DownloadSeconds": 5.7e-8 + "downloadSeconds": 5.7e-8 }, { "connectionEstablishedSeconds": 0.061957379, "uploadSeconds": 0.967206045, - "DownloadSeconds": 1.5e-7 + "downloadSeconds": 1.5e-7 }, { "connectionEstablishedSeconds": 0.066333628, "uploadSeconds": 1.041923666, - "DownloadSeconds": 8.1e-8 + "downloadSeconds": 8.1e-8 }, { "connectionEstablishedSeconds": 0.064395005, "uploadSeconds": 1.001865646, - "DownloadSeconds": 1.51e-7 + "downloadSeconds": 1.51e-7 } ], "implementation": "quic-go", @@ -39,29 +39,29 @@ { "result": [ { - "connection_established_seconds": 0.130085386, - "upload_seconds": 37.706576579, - "download_seconds": 0.06323964 + "connectionEstablishedSeconds": 0.130085386, + "uploadSeconds": 37.706576579, + "downloadSeconds": 0.06323964 }, { - "connection_established_seconds": 0.126073934, - "upload_seconds": 35.394770671, - "download_seconds": 0.062791976 + "connectionEstablishedSeconds": 0.126073934, + "uploadSeconds": 35.394770671, + "downloadSeconds": 0.062791976 }, { - "connection_established_seconds": 0.118604112, - "upload_seconds": 34.323311088, - "download_seconds": 0.059298347 + "connectionEstablishedSeconds": 0.118604112, + "uploadSeconds": 34.323311088, + "downloadSeconds": 0.059298347 }, { - "connection_established_seconds": 0.124873844, - "upload_seconds": 35.669218402, - "download_seconds": 0.063715144 + "connectionEstablishedSeconds": 0.124873844, + "uploadSeconds": 35.669218402, + "downloadSeconds": 0.063715144 }, { - "connection_established_seconds": 0.127441566, - "upload_seconds": 35.740599168, - "download_seconds": 0.063565162 + "connectionEstablishedSeconds": 0.127441566, + "uploadSeconds": 35.740599168, + "downloadSeconds": 0.063565162 } ], "implementation": "rust-libp2p", @@ -71,29 +71,29 @@ { "result": [ { - "connection_established_seconds": 0.065548222, - "upload_seconds": 14.530045427, - "download_seconds": 0.000076453 + "connectionEstablishedSeconds": 0.065548222, + "uploadSeconds": 14.530045427, + "downloadSeconds": 0.000076453 }, { - "connection_established_seconds": 0.065969131, - "upload_seconds": 9.529083867, - "download_seconds": 0.000050095 + "connectionEstablishedSeconds": 0.065969131, + "uploadSeconds": 9.529083867, + "downloadSeconds": 0.000050095 }, { - "connection_established_seconds": 0.066708447, - "upload_seconds": 12.083736464, - "download_seconds": 0.000108361 + "connectionEstablishedSeconds": 0.066708447, + "uploadSeconds": 12.083736464, + "downloadSeconds": 0.000108361 }, { - "connection_established_seconds": 0.062826795, - "upload_seconds": 8.016417861, - "download_seconds": 0.000057748 + "connectionEstablishedSeconds": 0.062826795, + "uploadSeconds": 8.016417861, + "downloadSeconds": 0.000057748 }, { - "connection_established_seconds": 0.061946997, - "upload_seconds": 15.177270054, - "download_seconds": 0.000040064 + "connectionEstablishedSeconds": 0.061946997, + "uploadSeconds": 15.177270054, + "downloadSeconds": 0.000040064 } ], "implementation": "rust-libp2p", @@ -103,29 +103,29 @@ { "result": [ { - "connection_established_seconds": 0.065995905, - "upload_seconds": 1.485719002, - "download_seconds": 0.000553305 + "connectionEstablishedSeconds": 0.065995905, + "uploadSeconds": 1.485719002, + "downloadSeconds": 0.000553305 }, { - "connection_established_seconds": 0.063538531, - "upload_seconds": 1.395860033, - "download_seconds": 0.000067559 + "connectionEstablishedSeconds": 0.063538531, + "uploadSeconds": 1.395860033, + "downloadSeconds": 0.000067559 }, { - "connection_established_seconds": 0.065835491, - "upload_seconds": 1.454903434, - "download_seconds": 0.00003936 + "connectionEstablishedSeconds": 0.065835491, + "uploadSeconds": 1.454903434, + "downloadSeconds": 0.00003936 }, { - "connection_established_seconds": 0.062994266, - "upload_seconds": 1.390279352, - "download_seconds": 0.000037439 + "connectionEstablishedSeconds": 0.062994266, + "uploadSeconds": 1.390279352, + "downloadSeconds": 0.000037439 }, { - "connection_established_seconds": 0.061966219, - "upload_seconds": 1.365005507, - "download_seconds": 0.000038552 + "connectionEstablishedSeconds": 0.061966219, + "uploadSeconds": 1.365005507, + "downloadSeconds": 0.000038552 } ], "implementation": "rust-libp2p-quinn", @@ -137,27 +137,27 @@ { "connectionEstablishedSeconds": 0, "uploadSeconds": 2.874647174, - "DownloadSeconds": 0.000004258 + "downloadSeconds": 0.000004258 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 2.834617305, - "DownloadSeconds": 0.000002323 + "downloadSeconds": 0.000002323 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 2.7802673049999997, - "DownloadSeconds": 0.000002272 + "downloadSeconds": 0.000002272 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 2.875364372, - "DownloadSeconds": 0.000004399 + "downloadSeconds": 0.000004399 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 2.886239104, - "DownloadSeconds": 0.000004495 + "downloadSeconds": 0.000004495 } ], "implementation": "https", @@ -169,27 +169,27 @@ { "connectionEstablishedSeconds": 0.251550611, "uploadSeconds": 2.846900655, - "DownloadSeconds": 0.123533731 + "downloadSeconds": 0.123533731 }, { "connectionEstablishedSeconds": 0.242425913, "uploadSeconds": 2.795257683, - "DownloadSeconds": 0.118580522 + "downloadSeconds": 0.118580522 }, { "connectionEstablishedSeconds": 0.246873845, "uploadSeconds": 3.063707114, - "DownloadSeconds": 0.121986488 + "downloadSeconds": 0.121986488 }, { "connectionEstablishedSeconds": 0.249576396, "uploadSeconds": 3.085365409, - "DownloadSeconds": 0.122945992 + "downloadSeconds": 0.122945992 }, { "connectionEstablishedSeconds": 0.245968516, "uploadSeconds": 2.773947588, - "DownloadSeconds": 0.120331421 + "downloadSeconds": 0.120331421 } ], "implementation": "go-libp2p", @@ -201,27 +201,27 @@ { "connectionEstablishedSeconds": 0.126053411, "uploadSeconds": 1.260300357, - "DownloadSeconds": 0.061025325 + "downloadSeconds": 0.061025325 }, { "connectionEstablishedSeconds": 0.1235829, "uploadSeconds": 1.221448272, - "DownloadSeconds": 0.059113222 + "downloadSeconds": 0.059113222 }, { "connectionEstablishedSeconds": 0.12598381, "uploadSeconds": 1.248171035, - "DownloadSeconds": 0.060479591 + "downloadSeconds": 0.060479591 }, { "connectionEstablishedSeconds": 0.127167588, "uploadSeconds": 1.270804783, - "DownloadSeconds": 0.060895254 + "downloadSeconds": 0.060895254 }, { "connectionEstablishedSeconds": 0.12712039, "uploadSeconds": 1.276295741, - "DownloadSeconds": 0.061811092 + "downloadSeconds": 0.061811092 } ], "implementation": "go-libp2p", @@ -235,7 +235,7 @@ } }, { - "name": "Single Connection throughput – Download 100 MiB", + "name": "Single Connection throughput – download 100 MiB", "unit": "bit/s", "results": [ { @@ -243,27 +243,27 @@ { "connectionEstablishedSeconds": 0.061999713, "uploadSeconds": 4.39e-7, - "DownloadSeconds": 1.028321192 + "downloadSeconds": 1.028321192 }, { "connectionEstablishedSeconds": 0.064917296, "uploadSeconds": 5.56e-7, - "DownloadSeconds": 1.061596996 + "downloadSeconds": 1.061596996 }, { "connectionEstablishedSeconds": 0.066126296, "uploadSeconds": 7.02e-7, - "DownloadSeconds": 1.087863123 + "downloadSeconds": 1.087863123 }, { "connectionEstablishedSeconds": 0.062688429, "uploadSeconds": 5.69e-7, - "DownloadSeconds": 1.042664418 + "downloadSeconds": 1.042664418 }, { "connectionEstablishedSeconds": 0.062954018, "uploadSeconds": 5.47e-7, - "DownloadSeconds": 1.0342652 + "downloadSeconds": 1.0342652 } ], "implementation": "quic-go", @@ -273,29 +273,29 @@ { "result": [ { - "connection_established_seconds": 0.12706415, - "upload_seconds": 0.063256119, - "download_seconds": 35.974620608 + "connectionEstablishedSeconds": 0.12706415, + "uploadSeconds": 0.063256119, + "downloadSeconds": 35.974620608 }, { - "connection_established_seconds": 0.127749712, - "upload_seconds": 0.063366234, - "download_seconds": 41.601253149 + "connectionEstablishedSeconds": 0.127749712, + "uploadSeconds": 0.063366234, + "downloadSeconds": 41.601253149 }, { - "connection_established_seconds": 0.122257267, - "upload_seconds": 0.060835769, - "download_seconds": 34.346292556 + "connectionEstablishedSeconds": 0.122257267, + "uploadSeconds": 0.060835769, + "downloadSeconds": 34.346292556 }, { - "connection_established_seconds": 0.128953805, - "upload_seconds": 0.064083786, - "download_seconds": 42.747025706 + "connectionEstablishedSeconds": 0.128953805, + "uploadSeconds": 0.064083786, + "downloadSeconds": 42.747025706 }, { - "connection_established_seconds": 0.1210829, - "upload_seconds": 0.060118424, - "download_seconds": 34.064101133 + "connectionEstablishedSeconds": 0.1210829, + "uploadSeconds": 0.060118424, + "downloadSeconds": 34.064101133 } ], "implementation": "rust-libp2p", @@ -305,29 +305,29 @@ { "result": [ { - "connection_established_seconds": 0.066243543, - "upload_seconds": 0.129079158, - "download_seconds": 10.54329554 + "connectionEstablishedSeconds": 0.066243543, + "uploadSeconds": 0.129079158, + "downloadSeconds": 10.54329554 }, { - "connection_established_seconds": 0.063366265, - "upload_seconds": 0.123480025, - "download_seconds": 13.530595282 + "connectionEstablishedSeconds": 0.063366265, + "uploadSeconds": 0.123480025, + "downloadSeconds": 13.530595282 }, { - "connection_established_seconds": 0.063453185, - "upload_seconds": 0.123524922, - "download_seconds": 12.251153406 + "connectionEstablishedSeconds": 0.063453185, + "uploadSeconds": 0.123524922, + "downloadSeconds": 12.251153406 }, { - "connection_established_seconds": 0.063395541, - "upload_seconds": 0.123495377, - "download_seconds": 10.753483627 + "connectionEstablishedSeconds": 0.063395541, + "uploadSeconds": 0.123495377, + "downloadSeconds": 10.753483627 }, { - "connection_established_seconds": 0.063278224, - "upload_seconds": 0.123278503, - "download_seconds": 13.267019601 + "connectionEstablishedSeconds": 0.063278224, + "uploadSeconds": 0.123278503, + "downloadSeconds": 13.267019601 } ], "implementation": "rust-libp2p", @@ -337,29 +337,29 @@ { "result": [ { - "connection_established_seconds": 0.06488199, - "upload_seconds": 0.125932155, - "download_seconds": 1.3633550589999999 + "connectionEstablishedSeconds": 0.06488199, + "uploadSeconds": 0.125932155, + "downloadSeconds": 1.3633550589999999 }, { - "connection_established_seconds": 0.064353019, - "upload_seconds": 0.125460117, - "download_seconds": 1.3598140189999999 + "connectionEstablishedSeconds": 0.064353019, + "uploadSeconds": 0.125460117, + "downloadSeconds": 1.3598140189999999 }, { - "connection_established_seconds": 0.062296858, - "upload_seconds": 0.12124451, - "download_seconds": 1.313197081 + "connectionEstablishedSeconds": 0.062296858, + "uploadSeconds": 0.12124451, + "downloadSeconds": 1.313197081 }, { - "connection_established_seconds": 0.065277725, - "upload_seconds": 0.127151015, - "download_seconds": 1.415552125 + "connectionEstablishedSeconds": 0.065277725, + "uploadSeconds": 0.127151015, + "downloadSeconds": 1.415552125 }, { - "connection_established_seconds": 0.064746505, - "upload_seconds": 0.126296331, - "download_seconds": 1.373616806 + "connectionEstablishedSeconds": 0.064746505, + "uploadSeconds": 0.126296331, + "downloadSeconds": 1.373616806 } ], "implementation": "rust-libp2p-quinn", @@ -371,27 +371,27 @@ { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187967569, - "DownloadSeconds": 2.7059459219999997 + "downloadSeconds": 2.7059459219999997 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185706236, - "DownloadSeconds": 2.61942649 + "downloadSeconds": 2.61942649 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192289066, - "DownloadSeconds": 2.716054685 + "downloadSeconds": 2.716054685 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.191801605, - "DownloadSeconds": 2.802501777 + "downloadSeconds": 2.802501777 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193762824, - "DownloadSeconds": 3.006738304 + "downloadSeconds": 3.006738304 } ], "implementation": "https", @@ -403,27 +403,27 @@ { "connectionEstablishedSeconds": 0.249739662, "uploadSeconds": 0.000002098, - "DownloadSeconds": 2.9350942460000002 + "downloadSeconds": 2.9350942460000002 }, { "connectionEstablishedSeconds": 0.254077537, "uploadSeconds": 0.000001776, - "DownloadSeconds": 2.99984772 + "downloadSeconds": 2.99984772 }, { "connectionEstablishedSeconds": 0.26064741, "uploadSeconds": 0.000002265, - "DownloadSeconds": 3.07579614 + "downloadSeconds": 3.07579614 }, { "connectionEstablishedSeconds": 0.248876875, "uploadSeconds": 0.000001814, - "DownloadSeconds": 3.109052261 + "downloadSeconds": 3.109052261 }, { "connectionEstablishedSeconds": 0.257652776, "uploadSeconds": 0.000001835, - "DownloadSeconds": 3.094898801 + "downloadSeconds": 3.094898801 } ], "implementation": "go-libp2p", @@ -435,27 +435,27 @@ { "connectionEstablishedSeconds": 0.129198968, "uploadSeconds": 0.000001513, - "DownloadSeconds": 1.336376132 + "downloadSeconds": 1.336376132 }, { "connectionEstablishedSeconds": 0.128866615, "uploadSeconds": 0.000001247, - "DownloadSeconds": 1.357847528 + "downloadSeconds": 1.357847528 }, { "connectionEstablishedSeconds": 0.128139163, "uploadSeconds": 0.000001393, - "DownloadSeconds": 1.343668511 + "downloadSeconds": 1.343668511 }, { "connectionEstablishedSeconds": 0.130263946, "uploadSeconds": 0.000001313, - "DownloadSeconds": 1.353385803 + "downloadSeconds": 1.353385803 }, { "connectionEstablishedSeconds": 0.124757242, "uploadSeconds": 0.000001468, - "DownloadSeconds": 1.3143922639999999 + "downloadSeconds": 1.3143922639999999 } ], "implementation": "go-libp2p", @@ -477,502 +477,502 @@ { "connectionEstablishedSeconds": 0.065069473, "uploadSeconds": 0.000001866, - "DownloadSeconds": 0.062256472 + "downloadSeconds": 0.062256472 }, { "connectionEstablishedSeconds": 0.064288585, "uploadSeconds": 0.000002063, - "DownloadSeconds": 0.06233876 + "downloadSeconds": 0.06233876 }, { "connectionEstablishedSeconds": 0.064484789, "uploadSeconds": 0.000002073, - "DownloadSeconds": 0.062723672 + "downloadSeconds": 0.062723672 }, { "connectionEstablishedSeconds": 0.062385008, "uploadSeconds": 0.000001881, - "DownloadSeconds": 0.060628645 + "downloadSeconds": 0.060628645 }, { "connectionEstablishedSeconds": 0.063304243, "uploadSeconds": 0.000001961, - "DownloadSeconds": 0.061635519 + "downloadSeconds": 0.061635519 }, { "connectionEstablishedSeconds": 0.063332073, "uploadSeconds": 8.86e-7, - "DownloadSeconds": 0.061448365 + "downloadSeconds": 0.061448365 }, { "connectionEstablishedSeconds": 0.062947885, "uploadSeconds": 8.13e-7, - "DownloadSeconds": 0.0612649 + "downloadSeconds": 0.0612649 }, { "connectionEstablishedSeconds": 0.065377389, "uploadSeconds": 7.24e-7, - "DownloadSeconds": 0.063726463 + "downloadSeconds": 0.063726463 }, { "connectionEstablishedSeconds": 0.06389184, "uploadSeconds": 0.000001823, - "DownloadSeconds": 0.062134002 + "downloadSeconds": 0.062134002 }, { "connectionEstablishedSeconds": 0.06182418, "uploadSeconds": 0.000001945, - "DownloadSeconds": 0.060201813 + "downloadSeconds": 0.060201813 }, { "connectionEstablishedSeconds": 0.062630776, "uploadSeconds": 0.000001825, - "DownloadSeconds": 0.060914704 + "downloadSeconds": 0.060914704 }, { "connectionEstablishedSeconds": 0.06616315, "uploadSeconds": 0.000001876, - "DownloadSeconds": 0.064389835 + "downloadSeconds": 0.064389835 }, { "connectionEstablishedSeconds": 0.060004119, "uploadSeconds": 0.000001963, - "DownloadSeconds": 0.058251497 + "downloadSeconds": 0.058251497 }, { "connectionEstablishedSeconds": 0.064923606, "uploadSeconds": 8.29e-7, - "DownloadSeconds": 0.063041205 + "downloadSeconds": 0.063041205 }, { "connectionEstablishedSeconds": 0.064839276, "uploadSeconds": 0.000001954, - "DownloadSeconds": 0.063133865 + "downloadSeconds": 0.063133865 }, { "connectionEstablishedSeconds": 0.063852939, "uploadSeconds": 0.000001953, - "DownloadSeconds": 0.062121333 + "downloadSeconds": 0.062121333 }, { "connectionEstablishedSeconds": 0.064406821, "uploadSeconds": 8.09e-7, - "DownloadSeconds": 0.064277535 + "downloadSeconds": 0.064277535 }, { "connectionEstablishedSeconds": 0.063644647, "uploadSeconds": 0.00000193, - "DownloadSeconds": 0.061865325 + "downloadSeconds": 0.061865325 }, { "connectionEstablishedSeconds": 0.06144155, "uploadSeconds": 0.000001766, - "DownloadSeconds": 0.059727007 + "downloadSeconds": 0.059727007 }, { "connectionEstablishedSeconds": 0.060326476, "uploadSeconds": 0.000001896, - "DownloadSeconds": 0.058577622 + "downloadSeconds": 0.058577622 }, { "connectionEstablishedSeconds": 0.062268388, "uploadSeconds": 8.54e-7, - "DownloadSeconds": 0.060703616 + "downloadSeconds": 0.060703616 }, { "connectionEstablishedSeconds": 0.06514159, "uploadSeconds": 0.000001883, - "DownloadSeconds": 0.063407356 + "downloadSeconds": 0.063407356 }, { "connectionEstablishedSeconds": 0.06609423, "uploadSeconds": 0.000001916, - "DownloadSeconds": 0.06438571 + "downloadSeconds": 0.06438571 }, { "connectionEstablishedSeconds": 0.06248634, "uploadSeconds": 0.000001957, - "DownloadSeconds": 0.060845688 + "downloadSeconds": 0.060845688 }, { "connectionEstablishedSeconds": 0.059670474, "uploadSeconds": 0.000001877, - "DownloadSeconds": 0.058048044 + "downloadSeconds": 0.058048044 }, { "connectionEstablishedSeconds": 0.064270199, "uploadSeconds": 0.000001983, - "DownloadSeconds": 0.062635036 + "downloadSeconds": 0.062635036 }, { "connectionEstablishedSeconds": 0.06429604, "uploadSeconds": 7.7e-7, - "DownloadSeconds": 0.062659615 + "downloadSeconds": 0.062659615 }, { "connectionEstablishedSeconds": 0.064919854, "uploadSeconds": 0.000001919, - "DownloadSeconds": 0.063192498 + "downloadSeconds": 0.063192498 }, { "connectionEstablishedSeconds": 0.065954302, "uploadSeconds": 0.00000183, - "DownloadSeconds": 0.064251883 + "downloadSeconds": 0.064251883 }, { "connectionEstablishedSeconds": 0.064098869, "uploadSeconds": 7.44e-7, - "DownloadSeconds": 0.062482036 + "downloadSeconds": 0.062482036 }, { "connectionEstablishedSeconds": 0.062022221, "uploadSeconds": 8.36e-7, - "DownloadSeconds": 0.060461973 + "downloadSeconds": 0.060461973 }, { "connectionEstablishedSeconds": 0.064627862, "uploadSeconds": 0.000001859, - "DownloadSeconds": 0.062912864 + "downloadSeconds": 0.062912864 }, { "connectionEstablishedSeconds": 0.066653299, "uploadSeconds": 7.84e-7, - "DownloadSeconds": 0.065027545 + "downloadSeconds": 0.065027545 }, { "connectionEstablishedSeconds": 0.063758312, "uploadSeconds": 0.000001955, - "DownloadSeconds": 0.061661263 + "downloadSeconds": 0.061661263 }, { "connectionEstablishedSeconds": 0.065877464, "uploadSeconds": 0.000002, - "DownloadSeconds": 0.06417309 + "downloadSeconds": 0.06417309 }, { "connectionEstablishedSeconds": 0.064380299, "uploadSeconds": 8.84e-7, - "DownloadSeconds": 0.062695264 + "downloadSeconds": 0.062695264 }, { "connectionEstablishedSeconds": 0.066849312, "uploadSeconds": 0.000001934, - "DownloadSeconds": 0.06515325 + "downloadSeconds": 0.06515325 }, { "connectionEstablishedSeconds": 0.065114281, "uploadSeconds": 8.7e-7, - "DownloadSeconds": 0.063618019 + "downloadSeconds": 0.063618019 }, { "connectionEstablishedSeconds": 0.060301618, "uploadSeconds": 8.29e-7, - "DownloadSeconds": 0.058627961 + "downloadSeconds": 0.058627961 }, { "connectionEstablishedSeconds": 0.061927104, "uploadSeconds": 0.000001807, - "DownloadSeconds": 0.060320047 + "downloadSeconds": 0.060320047 }, { "connectionEstablishedSeconds": 0.061410291, "uploadSeconds": 7.8e-7, - "DownloadSeconds": 0.059774255 + "downloadSeconds": 0.059774255 }, { "connectionEstablishedSeconds": 0.060291912, "uploadSeconds": 0.000001748, - "DownloadSeconds": 0.058655747 + "downloadSeconds": 0.058655747 }, { "connectionEstablishedSeconds": 0.064003172, "uploadSeconds": 0.0000019, - "DownloadSeconds": 0.062414151 + "downloadSeconds": 0.062414151 }, { "connectionEstablishedSeconds": 0.062299025, "uploadSeconds": 0.000001929, - "DownloadSeconds": 0.060600816 + "downloadSeconds": 0.060600816 }, { "connectionEstablishedSeconds": 0.063780385, "uploadSeconds": 0.000001764, - "DownloadSeconds": 0.062150151 + "downloadSeconds": 0.062150151 }, { "connectionEstablishedSeconds": 0.064086724, "uploadSeconds": 0.000001943, - "DownloadSeconds": 0.062438543 + "downloadSeconds": 0.062438543 }, { "connectionEstablishedSeconds": 0.061971952, "uploadSeconds": 7.16e-7, - "DownloadSeconds": 0.060368773 + "downloadSeconds": 0.060368773 }, { "connectionEstablishedSeconds": 0.063038818, "uploadSeconds": 0.000001832, - "DownloadSeconds": 0.06087449 + "downloadSeconds": 0.06087449 }, { "connectionEstablishedSeconds": 0.066742315, "uploadSeconds": 0.00000196, - "DownloadSeconds": 0.065181044 + "downloadSeconds": 0.065181044 }, { "connectionEstablishedSeconds": 0.065213307, "uploadSeconds": 0.000001839, - "DownloadSeconds": 0.063552711 + "downloadSeconds": 0.063552711 }, { "connectionEstablishedSeconds": 0.061494505, "uploadSeconds": 7.04e-7, - "DownloadSeconds": 0.059872531 + "downloadSeconds": 0.059872531 }, { "connectionEstablishedSeconds": 0.061478888, "uploadSeconds": 0.000001866, - "DownloadSeconds": 0.059847426 + "downloadSeconds": 0.059847426 }, { "connectionEstablishedSeconds": 0.06497519, "uploadSeconds": 0.000001808, - "DownloadSeconds": 0.06337211 + "downloadSeconds": 0.06337211 }, { "connectionEstablishedSeconds": 0.065036928, "uploadSeconds": 0.000001851, - "DownloadSeconds": 0.063292299 + "downloadSeconds": 0.063292299 }, { "connectionEstablishedSeconds": 0.06468815, "uploadSeconds": 0.000001992, - "DownloadSeconds": 0.063006364 + "downloadSeconds": 0.063006364 }, { "connectionEstablishedSeconds": 0.06523528, "uploadSeconds": 0.000001856, - "DownloadSeconds": 0.063706587 + "downloadSeconds": 0.063706587 }, { "connectionEstablishedSeconds": 0.064295975, "uploadSeconds": 0.000001796, - "DownloadSeconds": 0.062484971 + "downloadSeconds": 0.062484971 }, { "connectionEstablishedSeconds": 0.061726106, "uploadSeconds": 8.4e-7, - "DownloadSeconds": 0.060078095 + "downloadSeconds": 0.060078095 }, { "connectionEstablishedSeconds": 0.062668852, "uploadSeconds": 0.00000191, - "DownloadSeconds": 0.060334766 + "downloadSeconds": 0.060334766 }, { "connectionEstablishedSeconds": 0.064838194, "uploadSeconds": 0.00000196, - "DownloadSeconds": 0.063181639 + "downloadSeconds": 0.063181639 }, { "connectionEstablishedSeconds": 0.06429928, "uploadSeconds": 0.000001752, - "DownloadSeconds": 0.062645255 + "downloadSeconds": 0.062645255 }, { "connectionEstablishedSeconds": 0.059668224, "uploadSeconds": 0.000001862, - "DownloadSeconds": 0.058021052 + "downloadSeconds": 0.058021052 }, { "connectionEstablishedSeconds": 0.06296264, "uploadSeconds": 0.000001912, - "DownloadSeconds": 0.061298395 + "downloadSeconds": 0.061298395 }, { "connectionEstablishedSeconds": 0.059958842, "uploadSeconds": 0.000001862, - "DownloadSeconds": 0.058318696 + "downloadSeconds": 0.058318696 }, { "connectionEstablishedSeconds": 0.063492431, "uploadSeconds": 7.18e-7, - "DownloadSeconds": 0.06173307 + "downloadSeconds": 0.06173307 }, { "connectionEstablishedSeconds": 0.06592515, "uploadSeconds": 0.00000176, - "DownloadSeconds": 0.064247585 + "downloadSeconds": 0.064247585 }, { "connectionEstablishedSeconds": 0.064512627, "uploadSeconds": 0.000001836, - "DownloadSeconds": 0.062787141 + "downloadSeconds": 0.062787141 }, { "connectionEstablishedSeconds": 0.063431219, "uploadSeconds": 7.89e-7, - "DownloadSeconds": 0.061738575 + "downloadSeconds": 0.061738575 }, { "connectionEstablishedSeconds": 0.062946175, "uploadSeconds": 7.77e-7, - "DownloadSeconds": 0.061326043 + "downloadSeconds": 0.061326043 }, { "connectionEstablishedSeconds": 0.063931168, "uploadSeconds": 7.83e-7, - "DownloadSeconds": 0.062336508 + "downloadSeconds": 0.062336508 }, { "connectionEstablishedSeconds": 0.062151404, "uploadSeconds": 0.000001791, - "DownloadSeconds": 0.059868496 + "downloadSeconds": 0.059868496 }, { "connectionEstablishedSeconds": 0.062883368, "uploadSeconds": 7.56e-7, - "DownloadSeconds": 0.061280069 + "downloadSeconds": 0.061280069 }, { "connectionEstablishedSeconds": 0.064648947, "uploadSeconds": 0.000001843, - "DownloadSeconds": 0.063037667 + "downloadSeconds": 0.063037667 }, { "connectionEstablishedSeconds": 0.060729236, "uploadSeconds": 7.3e-7, - "DownloadSeconds": 0.059125773 + "downloadSeconds": 0.059125773 }, { "connectionEstablishedSeconds": 0.063317758, "uploadSeconds": 0.000001834, - "DownloadSeconds": 0.061730434 + "downloadSeconds": 0.061730434 }, { "connectionEstablishedSeconds": 0.066656664, "uploadSeconds": 7.91e-7, - "DownloadSeconds": 0.064998067 + "downloadSeconds": 0.064998067 }, { "connectionEstablishedSeconds": 0.06258373, "uploadSeconds": 0.000002, - "DownloadSeconds": 0.060890619 + "downloadSeconds": 0.060890619 }, { "connectionEstablishedSeconds": 0.06319078, "uploadSeconds": 6.89e-7, - "DownloadSeconds": 0.061459901 + "downloadSeconds": 0.061459901 }, { "connectionEstablishedSeconds": 0.064543424, "uploadSeconds": 0.000001756, - "DownloadSeconds": 0.063178255 + "downloadSeconds": 0.063178255 }, { "connectionEstablishedSeconds": 0.062345482, "uploadSeconds": 0.000001939, - "DownloadSeconds": 0.060653297 + "downloadSeconds": 0.060653297 }, { "connectionEstablishedSeconds": 0.061808393, "uploadSeconds": 0.000001924, - "DownloadSeconds": 0.060171952 + "downloadSeconds": 0.060171952 }, { "connectionEstablishedSeconds": 0.065829336, "uploadSeconds": 0.000001791, - "DownloadSeconds": 0.064152923 + "downloadSeconds": 0.064152923 }, { "connectionEstablishedSeconds": 0.061952759, "uploadSeconds": 0.000001878, - "DownloadSeconds": 0.060281317 + "downloadSeconds": 0.060281317 }, { "connectionEstablishedSeconds": 0.064850571, "uploadSeconds": 0.000001778, - "DownloadSeconds": 0.063198825 + "downloadSeconds": 0.063198825 }, { "connectionEstablishedSeconds": 0.063476523, "uploadSeconds": 7.43e-7, - "DownloadSeconds": 0.061770307 + "downloadSeconds": 0.061770307 }, { "connectionEstablishedSeconds": 0.066471319, "uploadSeconds": 8.72e-7, - "DownloadSeconds": 0.064391845 + "downloadSeconds": 0.064391845 }, { "connectionEstablishedSeconds": 0.064264771, "uploadSeconds": 0.000001808, - "DownloadSeconds": 0.062746709 + "downloadSeconds": 0.062746709 }, { "connectionEstablishedSeconds": 0.063894644, "uploadSeconds": 7.2e-7, - "DownloadSeconds": 0.062251002 + "downloadSeconds": 0.062251002 }, { "connectionEstablishedSeconds": 0.063922439, "uploadSeconds": 0.000001856, - "DownloadSeconds": 0.062219476 + "downloadSeconds": 0.062219476 }, { "connectionEstablishedSeconds": 0.066209402, "uploadSeconds": 7.94e-7, - "DownloadSeconds": 0.064478021 + "downloadSeconds": 0.064478021 }, { "connectionEstablishedSeconds": 0.063985061, "uploadSeconds": 8.04e-7, - "DownloadSeconds": 0.062304085 + "downloadSeconds": 0.062304085 }, { "connectionEstablishedSeconds": 0.062835992, "uploadSeconds": 8.01e-7, - "DownloadSeconds": 0.061305266 + "downloadSeconds": 0.061305266 }, { "connectionEstablishedSeconds": 0.061206315, "uploadSeconds": 0.000001983, - "DownloadSeconds": 0.059519765 + "downloadSeconds": 0.059519765 }, { "connectionEstablishedSeconds": 0.063490488, "uploadSeconds": 0.000001799, - "DownloadSeconds": 0.06185446 + "downloadSeconds": 0.06185446 }, { "connectionEstablishedSeconds": 0.062635641, "uploadSeconds": 0.00000199, - "DownloadSeconds": 0.060952837 + "downloadSeconds": 0.060952837 }, { "connectionEstablishedSeconds": 0.065738211, "uploadSeconds": 0.000001799, - "DownloadSeconds": 0.064081999 + "downloadSeconds": 0.064081999 }, { "connectionEstablishedSeconds": 0.063443249, "uploadSeconds": 0.000001864, - "DownloadSeconds": 0.061807711 + "downloadSeconds": 0.061807711 }, { "connectionEstablishedSeconds": 0.062892786, "uploadSeconds": 0.000001823, - "DownloadSeconds": 0.061237758 + "downloadSeconds": 0.061237758 }, { "connectionEstablishedSeconds": 0.063952929, "uploadSeconds": 0.000001745, - "DownloadSeconds": 0.062293249 + "downloadSeconds": 0.062293249 }, { "connectionEstablishedSeconds": 0.06369205, "uploadSeconds": 7.4e-7, - "DownloadSeconds": 0.06221562 + "downloadSeconds": 0.06221562 } ], "implementation": "quic-go", @@ -982,504 +982,504 @@ { "result": [ { - "connection_established_seconds": 0.124145125, - "upload_seconds": 0.061859659, - "download_seconds": 0.061728155 + "connectionEstablishedSeconds": 0.124145125, + "uploadSeconds": 0.061859659, + "downloadSeconds": 0.061728155 }, { - "connection_established_seconds": 0.125843822, - "upload_seconds": 0.062567003, - "download_seconds": 0.062580374 + "connectionEstablishedSeconds": 0.125843822, + "uploadSeconds": 0.062567003, + "downloadSeconds": 0.062580374 }, { - "connection_established_seconds": 0.128356336, - "upload_seconds": 0.063803389, - "download_seconds": 0.06394792 + "connectionEstablishedSeconds": 0.128356336, + "uploadSeconds": 0.063803389, + "downloadSeconds": 0.06394792 }, { - "connection_established_seconds": 0.125477543, - "upload_seconds": 0.062407752, - "download_seconds": 0.062384645 + "connectionEstablishedSeconds": 0.125477543, + "uploadSeconds": 0.062407752, + "downloadSeconds": 0.062384645 }, { - "connection_established_seconds": 0.121965219, - "upload_seconds": 0.060644372, - "download_seconds": 0.060629723 + "connectionEstablishedSeconds": 0.121965219, + "uploadSeconds": 0.060644372, + "downloadSeconds": 0.060629723 }, { - "connection_established_seconds": 0.123418626, - "upload_seconds": 0.061339105, - "download_seconds": 0.061357789 + "connectionEstablishedSeconds": 0.123418626, + "uploadSeconds": 0.061339105, + "downloadSeconds": 0.061357789 }, { - "connection_established_seconds": 0.12581403, - "upload_seconds": 0.062546744, - "download_seconds": 0.062553167 + "connectionEstablishedSeconds": 0.12581403, + "uploadSeconds": 0.062546744, + "downloadSeconds": 0.062553167 }, { - "connection_established_seconds": 0.124444099, - "upload_seconds": 0.061550699, - "download_seconds": 0.061594448 + "connectionEstablishedSeconds": 0.124444099, + "uploadSeconds": 0.061550699, + "downloadSeconds": 0.061594448 }, { - "connection_established_seconds": 0.126029087, - "upload_seconds": 0.06264191, - "download_seconds": 0.062662179 + "connectionEstablishedSeconds": 0.126029087, + "uploadSeconds": 0.06264191, + "downloadSeconds": 0.062662179 }, { - "connection_established_seconds": 0.12795165, - "upload_seconds": 0.063613922, - "download_seconds": 0.063630625 + "connectionEstablishedSeconds": 0.12795165, + "uploadSeconds": 0.063613922, + "downloadSeconds": 0.063630625 }, { - "connection_established_seconds": 0.125703903, - "upload_seconds": 0.062461812, - "download_seconds": 0.062475161 + "connectionEstablishedSeconds": 0.125703903, + "uploadSeconds": 0.062461812, + "downloadSeconds": 0.062475161 }, { - "connection_established_seconds": 0.125912662, - "upload_seconds": 0.062574314, - "download_seconds": 0.062594162 + "connectionEstablishedSeconds": 0.125912662, + "uploadSeconds": 0.062574314, + "downloadSeconds": 0.062594162 }, { - "connection_established_seconds": 0.124266318, - "upload_seconds": 0.061767835, - "download_seconds": 0.061794058 + "connectionEstablishedSeconds": 0.124266318, + "uploadSeconds": 0.061767835, + "downloadSeconds": 0.061794058 }, { - "connection_established_seconds": 0.122011611, - "upload_seconds": 0.060626943, - "download_seconds": 0.060894199 + "connectionEstablishedSeconds": 0.122011611, + "uploadSeconds": 0.060626943, + "downloadSeconds": 0.060894199 }, { - "connection_established_seconds": 0.122673098, - "upload_seconds": 0.060966735, - "download_seconds": 0.061010991 + "connectionEstablishedSeconds": 0.122673098, + "uploadSeconds": 0.060966735, + "downloadSeconds": 0.061010991 }, { - "connection_established_seconds": 0.124042209, - "upload_seconds": 0.061603136, - "download_seconds": 0.061670242 + "connectionEstablishedSeconds": 0.124042209, + "uploadSeconds": 0.061603136, + "downloadSeconds": 0.061670242 }, { - "connection_established_seconds": 0.119048947, - "upload_seconds": 0.058947587, - "download_seconds": 0.059002538 + "connectionEstablishedSeconds": 0.119048947, + "uploadSeconds": 0.058947587, + "downloadSeconds": 0.059002538 }, { - "connection_established_seconds": 0.128934417, - "upload_seconds": 0.064095484, - "download_seconds": 0.064128754 + "connectionEstablishedSeconds": 0.128934417, + "uploadSeconds": 0.064095484, + "downloadSeconds": 0.064128754 }, { - "connection_established_seconds": 0.122362305, - "upload_seconds": 0.060785743, - "download_seconds": 0.060800834 + "connectionEstablishedSeconds": 0.122362305, + "uploadSeconds": 0.060785743, + "downloadSeconds": 0.060800834 }, { - "connection_established_seconds": 0.121230527, - "upload_seconds": 0.060245036, - "download_seconds": 0.060381548 + "connectionEstablishedSeconds": 0.121230527, + "uploadSeconds": 0.060245036, + "downloadSeconds": 0.060381548 }, { - "connection_established_seconds": 0.124992226, - "upload_seconds": 0.062181934, - "download_seconds": 0.06209275 + "connectionEstablishedSeconds": 0.124992226, + "uploadSeconds": 0.062181934, + "downloadSeconds": 0.06209275 }, { - "connection_established_seconds": 0.127526691, - "upload_seconds": 0.063399351, - "download_seconds": 0.063405159 + "connectionEstablishedSeconds": 0.127526691, + "uploadSeconds": 0.063399351, + "downloadSeconds": 0.063405159 }, { - "connection_established_seconds": 0.124249699, - "upload_seconds": 0.061870978, - "download_seconds": 0.061780321 + "connectionEstablishedSeconds": 0.124249699, + "uploadSeconds": 0.061870978, + "downloadSeconds": 0.061780321 }, { - "connection_established_seconds": 0.126347503, - "upload_seconds": 0.062858753, - "download_seconds": 0.062814028 + "connectionEstablishedSeconds": 0.126347503, + "uploadSeconds": 0.062858753, + "downloadSeconds": 0.062814028 }, { - "connection_established_seconds": 0.11682585, - "upload_seconds": 0.058026417, - "download_seconds": 0.058059279 + "connectionEstablishedSeconds": 0.11682585, + "uploadSeconds": 0.058026417, + "downloadSeconds": 0.058059279 }, { - "connection_established_seconds": 0.122583849, - "upload_seconds": 0.060917102, - "download_seconds": 0.060954055 + "connectionEstablishedSeconds": 0.122583849, + "uploadSeconds": 0.060917102, + "downloadSeconds": 0.060954055 }, { - "connection_established_seconds": 0.123544343, - "upload_seconds": 0.06142371, - "download_seconds": 0.061420304 + "connectionEstablishedSeconds": 0.123544343, + "uploadSeconds": 0.06142371, + "downloadSeconds": 0.061420304 }, { - "connection_established_seconds": 0.12710688, - "upload_seconds": 0.063145252, - "download_seconds": 0.063224586 + "connectionEstablishedSeconds": 0.12710688, + "uploadSeconds": 0.063145252, + "downloadSeconds": 0.063224586 }, { - "connection_established_seconds": 0.127842154, - "upload_seconds": 0.063501412, - "download_seconds": 0.063566842 + "connectionEstablishedSeconds": 0.127842154, + "uploadSeconds": 0.063501412, + "downloadSeconds": 0.063566842 }, { - "connection_established_seconds": 0.123062881, - "upload_seconds": 0.061182822, - "download_seconds": 0.061162174 + "connectionEstablishedSeconds": 0.123062881, + "uploadSeconds": 0.061182822, + "downloadSeconds": 0.061162174 }, { - "connection_established_seconds": 0.12615966, - "upload_seconds": 0.062682485, - "download_seconds": 0.062684356 + "connectionEstablishedSeconds": 0.12615966, + "uploadSeconds": 0.062682485, + "downloadSeconds": 0.062684356 }, { - "connection_established_seconds": 0.120560034, - "upload_seconds": 0.059891731, - "download_seconds": 0.059905717 + "connectionEstablishedSeconds": 0.120560034, + "uploadSeconds": 0.059891731, + "downloadSeconds": 0.059905717 }, { - "connection_established_seconds": 0.120055808, - "upload_seconds": 0.059680657, - "download_seconds": 0.059689754 + "connectionEstablishedSeconds": 0.120055808, + "uploadSeconds": 0.059680657, + "downloadSeconds": 0.059689754 }, { - "connection_established_seconds": 0.117916772, - "upload_seconds": 0.058567597, - "download_seconds": 0.058605824 + "connectionEstablishedSeconds": 0.117916772, + "uploadSeconds": 0.058567597, + "downloadSeconds": 0.058605824 }, { - "connection_established_seconds": 0.124189356, - "upload_seconds": 0.061700699, - "download_seconds": 0.061744668 + "connectionEstablishedSeconds": 0.124189356, + "uploadSeconds": 0.061700699, + "downloadSeconds": 0.061744668 }, { - "connection_established_seconds": 0.122986734, - "upload_seconds": 0.061131076, - "download_seconds": 0.061157656 + "connectionEstablishedSeconds": 0.122986734, + "uploadSeconds": 0.061131076, + "downloadSeconds": 0.061157656 }, { - "connection_established_seconds": 0.123495903, - "upload_seconds": 0.061318598, - "download_seconds": 0.061348062 + "connectionEstablishedSeconds": 0.123495903, + "uploadSeconds": 0.061318598, + "downloadSeconds": 0.061348062 }, { - "connection_established_seconds": 0.11902555, - "upload_seconds": 0.059132276, - "download_seconds": 0.05916622 + "connectionEstablishedSeconds": 0.11902555, + "uploadSeconds": 0.059132276, + "downloadSeconds": 0.05916622 }, { - "connection_established_seconds": 0.128687472, - "upload_seconds": 0.064000216, - "download_seconds": 0.063988446 + "connectionEstablishedSeconds": 0.128687472, + "uploadSeconds": 0.064000216, + "downloadSeconds": 0.063988446 }, { - "connection_established_seconds": 0.121696737, - "upload_seconds": 0.060479899, - "download_seconds": 0.060491725 + "connectionEstablishedSeconds": 0.121696737, + "uploadSeconds": 0.060479899, + "downloadSeconds": 0.060491725 }, { - "connection_established_seconds": 0.12475878, - "upload_seconds": 0.062033193, - "download_seconds": 0.062057929 + "connectionEstablishedSeconds": 0.12475878, + "uploadSeconds": 0.062033193, + "downloadSeconds": 0.062057929 }, { - "connection_established_seconds": 0.128872156, - "upload_seconds": 0.06408639, - "download_seconds": 0.064089976 + "connectionEstablishedSeconds": 0.128872156, + "uploadSeconds": 0.06408639, + "downloadSeconds": 0.064089976 }, { - "connection_established_seconds": 0.121594455, - "upload_seconds": 0.06041272, - "download_seconds": 0.060461311 + "connectionEstablishedSeconds": 0.121594455, + "uploadSeconds": 0.06041272, + "downloadSeconds": 0.060461311 }, { - "connection_established_seconds": 0.124767425, - "upload_seconds": 0.062014862, - "download_seconds": 0.062043844 + "connectionEstablishedSeconds": 0.124767425, + "uploadSeconds": 0.062014862, + "downloadSeconds": 0.062043844 }, { - "connection_established_seconds": 0.126761906, - "upload_seconds": 0.062920659, - "download_seconds": 0.062972128 + "connectionEstablishedSeconds": 0.126761906, + "uploadSeconds": 0.062920659, + "downloadSeconds": 0.062972128 }, { - "connection_established_seconds": 0.124931648, - "upload_seconds": 0.062079875, - "download_seconds": 0.062108369 + "connectionEstablishedSeconds": 0.124931648, + "uploadSeconds": 0.062079875, + "downloadSeconds": 0.062108369 }, { - "connection_established_seconds": 0.122642546, - "upload_seconds": 0.060930495, - "download_seconds": 0.060985003 + "connectionEstablishedSeconds": 0.122642546, + "uploadSeconds": 0.060930495, + "downloadSeconds": 0.060985003 }, { - "connection_established_seconds": 0.127321614, - "upload_seconds": 0.063321951, - "download_seconds": 0.06330981 + "connectionEstablishedSeconds": 0.127321614, + "uploadSeconds": 0.063321951, + "downloadSeconds": 0.06330981 }, { - "connection_established_seconds": 0.126709211, - "upload_seconds": 0.062986201, - "download_seconds": 0.063011283 + "connectionEstablishedSeconds": 0.126709211, + "uploadSeconds": 0.062986201, + "downloadSeconds": 0.063011283 }, { - "connection_established_seconds": 0.127663243, - "upload_seconds": 0.063264135, - "download_seconds": 0.063304528 + "connectionEstablishedSeconds": 0.127663243, + "uploadSeconds": 0.063264135, + "downloadSeconds": 0.063304528 }, { - "connection_established_seconds": 0.120960863, - "upload_seconds": 0.060081181, - "download_seconds": 0.060120516 + "connectionEstablishedSeconds": 0.120960863, + "uploadSeconds": 0.060081181, + "downloadSeconds": 0.060120516 }, { - "connection_established_seconds": 0.123381844, - "upload_seconds": 0.061365268, - "download_seconds": 0.061315441 + "connectionEstablishedSeconds": 0.123381844, + "uploadSeconds": 0.061365268, + "downloadSeconds": 0.061315441 }, { - "connection_established_seconds": 0.128545917, - "upload_seconds": 0.063891788, - "download_seconds": 0.06394697 + "connectionEstablishedSeconds": 0.128545917, + "uploadSeconds": 0.063891788, + "downloadSeconds": 0.06394697 }, { - "connection_established_seconds": 0.117939599, - "upload_seconds": 0.058599891, - "download_seconds": 0.058641942 + "connectionEstablishedSeconds": 0.117939599, + "uploadSeconds": 0.058599891, + "downloadSeconds": 0.058641942 }, { - "connection_established_seconds": 0.119184747, - "upload_seconds": 0.059090548, - "download_seconds": 0.059103432 + "connectionEstablishedSeconds": 0.119184747, + "uploadSeconds": 0.059090548, + "downloadSeconds": 0.059103432 }, { - "connection_established_seconds": 0.119225496, - "upload_seconds": 0.05922733, - "download_seconds": 0.059264784 + "connectionEstablishedSeconds": 0.119225496, + "uploadSeconds": 0.05922733, + "downloadSeconds": 0.059264784 }, { - "connection_established_seconds": 0.122905732, - "upload_seconds": 0.061065736, - "download_seconds": 0.061151848 + "connectionEstablishedSeconds": 0.122905732, + "uploadSeconds": 0.061065736, + "downloadSeconds": 0.061151848 }, { - "connection_established_seconds": 0.125260299, - "upload_seconds": 0.062258568, - "download_seconds": 0.062296567 + "connectionEstablishedSeconds": 0.125260299, + "uploadSeconds": 0.062258568, + "downloadSeconds": 0.062296567 }, { - "connection_established_seconds": 0.125666793, - "upload_seconds": 0.06246034, - "download_seconds": 0.062490292 + "connectionEstablishedSeconds": 0.125666793, + "uploadSeconds": 0.06246034, + "downloadSeconds": 0.062490292 }, { - "connection_established_seconds": 0.130158543, - "upload_seconds": 0.064693106, - "download_seconds": 0.06471281 + "connectionEstablishedSeconds": 0.130158543, + "uploadSeconds": 0.064693106, + "downloadSeconds": 0.06471281 }, { - "connection_established_seconds": 0.123926745, - "upload_seconds": 0.061615685, - "download_seconds": 0.061623424 + "connectionEstablishedSeconds": 0.123926745, + "uploadSeconds": 0.061615685, + "downloadSeconds": 0.061623424 }, { - "connection_established_seconds": 0.12913928, - "upload_seconds": 0.064184865, - "download_seconds": 0.064204226 + "connectionEstablishedSeconds": 0.12913928, + "uploadSeconds": 0.064184865, + "downloadSeconds": 0.064204226 }, { - "connection_established_seconds": 0.120888422, - "upload_seconds": 0.060079159, - "download_seconds": 0.060075203 + "connectionEstablishedSeconds": 0.120888422, + "uploadSeconds": 0.060079159, + "downloadSeconds": 0.060075203 }, { - "connection_established_seconds": 0.121925559, - "upload_seconds": 0.06058572, - "download_seconds": 0.060601655 + "connectionEstablishedSeconds": 0.121925559, + "uploadSeconds": 0.06058572, + "downloadSeconds": 0.060601655 }, { - "connection_established_seconds": 0.12744737, - "upload_seconds": 0.063359326, - "download_seconds": 0.063369463 + "connectionEstablishedSeconds": 0.12744737, + "uploadSeconds": 0.063359326, + "downloadSeconds": 0.063369463 }, { - "connection_established_seconds": 0.121927453, - "upload_seconds": 0.060578582, - "download_seconds": 0.060592778 + "connectionEstablishedSeconds": 0.121927453, + "uploadSeconds": 0.060578582, + "downloadSeconds": 0.060592778 }, { - "connection_established_seconds": 0.12108071, - "upload_seconds": 0.060175648, - "download_seconds": 0.060614869 + "connectionEstablishedSeconds": 0.12108071, + "uploadSeconds": 0.060175648, + "downloadSeconds": 0.060614869 }, { - "connection_established_seconds": 0.127892119, - "upload_seconds": 0.063587952, - "download_seconds": 0.063609969 + "connectionEstablishedSeconds": 0.127892119, + "uploadSeconds": 0.063587952, + "downloadSeconds": 0.063609969 }, { - "connection_established_seconds": 0.120905003, - "upload_seconds": 0.060085677, - "download_seconds": 0.060124089 + "connectionEstablishedSeconds": 0.120905003, + "uploadSeconds": 0.060085677, + "downloadSeconds": 0.060124089 }, { - "connection_established_seconds": 0.120594857, - "upload_seconds": 0.059925071, - "download_seconds": 0.059965372 + "connectionEstablishedSeconds": 0.120594857, + "uploadSeconds": 0.059925071, + "downloadSeconds": 0.059965372 }, { - "connection_established_seconds": 0.126257335, - "upload_seconds": 0.062704273, - "download_seconds": 0.062742059 + "connectionEstablishedSeconds": 0.126257335, + "uploadSeconds": 0.062704273, + "downloadSeconds": 0.062742059 }, { - "connection_established_seconds": 0.125894135, - "upload_seconds": 0.062578119, - "download_seconds": 0.062602191 + "connectionEstablishedSeconds": 0.125894135, + "uploadSeconds": 0.062578119, + "downloadSeconds": 0.062602191 }, { - "connection_established_seconds": 0.123692801, - "upload_seconds": 0.061494169, - "download_seconds": 0.061509289 + "connectionEstablishedSeconds": 0.123692801, + "uploadSeconds": 0.061494169, + "downloadSeconds": 0.061509289 }, { - "connection_established_seconds": 0.125885482, - "upload_seconds": 0.062573749, - "download_seconds": 0.062580884 + "connectionEstablishedSeconds": 0.125885482, + "uploadSeconds": 0.062573749, + "downloadSeconds": 0.062580884 }, { - "connection_established_seconds": 0.12775227, - "upload_seconds": 0.063489935, - "download_seconds": 0.063545142 + "connectionEstablishedSeconds": 0.12775227, + "uploadSeconds": 0.063489935, + "downloadSeconds": 0.063545142 }, { - "connection_established_seconds": 0.124090919, - "upload_seconds": 0.061676606, - "download_seconds": 0.061714668 + "connectionEstablishedSeconds": 0.124090919, + "uploadSeconds": 0.061676606, + "downloadSeconds": 0.061714668 }, { - "connection_established_seconds": 0.127768893, - "upload_seconds": 0.063489949, - "download_seconds": 0.063512222 + "connectionEstablishedSeconds": 0.127768893, + "uploadSeconds": 0.063489949, + "downloadSeconds": 0.063512222 }, { - "connection_established_seconds": 0.121857213, - "upload_seconds": 0.060515969, - "download_seconds": 0.060548248 + "connectionEstablishedSeconds": 0.121857213, + "uploadSeconds": 0.060515969, + "downloadSeconds": 0.060548248 }, { - "connection_established_seconds": 0.120858895, - "upload_seconds": 0.059936957, - "download_seconds": 0.059978208 + "connectionEstablishedSeconds": 0.120858895, + "uploadSeconds": 0.059936957, + "downloadSeconds": 0.059978208 }, { - "connection_established_seconds": 0.125957099, - "upload_seconds": 0.062588604, - "download_seconds": 0.062638697 + "connectionEstablishedSeconds": 0.125957099, + "uploadSeconds": 0.062588604, + "downloadSeconds": 0.062638697 }, { - "connection_established_seconds": 0.128928719, - "upload_seconds": 0.064153287, - "download_seconds": 0.064156072 + "connectionEstablishedSeconds": 0.128928719, + "uploadSeconds": 0.064153287, + "downloadSeconds": 0.064156072 }, { - "connection_established_seconds": 0.123693096, - "upload_seconds": 0.061581606, - "download_seconds": 0.061498676 + "connectionEstablishedSeconds": 0.123693096, + "uploadSeconds": 0.061581606, + "downloadSeconds": 0.061498676 }, { - "connection_established_seconds": 0.11974957, - "upload_seconds": 0.059490641, - "download_seconds": 0.059520038 + "connectionEstablishedSeconds": 0.11974957, + "uploadSeconds": 0.059490641, + "downloadSeconds": 0.059520038 }, { - "connection_established_seconds": 0.127675593, - "upload_seconds": 0.063485346, - "download_seconds": 0.063516515 + "connectionEstablishedSeconds": 0.127675593, + "uploadSeconds": 0.063485346, + "downloadSeconds": 0.063516515 }, { - "connection_established_seconds": 0.129245549, - "upload_seconds": 0.064255694, - "download_seconds": 0.064269179 + "connectionEstablishedSeconds": 0.129245549, + "uploadSeconds": 0.064255694, + "downloadSeconds": 0.064269179 }, { - "connection_established_seconds": 0.130277486, - "upload_seconds": 0.064766765, - "download_seconds": 0.064795694 + "connectionEstablishedSeconds": 0.130277486, + "uploadSeconds": 0.064766765, + "downloadSeconds": 0.064795694 }, { - "connection_established_seconds": 0.127990056, - "upload_seconds": 0.063648257, - "download_seconds": 0.063665452 + "connectionEstablishedSeconds": 0.127990056, + "uploadSeconds": 0.063648257, + "downloadSeconds": 0.063665452 }, { - "connection_established_seconds": 0.127237517, - "upload_seconds": 0.063228796, - "download_seconds": 0.063325575 + "connectionEstablishedSeconds": 0.127237517, + "uploadSeconds": 0.063228796, + "downloadSeconds": 0.063325575 }, { - "connection_established_seconds": 0.126827288, - "upload_seconds": 0.063057107, - "download_seconds": 0.063060423 + "connectionEstablishedSeconds": 0.126827288, + "uploadSeconds": 0.063057107, + "downloadSeconds": 0.063060423 }, { - "connection_established_seconds": 0.128076095, - "upload_seconds": 0.063600281, - "download_seconds": 0.063563121 + "connectionEstablishedSeconds": 0.128076095, + "uploadSeconds": 0.063600281, + "downloadSeconds": 0.063563121 }, { - "connection_established_seconds": 0.126112736, - "upload_seconds": 0.062712107, - "download_seconds": 0.062709074 + "connectionEstablishedSeconds": 0.126112736, + "uploadSeconds": 0.062712107, + "downloadSeconds": 0.062709074 }, { - "connection_established_seconds": 0.126037179, - "upload_seconds": 0.062549752, - "download_seconds": 0.062570997 + "connectionEstablishedSeconds": 0.126037179, + "uploadSeconds": 0.062549752, + "downloadSeconds": 0.062570997 }, { - "connection_established_seconds": 0.124178306, - "upload_seconds": 0.061731673, - "download_seconds": 0.061729123 + "connectionEstablishedSeconds": 0.124178306, + "uploadSeconds": 0.061731673, + "downloadSeconds": 0.061729123 }, { - "connection_established_seconds": 0.122969035, - "upload_seconds": 0.061091485, - "download_seconds": 0.061125026 + "connectionEstablishedSeconds": 0.122969035, + "uploadSeconds": 0.061091485, + "downloadSeconds": 0.061125026 }, { - "connection_established_seconds": 0.126242854, - "upload_seconds": 0.062729515, - "download_seconds": 0.062781941 + "connectionEstablishedSeconds": 0.126242854, + "uploadSeconds": 0.062729515, + "downloadSeconds": 0.062781941 }, { - "connection_established_seconds": 0.12955639, - "upload_seconds": 0.064371501, - "download_seconds": 0.064425928 + "connectionEstablishedSeconds": 0.12955639, + "uploadSeconds": 0.064371501, + "downloadSeconds": 0.064425928 }, { - "connection_established_seconds": 0.123962068, - "upload_seconds": 0.061665617, - "download_seconds": 0.061628992 + "connectionEstablishedSeconds": 0.123962068, + "uploadSeconds": 0.061665617, + "downloadSeconds": 0.061628992 }, { - "connection_established_seconds": 0.12504171, - "upload_seconds": 0.062189832, - "download_seconds": 0.06221121 + "connectionEstablishedSeconds": 0.12504171, + "uploadSeconds": 0.062189832, + "downloadSeconds": 0.06221121 }, { - "connection_established_seconds": 0.130446313, - "upload_seconds": 0.064829082, - "download_seconds": 0.064873804 + "connectionEstablishedSeconds": 0.130446313, + "uploadSeconds": 0.064829082, + "downloadSeconds": 0.064873804 }, { - "connection_established_seconds": 0.129508575, - "upload_seconds": 0.064349556, - "download_seconds": 0.064360501 + "connectionEstablishedSeconds": 0.129508575, + "uploadSeconds": 0.064349556, + "downloadSeconds": 0.064360501 } ], "implementation": "rust-libp2p", @@ -1489,504 +1489,504 @@ { "result": [ { - "connection_established_seconds": 0.064777868, - "upload_seconds": 0.125998204, - "download_seconds": 0.000075636 + "connectionEstablishedSeconds": 0.064777868, + "uploadSeconds": 0.125998204, + "downloadSeconds": 0.000075636 }, { - "connection_established_seconds": 0.06294562, - "upload_seconds": 0.12275897, - "download_seconds": 0.000073667 + "connectionEstablishedSeconds": 0.06294562, + "uploadSeconds": 0.12275897, + "downloadSeconds": 0.000073667 }, { - "connection_established_seconds": 0.064982803, - "upload_seconds": 0.126651951, - "download_seconds": 0.000069897 + "connectionEstablishedSeconds": 0.064982803, + "uploadSeconds": 0.126651951, + "downloadSeconds": 0.000069897 }, { - "connection_established_seconds": 0.063169272, - "upload_seconds": 0.123140985, - "download_seconds": 0.000078117 + "connectionEstablishedSeconds": 0.063169272, + "uploadSeconds": 0.123140985, + "downloadSeconds": 0.000078117 }, { - "connection_established_seconds": 0.061480717, - "upload_seconds": 0.119770789, - "download_seconds": 0.000080836 + "connectionEstablishedSeconds": 0.061480717, + "uploadSeconds": 0.119770789, + "downloadSeconds": 0.000080836 }, { - "connection_established_seconds": 0.064885998, - "upload_seconds": 0.126467413, - "download_seconds": 0.000045782 + "connectionEstablishedSeconds": 0.064885998, + "uploadSeconds": 0.126467413, + "downloadSeconds": 0.000045782 }, { - "connection_established_seconds": 0.063326276, - "upload_seconds": 0.123218016, - "download_seconds": 0.000074582 + "connectionEstablishedSeconds": 0.063326276, + "uploadSeconds": 0.123218016, + "downloadSeconds": 0.000074582 }, { - "connection_established_seconds": 0.065046438, - "upload_seconds": 0.126780176, - "download_seconds": 0.000073816 + "connectionEstablishedSeconds": 0.065046438, + "uploadSeconds": 0.126780176, + "downloadSeconds": 0.000073816 }, { - "connection_established_seconds": 0.062702721, - "upload_seconds": 0.122423041, - "download_seconds": 0.000073728 + "connectionEstablishedSeconds": 0.062702721, + "uploadSeconds": 0.122423041, + "downloadSeconds": 0.000073728 }, { - "connection_established_seconds": 0.065586164, - "upload_seconds": 0.127955324, - "download_seconds": 0.000080008 + "connectionEstablishedSeconds": 0.065586164, + "uploadSeconds": 0.127955324, + "downloadSeconds": 0.000080008 }, { - "connection_established_seconds": 0.066246125, - "upload_seconds": 0.129010614, - "download_seconds": 0.000081791 + "connectionEstablishedSeconds": 0.066246125, + "uploadSeconds": 0.129010614, + "downloadSeconds": 0.000081791 }, { - "connection_established_seconds": 0.064241739, - "upload_seconds": 0.125201385, - "download_seconds": 0.000082527 + "connectionEstablishedSeconds": 0.064241739, + "uploadSeconds": 0.125201385, + "downloadSeconds": 0.000082527 }, { - "connection_established_seconds": 0.063676962, - "upload_seconds": 0.124129189, - "download_seconds": 0.000092577 + "connectionEstablishedSeconds": 0.063676962, + "uploadSeconds": 0.124129189, + "downloadSeconds": 0.000092577 }, { - "connection_established_seconds": 0.061776373, - "upload_seconds": 0.120380327, - "download_seconds": 0.000088589 + "connectionEstablishedSeconds": 0.061776373, + "uploadSeconds": 0.120380327, + "downloadSeconds": 0.000088589 }, { - "connection_established_seconds": 0.064540106, - "upload_seconds": 0.125817512, - "download_seconds": 0.000063514 + "connectionEstablishedSeconds": 0.064540106, + "uploadSeconds": 0.125817512, + "downloadSeconds": 0.000063514 }, { - "connection_established_seconds": 0.06378064, - "upload_seconds": 0.124386111, - "download_seconds": 0.000071957 + "connectionEstablishedSeconds": 0.06378064, + "uploadSeconds": 0.124386111, + "downloadSeconds": 0.000071957 }, { - "connection_established_seconds": 0.063139452, - "upload_seconds": 0.12295606, - "download_seconds": 0.000080053 + "connectionEstablishedSeconds": 0.063139452, + "uploadSeconds": 0.12295606, + "downloadSeconds": 0.000080053 }, { - "connection_established_seconds": 0.062069621, - "upload_seconds": 0.120622443, - "download_seconds": 0.000053712 + "connectionEstablishedSeconds": 0.062069621, + "uploadSeconds": 0.120622443, + "downloadSeconds": 0.000053712 }, { - "connection_established_seconds": 0.062981833, - "upload_seconds": 0.12289405, - "download_seconds": 0.00008086 + "connectionEstablishedSeconds": 0.062981833, + "uploadSeconds": 0.12289405, + "downloadSeconds": 0.00008086 }, { - "connection_established_seconds": 0.064930467, - "upload_seconds": 0.126605086, - "download_seconds": 0.000082813 + "connectionEstablishedSeconds": 0.064930467, + "uploadSeconds": 0.126605086, + "downloadSeconds": 0.000082813 }, { - "connection_established_seconds": 0.06285884, - "upload_seconds": 0.122514956, - "download_seconds": 0.000093668 + "connectionEstablishedSeconds": 0.06285884, + "uploadSeconds": 0.122514956, + "downloadSeconds": 0.000093668 }, { - "connection_established_seconds": 0.061271851, - "upload_seconds": 0.119193715, - "download_seconds": 0.000082919 + "connectionEstablishedSeconds": 0.061271851, + "uploadSeconds": 0.119193715, + "downloadSeconds": 0.000082919 }, { - "connection_established_seconds": 0.064243355, - "upload_seconds": 0.125646122, - "download_seconds": 0.000087232 + "connectionEstablishedSeconds": 0.064243355, + "uploadSeconds": 0.125646122, + "downloadSeconds": 0.000087232 }, { - "connection_established_seconds": 0.063067288, - "upload_seconds": 0.122717381, - "download_seconds": 0.000073586 + "connectionEstablishedSeconds": 0.063067288, + "uploadSeconds": 0.122717381, + "downloadSeconds": 0.000073586 }, { - "connection_established_seconds": 0.0665023, - "upload_seconds": 0.129655903, - "download_seconds": 0.000069867 + "connectionEstablishedSeconds": 0.0665023, + "uploadSeconds": 0.129655903, + "downloadSeconds": 0.000069867 }, { - "connection_established_seconds": 0.064118954, - "upload_seconds": 0.124881153, - "download_seconds": 0.000059721 + "connectionEstablishedSeconds": 0.064118954, + "uploadSeconds": 0.124881153, + "downloadSeconds": 0.000059721 }, { - "connection_established_seconds": 0.063248922, - "upload_seconds": 0.123328557, - "download_seconds": 0.000078478 + "connectionEstablishedSeconds": 0.063248922, + "uploadSeconds": 0.123328557, + "downloadSeconds": 0.000078478 }, { - "connection_established_seconds": 0.061599504, - "upload_seconds": 0.119807769, - "download_seconds": 0.000086405 + "connectionEstablishedSeconds": 0.061599504, + "uploadSeconds": 0.119807769, + "downloadSeconds": 0.000086405 }, { - "connection_established_seconds": 0.063174339, - "upload_seconds": 0.123168493, - "download_seconds": 0.000078535 + "connectionEstablishedSeconds": 0.063174339, + "uploadSeconds": 0.123168493, + "downloadSeconds": 0.000078535 }, { - "connection_established_seconds": 0.064735618, - "upload_seconds": 0.12625337, - "download_seconds": 0.000055502 + "connectionEstablishedSeconds": 0.064735618, + "uploadSeconds": 0.12625337, + "downloadSeconds": 0.000055502 }, { - "connection_established_seconds": 0.062365727, - "upload_seconds": 0.121573982, - "download_seconds": 0.000067009 + "connectionEstablishedSeconds": 0.062365727, + "uploadSeconds": 0.121573982, + "downloadSeconds": 0.000067009 }, { - "connection_established_seconds": 0.062613185, - "upload_seconds": 0.122205546, - "download_seconds": 0.00006355 + "connectionEstablishedSeconds": 0.062613185, + "uploadSeconds": 0.122205546, + "downloadSeconds": 0.00006355 }, { - "connection_established_seconds": 0.063637113, - "upload_seconds": 0.124060759, - "download_seconds": 0.000104106 + "connectionEstablishedSeconds": 0.063637113, + "uploadSeconds": 0.124060759, + "downloadSeconds": 0.000104106 }, { - "connection_established_seconds": 0.065089764, - "upload_seconds": 0.127116541, - "download_seconds": 0.000069329 + "connectionEstablishedSeconds": 0.065089764, + "uploadSeconds": 0.127116541, + "downloadSeconds": 0.000069329 }, { - "connection_established_seconds": 0.063268963, - "upload_seconds": 0.123293679, - "download_seconds": 0.000070154 + "connectionEstablishedSeconds": 0.063268963, + "uploadSeconds": 0.123293679, + "downloadSeconds": 0.000070154 }, { - "connection_established_seconds": 0.064351409, - "upload_seconds": 0.125566891, - "download_seconds": 0.000081906 + "connectionEstablishedSeconds": 0.064351409, + "uploadSeconds": 0.125566891, + "downloadSeconds": 0.000081906 }, { - "connection_established_seconds": 0.063977541, - "upload_seconds": 0.124605088, - "download_seconds": 0.000090947 + "connectionEstablishedSeconds": 0.063977541, + "uploadSeconds": 0.124605088, + "downloadSeconds": 0.000090947 }, { - "connection_established_seconds": 0.064431774, - "upload_seconds": 0.125293052, - "download_seconds": 0.000097249 + "connectionEstablishedSeconds": 0.064431774, + "uploadSeconds": 0.125293052, + "downloadSeconds": 0.000097249 }, { - "connection_established_seconds": 0.062392999, - "upload_seconds": 0.12150546, - "download_seconds": 0.000089871 + "connectionEstablishedSeconds": 0.062392999, + "uploadSeconds": 0.12150546, + "downloadSeconds": 0.000089871 }, { - "connection_established_seconds": 0.065171834, - "upload_seconds": 0.126893219, - "download_seconds": 0.00006415 + "connectionEstablishedSeconds": 0.065171834, + "uploadSeconds": 0.126893219, + "downloadSeconds": 0.00006415 }, { - "connection_established_seconds": 0.063419236, - "upload_seconds": 0.123194115, - "download_seconds": 0.0000752 + "connectionEstablishedSeconds": 0.063419236, + "uploadSeconds": 0.123194115, + "downloadSeconds": 0.0000752 }, { - "connection_established_seconds": 0.062857141, - "upload_seconds": 0.122546209, - "download_seconds": 0.000079444 + "connectionEstablishedSeconds": 0.062857141, + "uploadSeconds": 0.122546209, + "downloadSeconds": 0.000079444 }, { - "connection_established_seconds": 0.060385801, - "upload_seconds": 0.117631317, - "download_seconds": 0.000085714 + "connectionEstablishedSeconds": 0.060385801, + "uploadSeconds": 0.117631317, + "downloadSeconds": 0.000085714 }, { - "connection_established_seconds": 0.066192975, - "upload_seconds": 0.128907583, - "download_seconds": 0.00007039 + "connectionEstablishedSeconds": 0.066192975, + "uploadSeconds": 0.128907583, + "downloadSeconds": 0.00007039 }, { - "connection_established_seconds": 0.06264006, - "upload_seconds": 0.121778547, - "download_seconds": 0.000095732 + "connectionEstablishedSeconds": 0.06264006, + "uploadSeconds": 0.121778547, + "downloadSeconds": 0.000095732 }, { - "connection_established_seconds": 0.064492003, - "upload_seconds": 0.125525397, - "download_seconds": 0.000046312 + "connectionEstablishedSeconds": 0.064492003, + "uploadSeconds": 0.125525397, + "downloadSeconds": 0.000046312 }, { - "connection_established_seconds": 0.065256489, - "upload_seconds": 0.127060265, - "download_seconds": 0.000111949 + "connectionEstablishedSeconds": 0.065256489, + "uploadSeconds": 0.127060265, + "downloadSeconds": 0.000111949 }, { - "connection_established_seconds": 0.064660316, - "upload_seconds": 0.125923877, - "download_seconds": 0.000077244 + "connectionEstablishedSeconds": 0.064660316, + "uploadSeconds": 0.125923877, + "downloadSeconds": 0.000077244 }, { - "connection_established_seconds": 0.06355617, - "upload_seconds": 0.123885464, - "download_seconds": 0.000086419 + "connectionEstablishedSeconds": 0.06355617, + "uploadSeconds": 0.123885464, + "downloadSeconds": 0.000086419 }, { - "connection_established_seconds": 0.062414997, - "upload_seconds": 0.121797196, - "download_seconds": 0.00010588 + "connectionEstablishedSeconds": 0.062414997, + "uploadSeconds": 0.121797196, + "downloadSeconds": 0.00010588 }, { - "connection_established_seconds": 0.066173573, - "upload_seconds": 0.12932854, - "download_seconds": 0.000063044 + "connectionEstablishedSeconds": 0.066173573, + "uploadSeconds": 0.12932854, + "downloadSeconds": 0.000063044 }, { - "connection_established_seconds": 0.062986592, - "upload_seconds": 0.122868444, - "download_seconds": 0.000081463 + "connectionEstablishedSeconds": 0.062986592, + "uploadSeconds": 0.122868444, + "downloadSeconds": 0.000081463 }, { - "connection_established_seconds": 0.063503944, - "upload_seconds": 0.12384623, - "download_seconds": 0.000075366 + "connectionEstablishedSeconds": 0.063503944, + "uploadSeconds": 0.12384623, + "downloadSeconds": 0.000075366 }, { - "connection_established_seconds": 0.064330604, - "upload_seconds": 0.125533853, - "download_seconds": 0.000079061 + "connectionEstablishedSeconds": 0.064330604, + "uploadSeconds": 0.125533853, + "downloadSeconds": 0.000079061 }, { - "connection_established_seconds": 0.065544157, - "upload_seconds": 0.128015899, - "download_seconds": 0.000068859 + "connectionEstablishedSeconds": 0.065544157, + "uploadSeconds": 0.128015899, + "downloadSeconds": 0.000068859 }, { - "connection_established_seconds": 0.064812758, - "upload_seconds": 0.126523177, - "download_seconds": 0.000073051 + "connectionEstablishedSeconds": 0.064812758, + "uploadSeconds": 0.126523177, + "downloadSeconds": 0.000073051 }, { - "connection_established_seconds": 0.062981201, - "upload_seconds": 0.122817041, - "download_seconds": 0.000148614 + "connectionEstablishedSeconds": 0.062981201, + "uploadSeconds": 0.122817041, + "downloadSeconds": 0.000148614 }, { - "connection_established_seconds": 0.066029472, - "upload_seconds": 0.128808333, - "download_seconds": 0.000127753 + "connectionEstablishedSeconds": 0.066029472, + "uploadSeconds": 0.128808333, + "downloadSeconds": 0.000127753 }, { - "connection_established_seconds": 0.063809677, - "upload_seconds": 0.124393806, - "download_seconds": 0.000074221 + "connectionEstablishedSeconds": 0.063809677, + "uploadSeconds": 0.124393806, + "downloadSeconds": 0.000074221 }, { - "connection_established_seconds": 0.064258717, - "upload_seconds": 0.125336028, - "download_seconds": 0.000071534 + "connectionEstablishedSeconds": 0.064258717, + "uploadSeconds": 0.125336028, + "downloadSeconds": 0.000071534 }, { - "connection_established_seconds": 0.063431624, - "upload_seconds": 0.123813457, - "download_seconds": 0.000076783 + "connectionEstablishedSeconds": 0.063431624, + "uploadSeconds": 0.123813457, + "downloadSeconds": 0.000076783 }, { - "connection_established_seconds": 0.066005284, - "upload_seconds": 0.128856331, - "download_seconds": 0.000081916 + "connectionEstablishedSeconds": 0.066005284, + "uploadSeconds": 0.128856331, + "downloadSeconds": 0.000081916 }, { - "connection_established_seconds": 0.06587658, - "upload_seconds": 0.128505099, - "download_seconds": 0.000082519 + "connectionEstablishedSeconds": 0.06587658, + "uploadSeconds": 0.128505099, + "downloadSeconds": 0.000082519 }, { - "connection_established_seconds": 0.062858795, - "upload_seconds": 0.122414246, - "download_seconds": 0.000083717 + "connectionEstablishedSeconds": 0.062858795, + "uploadSeconds": 0.122414246, + "downloadSeconds": 0.000083717 }, { - "connection_established_seconds": 0.061783997, - "upload_seconds": 0.119334631, - "download_seconds": 0.000109582 + "connectionEstablishedSeconds": 0.061783997, + "uploadSeconds": 0.119334631, + "downloadSeconds": 0.000109582 }, { - "connection_established_seconds": 0.062791376, - "upload_seconds": 0.122468863, - "download_seconds": 0.000076865 + "connectionEstablishedSeconds": 0.062791376, + "uploadSeconds": 0.122468863, + "downloadSeconds": 0.000076865 }, { - "connection_established_seconds": 0.062901138, - "upload_seconds": 0.122598995, - "download_seconds": 0.000071515 + "connectionEstablishedSeconds": 0.062901138, + "uploadSeconds": 0.122598995, + "downloadSeconds": 0.000071515 }, { - "connection_established_seconds": 0.062531113, - "upload_seconds": 0.121863399, - "download_seconds": 0.000087865 + "connectionEstablishedSeconds": 0.062531113, + "uploadSeconds": 0.121863399, + "downloadSeconds": 0.000087865 }, { - "connection_established_seconds": 0.064976981, - "upload_seconds": 0.126558119, - "download_seconds": 0.000115422 + "connectionEstablishedSeconds": 0.064976981, + "uploadSeconds": 0.126558119, + "downloadSeconds": 0.000115422 }, { - "connection_established_seconds": 0.064216494, - "upload_seconds": 0.124962731, - "download_seconds": 0.000083004 + "connectionEstablishedSeconds": 0.064216494, + "uploadSeconds": 0.124962731, + "downloadSeconds": 0.000083004 }, { - "connection_established_seconds": 0.062264406, - "upload_seconds": 0.121360788, - "download_seconds": 0.000073056 + "connectionEstablishedSeconds": 0.062264406, + "uploadSeconds": 0.121360788, + "downloadSeconds": 0.000073056 }, { - "connection_established_seconds": 0.064672496, - "upload_seconds": 0.126154373, - "download_seconds": 0.000091576 + "connectionEstablishedSeconds": 0.064672496, + "uploadSeconds": 0.126154373, + "downloadSeconds": 0.000091576 }, { - "connection_established_seconds": 0.065740028, - "upload_seconds": 0.128227022, - "download_seconds": 0.000154756 + "connectionEstablishedSeconds": 0.065740028, + "uploadSeconds": 0.128227022, + "downloadSeconds": 0.000154756 }, { - "connection_established_seconds": 0.061835942, - "upload_seconds": 0.120442236, - "download_seconds": 0.000074908 + "connectionEstablishedSeconds": 0.061835942, + "uploadSeconds": 0.120442236, + "downloadSeconds": 0.000074908 }, { - "connection_established_seconds": 0.063429564, - "upload_seconds": 0.123661597, - "download_seconds": 0.000052419 + "connectionEstablishedSeconds": 0.063429564, + "uploadSeconds": 0.123661597, + "downloadSeconds": 0.000052419 }, { - "connection_established_seconds": 0.066476234, - "upload_seconds": 0.129799817, - "download_seconds": 0.000076399 + "connectionEstablishedSeconds": 0.066476234, + "uploadSeconds": 0.129799817, + "downloadSeconds": 0.000076399 }, { - "connection_established_seconds": 0.062667103, - "upload_seconds": 0.122210395, - "download_seconds": 0.000075119 + "connectionEstablishedSeconds": 0.062667103, + "uploadSeconds": 0.122210395, + "downloadSeconds": 0.000075119 }, { - "connection_established_seconds": 0.062874746, - "upload_seconds": 0.122624341, - "download_seconds": 0.000099077 + "connectionEstablishedSeconds": 0.062874746, + "uploadSeconds": 0.122624341, + "downloadSeconds": 0.000099077 }, { - "connection_established_seconds": 0.063208043, - "upload_seconds": 0.123244426, - "download_seconds": 0.000083971 + "connectionEstablishedSeconds": 0.063208043, + "uploadSeconds": 0.123244426, + "downloadSeconds": 0.000083971 }, { - "connection_established_seconds": 0.062803152, - "upload_seconds": 0.12237716, - "download_seconds": 0.000077384 + "connectionEstablishedSeconds": 0.062803152, + "uploadSeconds": 0.12237716, + "downloadSeconds": 0.000077384 }, { - "connection_established_seconds": 0.064475435, - "upload_seconds": 0.12574189, - "download_seconds": 0.000047054 + "connectionEstablishedSeconds": 0.064475435, + "uploadSeconds": 0.12574189, + "downloadSeconds": 0.000047054 }, { - "connection_established_seconds": 0.066113533, - "upload_seconds": 0.129156976, - "download_seconds": 0.000076801 + "connectionEstablishedSeconds": 0.066113533, + "uploadSeconds": 0.129156976, + "downloadSeconds": 0.000076801 }, { - "connection_established_seconds": 0.065250443, - "upload_seconds": 0.12746102, - "download_seconds": 0.000052761 + "connectionEstablishedSeconds": 0.065250443, + "uploadSeconds": 0.12746102, + "downloadSeconds": 0.000052761 }, { - "connection_established_seconds": 0.064099146, - "upload_seconds": 0.12506225, - "download_seconds": 0.000077246 + "connectionEstablishedSeconds": 0.064099146, + "uploadSeconds": 0.12506225, + "downloadSeconds": 0.000077246 }, { - "connection_established_seconds": 0.063758761, - "upload_seconds": 0.124206074, - "download_seconds": 0.000081693 + "connectionEstablishedSeconds": 0.063758761, + "uploadSeconds": 0.124206074, + "downloadSeconds": 0.000081693 }, { - "connection_established_seconds": 0.064691732, - "upload_seconds": 0.126195825, - "download_seconds": 0.000075353 + "connectionEstablishedSeconds": 0.064691732, + "uploadSeconds": 0.126195825, + "downloadSeconds": 0.000075353 }, { - "connection_established_seconds": 0.062189209, - "upload_seconds": 0.121311004, - "download_seconds": 0.000069429 + "connectionEstablishedSeconds": 0.062189209, + "uploadSeconds": 0.121311004, + "downloadSeconds": 0.000069429 }, { - "connection_established_seconds": 0.061228587, - "upload_seconds": 0.119376962, - "download_seconds": 0.00007423 + "connectionEstablishedSeconds": 0.061228587, + "uploadSeconds": 0.119376962, + "downloadSeconds": 0.00007423 }, { - "connection_established_seconds": 0.061882032, - "upload_seconds": 0.12067482, - "download_seconds": 0.000089354 + "connectionEstablishedSeconds": 0.061882032, + "uploadSeconds": 0.12067482, + "downloadSeconds": 0.000089354 }, { - "connection_established_seconds": 0.060575704, - "upload_seconds": 0.118040972, - "download_seconds": 0.000095531 + "connectionEstablishedSeconds": 0.060575704, + "uploadSeconds": 0.118040972, + "downloadSeconds": 0.000095531 }, { - "connection_established_seconds": 0.063224556, - "upload_seconds": 0.123390466, - "download_seconds": 0.000077311 + "connectionEstablishedSeconds": 0.063224556, + "uploadSeconds": 0.123390466, + "downloadSeconds": 0.000077311 }, { - "connection_established_seconds": 0.061287889, - "upload_seconds": 0.119465674, - "download_seconds": 0.000074671 + "connectionEstablishedSeconds": 0.061287889, + "uploadSeconds": 0.119465674, + "downloadSeconds": 0.000074671 }, { - "connection_established_seconds": 0.062176027, - "upload_seconds": 0.121133286, - "download_seconds": 0.00007535 + "connectionEstablishedSeconds": 0.062176027, + "uploadSeconds": 0.121133286, + "downloadSeconds": 0.00007535 }, { - "connection_established_seconds": 0.064492176, - "upload_seconds": 0.125851577, - "download_seconds": 0.000077252 + "connectionEstablishedSeconds": 0.064492176, + "uploadSeconds": 0.125851577, + "downloadSeconds": 0.000077252 }, { - "connection_established_seconds": 0.063885163, - "upload_seconds": 0.124464327, - "download_seconds": 0.00007576 + "connectionEstablishedSeconds": 0.063885163, + "uploadSeconds": 0.124464327, + "downloadSeconds": 0.00007576 }, { - "connection_established_seconds": 0.062164169, - "upload_seconds": 0.12127478, - "download_seconds": 0.000070603 + "connectionEstablishedSeconds": 0.062164169, + "uploadSeconds": 0.12127478, + "downloadSeconds": 0.000070603 }, { - "connection_established_seconds": 0.062933372, - "upload_seconds": 0.12266429, - "download_seconds": 0.000075274 + "connectionEstablishedSeconds": 0.062933372, + "uploadSeconds": 0.12266429, + "downloadSeconds": 0.000075274 }, { - "connection_established_seconds": 0.063141544, - "upload_seconds": 0.123043061, - "download_seconds": 0.000067134 + "connectionEstablishedSeconds": 0.063141544, + "uploadSeconds": 0.123043061, + "downloadSeconds": 0.000067134 }, { - "connection_established_seconds": 0.064007733, - "upload_seconds": 0.124852186, - "download_seconds": 0.000092172 + "connectionEstablishedSeconds": 0.064007733, + "uploadSeconds": 0.124852186, + "downloadSeconds": 0.000092172 }, { - "connection_established_seconds": 0.062662758, - "upload_seconds": 0.121683962, - "download_seconds": 0.000097485 + "connectionEstablishedSeconds": 0.062662758, + "uploadSeconds": 0.121683962, + "downloadSeconds": 0.000097485 } ], "implementation": "rust-libp2p", @@ -1996,504 +1996,504 @@ { "result": [ { - "connection_established_seconds": 0.065345597, - "upload_seconds": 0.126627588, - "download_seconds": 0.000079782 + "connectionEstablishedSeconds": 0.065345597, + "uploadSeconds": 0.126627588, + "downloadSeconds": 0.000079782 }, { - "connection_established_seconds": 0.06195985, - "upload_seconds": 0.120559278, - "download_seconds": 0.000063813 + "connectionEstablishedSeconds": 0.06195985, + "uploadSeconds": 0.120559278, + "downloadSeconds": 0.000063813 }, { - "connection_established_seconds": 0.065746356, - "upload_seconds": 0.1281704, - "download_seconds": 0.000042327 + "connectionEstablishedSeconds": 0.065746356, + "uploadSeconds": 0.1281704, + "downloadSeconds": 0.000042327 }, { - "connection_established_seconds": 0.06182322, - "upload_seconds": 0.120358159, - "download_seconds": 0.000054483 + "connectionEstablishedSeconds": 0.06182322, + "uploadSeconds": 0.120358159, + "downloadSeconds": 0.000054483 }, { - "connection_established_seconds": 0.063796406, - "upload_seconds": 0.124231577, - "download_seconds": 0.000042138 + "connectionEstablishedSeconds": 0.063796406, + "uploadSeconds": 0.124231577, + "downloadSeconds": 0.000042138 }, { - "connection_established_seconds": 0.064608911, - "upload_seconds": 0.125767583, - "download_seconds": 0.000042794 + "connectionEstablishedSeconds": 0.064608911, + "uploadSeconds": 0.125767583, + "downloadSeconds": 0.000042794 }, { - "connection_established_seconds": 0.065418586, - "upload_seconds": 0.127598866, - "download_seconds": 0.0000745 + "connectionEstablishedSeconds": 0.065418586, + "uploadSeconds": 0.127598866, + "downloadSeconds": 0.0000745 }, { - "connection_established_seconds": 0.063857974, - "upload_seconds": 0.12470036, - "download_seconds": 0.000054574 + "connectionEstablishedSeconds": 0.063857974, + "uploadSeconds": 0.12470036, + "downloadSeconds": 0.000054574 }, { - "connection_established_seconds": 0.064741435, - "upload_seconds": 0.126321487, - "download_seconds": 0.000049352 + "connectionEstablishedSeconds": 0.064741435, + "uploadSeconds": 0.126321487, + "downloadSeconds": 0.000049352 }, { - "connection_established_seconds": 0.062298059, - "upload_seconds": 0.121567394, - "download_seconds": 0.000043745 + "connectionEstablishedSeconds": 0.062298059, + "uploadSeconds": 0.121567394, + "downloadSeconds": 0.000043745 }, { - "connection_established_seconds": 0.062853679, - "upload_seconds": 0.1215074, - "download_seconds": 0.000068952 + "connectionEstablishedSeconds": 0.062853679, + "uploadSeconds": 0.1215074, + "downloadSeconds": 0.000068952 }, { - "connection_established_seconds": 0.061282703, - "upload_seconds": 0.119296348, - "download_seconds": 0.000044825 + "connectionEstablishedSeconds": 0.061282703, + "uploadSeconds": 0.119296348, + "downloadSeconds": 0.000044825 }, { - "connection_established_seconds": 0.065680616, - "upload_seconds": 0.128422717, - "download_seconds": 0.00004375 + "connectionEstablishedSeconds": 0.065680616, + "uploadSeconds": 0.128422717, + "downloadSeconds": 0.00004375 }, { - "connection_established_seconds": 0.060174806, - "upload_seconds": 0.117313557, - "download_seconds": 0.000045011 + "connectionEstablishedSeconds": 0.060174806, + "uploadSeconds": 0.117313557, + "downloadSeconds": 0.000045011 }, { - "connection_established_seconds": 0.064585942, - "upload_seconds": 0.126086034, - "download_seconds": 0.000043884 + "connectionEstablishedSeconds": 0.064585942, + "uploadSeconds": 0.126086034, + "downloadSeconds": 0.000043884 }, { - "connection_established_seconds": 0.064333531, - "upload_seconds": 0.125695507, - "download_seconds": 0.000041636 + "connectionEstablishedSeconds": 0.064333531, + "uploadSeconds": 0.125695507, + "downloadSeconds": 0.000041636 }, { - "connection_established_seconds": 0.063111935, - "upload_seconds": 0.122901385, - "download_seconds": 0.000043733 + "connectionEstablishedSeconds": 0.063111935, + "uploadSeconds": 0.122901385, + "downloadSeconds": 0.000043733 }, { - "connection_established_seconds": 0.064714655, - "upload_seconds": 0.12637165, - "download_seconds": 0.000044685 + "connectionEstablishedSeconds": 0.064714655, + "uploadSeconds": 0.12637165, + "downloadSeconds": 0.000044685 }, { - "connection_established_seconds": 0.062752903, - "upload_seconds": 0.122323865, - "download_seconds": 0.000060012 + "connectionEstablishedSeconds": 0.062752903, + "uploadSeconds": 0.122323865, + "downloadSeconds": 0.000060012 }, { - "connection_established_seconds": 0.066008082, - "upload_seconds": 0.128951116, - "download_seconds": 0.000043653 + "connectionEstablishedSeconds": 0.066008082, + "uploadSeconds": 0.128951116, + "downloadSeconds": 0.000043653 }, { - "connection_established_seconds": 0.064480896, - "upload_seconds": 0.125931628, - "download_seconds": 0.000061708 + "connectionEstablishedSeconds": 0.064480896, + "uploadSeconds": 0.125931628, + "downloadSeconds": 0.000061708 }, { - "connection_established_seconds": 0.065804323, - "upload_seconds": 0.128470453, - "download_seconds": 0.00004138 + "connectionEstablishedSeconds": 0.065804323, + "uploadSeconds": 0.128470453, + "downloadSeconds": 0.00004138 }, { - "connection_established_seconds": 0.064074568, - "upload_seconds": 0.125002588, - "download_seconds": 0.000074019 + "connectionEstablishedSeconds": 0.064074568, + "uploadSeconds": 0.125002588, + "downloadSeconds": 0.000074019 }, { - "connection_established_seconds": 0.064293037, - "upload_seconds": 0.125354149, - "download_seconds": 0.000044326 + "connectionEstablishedSeconds": 0.064293037, + "uploadSeconds": 0.125354149, + "downloadSeconds": 0.000044326 }, { - "connection_established_seconds": 0.062835329, - "upload_seconds": 0.122464034, - "download_seconds": 0.000046381 + "connectionEstablishedSeconds": 0.062835329, + "uploadSeconds": 0.122464034, + "downloadSeconds": 0.000046381 }, { - "connection_established_seconds": 0.062287958, - "upload_seconds": 0.121541381, - "download_seconds": 0.00005813 + "connectionEstablishedSeconds": 0.062287958, + "uploadSeconds": 0.121541381, + "downloadSeconds": 0.00005813 }, { - "connection_established_seconds": 0.063293814, - "upload_seconds": 0.123336206, - "download_seconds": 0.000049922 + "connectionEstablishedSeconds": 0.063293814, + "uploadSeconds": 0.123336206, + "downloadSeconds": 0.000049922 }, { - "connection_established_seconds": 0.062950057, - "upload_seconds": 0.122558901, - "download_seconds": 0.000075057 + "connectionEstablishedSeconds": 0.062950057, + "uploadSeconds": 0.122558901, + "downloadSeconds": 0.000075057 }, { - "connection_established_seconds": 0.064089433, - "upload_seconds": 0.125055731, - "download_seconds": 0.000049211 + "connectionEstablishedSeconds": 0.064089433, + "uploadSeconds": 0.125055731, + "downloadSeconds": 0.000049211 }, { - "connection_established_seconds": 0.062809583, - "upload_seconds": 0.122608524, - "download_seconds": 0.000044586 + "connectionEstablishedSeconds": 0.062809583, + "uploadSeconds": 0.122608524, + "downloadSeconds": 0.000044586 }, { - "connection_established_seconds": 0.063234631, - "upload_seconds": 0.123434574, - "download_seconds": 0.000044071 + "connectionEstablishedSeconds": 0.063234631, + "uploadSeconds": 0.123434574, + "downloadSeconds": 0.000044071 }, { - "connection_established_seconds": 0.06434445, - "upload_seconds": 0.125639794, - "download_seconds": 0.000042225 + "connectionEstablishedSeconds": 0.06434445, + "uploadSeconds": 0.125639794, + "downloadSeconds": 0.000042225 }, { - "connection_established_seconds": 0.064164746, - "upload_seconds": 0.125205322, - "download_seconds": 0.00005385 + "connectionEstablishedSeconds": 0.064164746, + "uploadSeconds": 0.125205322, + "downloadSeconds": 0.00005385 }, { - "connection_established_seconds": 0.066054385, - "upload_seconds": 0.128645324, - "download_seconds": 0.000117253 + "connectionEstablishedSeconds": 0.066054385, + "uploadSeconds": 0.128645324, + "downloadSeconds": 0.000117253 }, { - "connection_established_seconds": 0.064043208, - "upload_seconds": 0.124796422, - "download_seconds": 0.00004381 + "connectionEstablishedSeconds": 0.064043208, + "uploadSeconds": 0.124796422, + "downloadSeconds": 0.00004381 }, { - "connection_established_seconds": 0.065831828, - "upload_seconds": 0.128577677, - "download_seconds": 0.000060214 + "connectionEstablishedSeconds": 0.065831828, + "uploadSeconds": 0.128577677, + "downloadSeconds": 0.000060214 }, { - "connection_established_seconds": 0.060849511, - "upload_seconds": 0.118586915, - "download_seconds": 0.000043138 + "connectionEstablishedSeconds": 0.060849511, + "uploadSeconds": 0.118586915, + "downloadSeconds": 0.000043138 }, { - "connection_established_seconds": 0.066767867, - "upload_seconds": 0.130452973, - "download_seconds": 0.00004553 + "connectionEstablishedSeconds": 0.066767867, + "uploadSeconds": 0.130452973, + "downloadSeconds": 0.00004553 }, { - "connection_established_seconds": 0.06153828, - "upload_seconds": 0.119777042, - "download_seconds": 0.000074773 + "connectionEstablishedSeconds": 0.06153828, + "uploadSeconds": 0.119777042, + "downloadSeconds": 0.000074773 }, { - "connection_established_seconds": 0.06366191, - "upload_seconds": 0.124192021, - "download_seconds": 0.000047986 + "connectionEstablishedSeconds": 0.06366191, + "uploadSeconds": 0.124192021, + "downloadSeconds": 0.000047986 }, { - "connection_established_seconds": 0.062317532, - "upload_seconds": 0.121469918, - "download_seconds": 0.000050752 + "connectionEstablishedSeconds": 0.062317532, + "uploadSeconds": 0.121469918, + "downloadSeconds": 0.000050752 }, { - "connection_established_seconds": 0.064815759, - "upload_seconds": 0.126497739, - "download_seconds": 0.00004439 + "connectionEstablishedSeconds": 0.064815759, + "uploadSeconds": 0.126497739, + "downloadSeconds": 0.00004439 }, { - "connection_established_seconds": 0.065128152, - "upload_seconds": 0.127083413, - "download_seconds": 0.00004496 + "connectionEstablishedSeconds": 0.065128152, + "uploadSeconds": 0.127083413, + "downloadSeconds": 0.00004496 }, { - "connection_established_seconds": 0.061595343, - "upload_seconds": 0.11990911, - "download_seconds": 0.000049068 + "connectionEstablishedSeconds": 0.061595343, + "uploadSeconds": 0.11990911, + "downloadSeconds": 0.000049068 }, { - "connection_established_seconds": 0.06438175, - "upload_seconds": 0.125755389, - "download_seconds": 0.000054198 + "connectionEstablishedSeconds": 0.06438175, + "uploadSeconds": 0.125755389, + "downloadSeconds": 0.000054198 }, { - "connection_established_seconds": 0.064237585, - "upload_seconds": 0.125526082, - "download_seconds": 0.000045735 + "connectionEstablishedSeconds": 0.064237585, + "uploadSeconds": 0.125526082, + "downloadSeconds": 0.000045735 }, { - "connection_established_seconds": 0.066888061, - "upload_seconds": 0.130603408, - "download_seconds": 0.000062431 + "connectionEstablishedSeconds": 0.066888061, + "uploadSeconds": 0.130603408, + "downloadSeconds": 0.000062431 }, { - "connection_established_seconds": 0.062696867, - "upload_seconds": 0.122318473, - "download_seconds": 0.000060549 + "connectionEstablishedSeconds": 0.062696867, + "uploadSeconds": 0.122318473, + "downloadSeconds": 0.000060549 }, { - "connection_established_seconds": 0.062242458, - "upload_seconds": 0.121236386, - "download_seconds": 0.00004419 + "connectionEstablishedSeconds": 0.062242458, + "uploadSeconds": 0.121236386, + "downloadSeconds": 0.00004419 }, { - "connection_established_seconds": 0.065115077, - "upload_seconds": 0.127120581, - "download_seconds": 0.000043557 + "connectionEstablishedSeconds": 0.065115077, + "uploadSeconds": 0.127120581, + "downloadSeconds": 0.000043557 }, { - "connection_established_seconds": 0.061703831, - "upload_seconds": 0.120399369, - "download_seconds": 0.000076802 + "connectionEstablishedSeconds": 0.061703831, + "uploadSeconds": 0.120399369, + "downloadSeconds": 0.000076802 }, { - "connection_established_seconds": 0.060947387, - "upload_seconds": 0.118735343, - "download_seconds": 0.000041297 + "connectionEstablishedSeconds": 0.060947387, + "uploadSeconds": 0.118735343, + "downloadSeconds": 0.000041297 }, { - "connection_established_seconds": 0.062627883, - "upload_seconds": 0.122338635, - "download_seconds": 0.000062754 + "connectionEstablishedSeconds": 0.062627883, + "uploadSeconds": 0.122338635, + "downloadSeconds": 0.000062754 }, { - "connection_established_seconds": 0.06587111, - "upload_seconds": 0.128622617, - "download_seconds": 0.000071002 + "connectionEstablishedSeconds": 0.06587111, + "uploadSeconds": 0.128622617, + "downloadSeconds": 0.000071002 }, { - "connection_established_seconds": 0.061339484, - "upload_seconds": 0.119520814, - "download_seconds": 0.000044442 + "connectionEstablishedSeconds": 0.061339484, + "uploadSeconds": 0.119520814, + "downloadSeconds": 0.000044442 }, { - "connection_established_seconds": 0.06266093, - "upload_seconds": 0.122319167, - "download_seconds": 0.000045757 + "connectionEstablishedSeconds": 0.06266093, + "uploadSeconds": 0.122319167, + "downloadSeconds": 0.000045757 }, { - "connection_established_seconds": 0.059822555, - "upload_seconds": 0.116451437, - "download_seconds": 0.000051119 + "connectionEstablishedSeconds": 0.059822555, + "uploadSeconds": 0.116451437, + "downloadSeconds": 0.000051119 }, { - "connection_established_seconds": 0.064790049, - "upload_seconds": 0.126349844, - "download_seconds": 0.000054441 + "connectionEstablishedSeconds": 0.064790049, + "uploadSeconds": 0.126349844, + "downloadSeconds": 0.000054441 }, { - "connection_established_seconds": 0.060382326, - "upload_seconds": 0.117494745, - "download_seconds": 0.000066657 + "connectionEstablishedSeconds": 0.060382326, + "uploadSeconds": 0.117494745, + "downloadSeconds": 0.000066657 }, { - "connection_established_seconds": 0.064148746, - "upload_seconds": 0.125341426, - "download_seconds": 0.000068746 + "connectionEstablishedSeconds": 0.064148746, + "uploadSeconds": 0.125341426, + "downloadSeconds": 0.000068746 }, { - "connection_established_seconds": 0.064827261, - "upload_seconds": 0.126498123, - "download_seconds": 0.000046183 + "connectionEstablishedSeconds": 0.064827261, + "uploadSeconds": 0.126498123, + "downloadSeconds": 0.000046183 }, { - "connection_established_seconds": 0.063153185, - "upload_seconds": 0.123135312, - "download_seconds": 0.000056084 + "connectionEstablishedSeconds": 0.063153185, + "uploadSeconds": 0.123135312, + "downloadSeconds": 0.000056084 }, { - "connection_established_seconds": 0.064816062, - "upload_seconds": 0.126277356, - "download_seconds": 0.000057828 + "connectionEstablishedSeconds": 0.064816062, + "uploadSeconds": 0.126277356, + "downloadSeconds": 0.000057828 }, { - "connection_established_seconds": 0.064278199, - "upload_seconds": 0.125414573, - "download_seconds": 0.000056262 + "connectionEstablishedSeconds": 0.064278199, + "uploadSeconds": 0.125414573, + "downloadSeconds": 0.000056262 }, { - "connection_established_seconds": 0.062752747, - "upload_seconds": 0.122380922, - "download_seconds": 0.00004374 + "connectionEstablishedSeconds": 0.062752747, + "uploadSeconds": 0.122380922, + "downloadSeconds": 0.00004374 }, { - "connection_established_seconds": 0.063445685, - "upload_seconds": 0.12384881, - "download_seconds": 0.000058514 + "connectionEstablishedSeconds": 0.063445685, + "uploadSeconds": 0.12384881, + "downloadSeconds": 0.000058514 }, { - "connection_established_seconds": 0.061353473, - "upload_seconds": 0.11954829, - "download_seconds": 0.000046112 + "connectionEstablishedSeconds": 0.061353473, + "uploadSeconds": 0.11954829, + "downloadSeconds": 0.000046112 }, { - "connection_established_seconds": 0.061389462, - "upload_seconds": 0.119577677, - "download_seconds": 0.00004814 + "connectionEstablishedSeconds": 0.061389462, + "uploadSeconds": 0.119577677, + "downloadSeconds": 0.00004814 }, { - "connection_established_seconds": 0.06504855, - "upload_seconds": 0.126994673, - "download_seconds": 0.000045321 + "connectionEstablishedSeconds": 0.06504855, + "uploadSeconds": 0.126994673, + "downloadSeconds": 0.000045321 }, { - "connection_established_seconds": 0.063919567, - "upload_seconds": 0.124684165, - "download_seconds": 0.000046332 + "connectionEstablishedSeconds": 0.063919567, + "uploadSeconds": 0.124684165, + "downloadSeconds": 0.000046332 }, { - "connection_established_seconds": 0.063229164, - "upload_seconds": 0.123321507, - "download_seconds": 0.000067032 + "connectionEstablishedSeconds": 0.063229164, + "uploadSeconds": 0.123321507, + "downloadSeconds": 0.000067032 }, { - "connection_established_seconds": 0.06335159, - "upload_seconds": 0.123595726, - "download_seconds": 0.000041004 + "connectionEstablishedSeconds": 0.06335159, + "uploadSeconds": 0.123595726, + "downloadSeconds": 0.000041004 }, { - "connection_established_seconds": 0.065081469, - "upload_seconds": 0.126797911, - "download_seconds": 0.000043306 + "connectionEstablishedSeconds": 0.065081469, + "uploadSeconds": 0.126797911, + "downloadSeconds": 0.000043306 }, { - "connection_established_seconds": 0.061901279, - "upload_seconds": 0.120697729, - "download_seconds": 0.000047542 + "connectionEstablishedSeconds": 0.061901279, + "uploadSeconds": 0.120697729, + "downloadSeconds": 0.000047542 }, { - "connection_established_seconds": 0.064367226, - "upload_seconds": 0.125627014, - "download_seconds": 0.000045714 + "connectionEstablishedSeconds": 0.064367226, + "uploadSeconds": 0.125627014, + "downloadSeconds": 0.000045714 }, { - "connection_established_seconds": 0.063913815, - "upload_seconds": 0.124644766, - "download_seconds": 0.00004568 + "connectionEstablishedSeconds": 0.063913815, + "uploadSeconds": 0.124644766, + "downloadSeconds": 0.00004568 }, { - "connection_established_seconds": 0.06340771, - "upload_seconds": 0.123482778, - "download_seconds": 0.000044898 + "connectionEstablishedSeconds": 0.06340771, + "uploadSeconds": 0.123482778, + "downloadSeconds": 0.000044898 }, { - "connection_established_seconds": 0.063186517, - "upload_seconds": 0.123321763, - "download_seconds": 0.000058528 + "connectionEstablishedSeconds": 0.063186517, + "uploadSeconds": 0.123321763, + "downloadSeconds": 0.000058528 }, { - "connection_established_seconds": 0.064830366, - "upload_seconds": 0.126475036, - "download_seconds": 0.000043936 + "connectionEstablishedSeconds": 0.064830366, + "uploadSeconds": 0.126475036, + "downloadSeconds": 0.000043936 }, { - "connection_established_seconds": 0.064311509, - "upload_seconds": 0.1256985, - "download_seconds": 0.00004633 + "connectionEstablishedSeconds": 0.064311509, + "uploadSeconds": 0.1256985, + "downloadSeconds": 0.00004633 }, { - "connection_established_seconds": 0.064923178, - "upload_seconds": 0.126746877, - "download_seconds": 0.000053903 + "connectionEstablishedSeconds": 0.064923178, + "uploadSeconds": 0.126746877, + "downloadSeconds": 0.000053903 }, { - "connection_established_seconds": 0.062433534, - "upload_seconds": 0.121735648, - "download_seconds": 0.000042678 + "connectionEstablishedSeconds": 0.062433534, + "uploadSeconds": 0.121735648, + "downloadSeconds": 0.000042678 }, { - "connection_established_seconds": 0.0630008, - "upload_seconds": 0.122846943, - "download_seconds": 0.000069978 + "connectionEstablishedSeconds": 0.0630008, + "uploadSeconds": 0.122846943, + "downloadSeconds": 0.000069978 }, { - "connection_established_seconds": 0.061905677, - "upload_seconds": 0.120652533, - "download_seconds": 0.000041876 + "connectionEstablishedSeconds": 0.061905677, + "uploadSeconds": 0.120652533, + "downloadSeconds": 0.000041876 }, { - "connection_established_seconds": 0.061748607, - "upload_seconds": 0.120433329, - "download_seconds": 0.000051629 + "connectionEstablishedSeconds": 0.061748607, + "uploadSeconds": 0.120433329, + "downloadSeconds": 0.000051629 }, { - "connection_established_seconds": 0.063537551, - "upload_seconds": 0.12409735, - "download_seconds": 0.000048765 + "connectionEstablishedSeconds": 0.063537551, + "uploadSeconds": 0.12409735, + "downloadSeconds": 0.000048765 }, { - "connection_established_seconds": 0.065324316, - "upload_seconds": 0.127421798, - "download_seconds": 0.000050191 + "connectionEstablishedSeconds": 0.065324316, + "uploadSeconds": 0.127421798, + "downloadSeconds": 0.000050191 }, { - "connection_established_seconds": 0.062042321, - "upload_seconds": 0.120701257, - "download_seconds": 0.000083878 + "connectionEstablishedSeconds": 0.062042321, + "uploadSeconds": 0.120701257, + "downloadSeconds": 0.000083878 }, { - "connection_established_seconds": 0.065968655, - "upload_seconds": 0.128594752, - "download_seconds": 0.000046201 + "connectionEstablishedSeconds": 0.065968655, + "uploadSeconds": 0.128594752, + "downloadSeconds": 0.000046201 }, { - "connection_established_seconds": 0.066267306, - "upload_seconds": 0.129164475, - "download_seconds": 0.000047815 + "connectionEstablishedSeconds": 0.066267306, + "uploadSeconds": 0.129164475, + "downloadSeconds": 0.000047815 }, { - "connection_established_seconds": 0.063216526, - "upload_seconds": 0.123040735, - "download_seconds": 0.000048823 + "connectionEstablishedSeconds": 0.063216526, + "uploadSeconds": 0.123040735, + "downloadSeconds": 0.000048823 }, { - "connection_established_seconds": 0.062511579, - "upload_seconds": 0.121695004, - "download_seconds": 0.000098282 + "connectionEstablishedSeconds": 0.062511579, + "uploadSeconds": 0.121695004, + "downloadSeconds": 0.000098282 }, { - "connection_established_seconds": 0.06385184, - "upload_seconds": 0.124698687, - "download_seconds": 0.00004754 + "connectionEstablishedSeconds": 0.06385184, + "uploadSeconds": 0.124698687, + "downloadSeconds": 0.00004754 }, { - "connection_established_seconds": 0.066343358, - "upload_seconds": 0.129372553, - "download_seconds": 0.000045503 + "connectionEstablishedSeconds": 0.066343358, + "uploadSeconds": 0.129372553, + "downloadSeconds": 0.000045503 }, { - "connection_established_seconds": 0.063851167, - "upload_seconds": 0.124576921, - "download_seconds": 0.000073813 + "connectionEstablishedSeconds": 0.063851167, + "uploadSeconds": 0.124576921, + "downloadSeconds": 0.000073813 }, { - "connection_established_seconds": 0.061794819, - "upload_seconds": 0.120476674, - "download_seconds": 0.000054353 + "connectionEstablishedSeconds": 0.061794819, + "uploadSeconds": 0.120476674, + "downloadSeconds": 0.000054353 }, { - "connection_established_seconds": 0.062373556, - "upload_seconds": 0.121513655, - "download_seconds": 0.000064687 + "connectionEstablishedSeconds": 0.062373556, + "uploadSeconds": 0.121513655, + "downloadSeconds": 0.000064687 }, { - "connection_established_seconds": 0.065235287, - "upload_seconds": 0.127276967, - "download_seconds": 0.000043501 + "connectionEstablishedSeconds": 0.065235287, + "uploadSeconds": 0.127276967, + "downloadSeconds": 0.000043501 }, { - "connection_established_seconds": 0.063303476, - "upload_seconds": 0.123601522, - "download_seconds": 0.000054569 + "connectionEstablishedSeconds": 0.063303476, + "uploadSeconds": 0.123601522, + "downloadSeconds": 0.000054569 }, { - "connection_established_seconds": 0.06083302, - "upload_seconds": 0.118595803, - "download_seconds": 0.000044348 + "connectionEstablishedSeconds": 0.06083302, + "uploadSeconds": 0.118595803, + "downloadSeconds": 0.000044348 } ], "implementation": "rust-libp2p-quinn", @@ -2505,502 +2505,502 @@ { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192846838, - "DownloadSeconds": 0.000037175 + "downloadSeconds": 0.000037175 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187225653, - "DownloadSeconds": 0.00002122 + "downloadSeconds": 0.00002122 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180294225, - "DownloadSeconds": 0.000020804 + "downloadSeconds": 0.000020804 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188550533, - "DownloadSeconds": 0.00001889 + "downloadSeconds": 0.00001889 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187079499, - "DownloadSeconds": 0.000019885 + "downloadSeconds": 0.000019885 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183078712, - "DownloadSeconds": 0.000019767 + "downloadSeconds": 0.000019767 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.179674262, - "DownloadSeconds": 0.000018376 + "downloadSeconds": 0.000018376 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.189301769, - "DownloadSeconds": 0.000016046 + "downloadSeconds": 0.000016046 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.179261369, - "DownloadSeconds": 0.000021543 + "downloadSeconds": 0.000021543 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.195516869, - "DownloadSeconds": 0.00002226 + "downloadSeconds": 0.00002226 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.191348801, - "DownloadSeconds": 0.000019777 + "downloadSeconds": 0.000019777 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187403028, - "DownloadSeconds": 0.000019978 + "downloadSeconds": 0.000019978 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.194552184, - "DownloadSeconds": 0.000027462 + "downloadSeconds": 0.000027462 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187159984, - "DownloadSeconds": 0.000018502 + "downloadSeconds": 0.000018502 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.190738456, - "DownloadSeconds": 0.000021419 + "downloadSeconds": 0.000021419 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192054637, - "DownloadSeconds": 0.000026524 + "downloadSeconds": 0.000026524 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180311141, - "DownloadSeconds": 0.000020699 + "downloadSeconds": 0.000020699 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.191411991, - "DownloadSeconds": 0.000021317 + "downloadSeconds": 0.000021317 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188145831, - "DownloadSeconds": 0.000020147 + "downloadSeconds": 0.000020147 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186536958, - "DownloadSeconds": 0.000017486 + "downloadSeconds": 0.000017486 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.18584601, - "DownloadSeconds": 0.000021541 + "downloadSeconds": 0.000021541 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.178354975, - "DownloadSeconds": 0.000020018 + "downloadSeconds": 0.000020018 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.178293565, - "DownloadSeconds": 0.000019429 + "downloadSeconds": 0.000019429 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186344401, - "DownloadSeconds": 0.000016421 + "downloadSeconds": 0.000016421 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193071917, - "DownloadSeconds": 0.000019174 + "downloadSeconds": 0.000019174 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.190289691, - "DownloadSeconds": 0.000026341 + "downloadSeconds": 0.000026341 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188518447, - "DownloadSeconds": 0.000021059 + "downloadSeconds": 0.000021059 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.19045129, - "DownloadSeconds": 0.000026429 + "downloadSeconds": 0.000026429 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186835899, - "DownloadSeconds": 0.000030147 + "downloadSeconds": 0.000030147 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183109891, - "DownloadSeconds": 0.000023588 + "downloadSeconds": 0.000023588 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185059453, - "DownloadSeconds": 0.000023165 + "downloadSeconds": 0.000023165 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185681056, - "DownloadSeconds": 0.000026437 + "downloadSeconds": 0.000026437 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183409423, - "DownloadSeconds": 0.000016582 + "downloadSeconds": 0.000016582 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.184370277, - "DownloadSeconds": 0.000026094 + "downloadSeconds": 0.000026094 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192355075, - "DownloadSeconds": 0.0000183 + "downloadSeconds": 0.0000183 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.184482574, - "DownloadSeconds": 0.000022659 + "downloadSeconds": 0.000022659 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185725446, - "DownloadSeconds": 0.000016072 + "downloadSeconds": 0.000016072 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188063944, - "DownloadSeconds": 0.000022491 + "downloadSeconds": 0.000022491 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180056658, - "DownloadSeconds": 0.000017605 + "downloadSeconds": 0.000017605 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188372489, - "DownloadSeconds": 0.000022438 + "downloadSeconds": 0.000022438 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192814141, - "DownloadSeconds": 0.000020323 + "downloadSeconds": 0.000020323 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187925726, - "DownloadSeconds": 0.000025641 + "downloadSeconds": 0.000025641 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187622686, - "DownloadSeconds": 0.000018206 + "downloadSeconds": 0.000018206 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.187187961, - "DownloadSeconds": 0.00001939 + "downloadSeconds": 0.00001939 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.182899565, - "DownloadSeconds": 0.000019681 + "downloadSeconds": 0.000019681 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185843579, - "DownloadSeconds": 0.000019817 + "downloadSeconds": 0.000019817 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188049356, - "DownloadSeconds": 0.00002526 + "downloadSeconds": 0.00002526 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.195165351, - "DownloadSeconds": 0.000019705 + "downloadSeconds": 0.000019705 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186840089, - "DownloadSeconds": 0.000020557 + "downloadSeconds": 0.000020557 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.18747958, - "DownloadSeconds": 0.000026473 + "downloadSeconds": 0.000026473 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185693664, - "DownloadSeconds": 0.000019646 + "downloadSeconds": 0.000019646 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193451665, - "DownloadSeconds": 0.000022524 + "downloadSeconds": 0.000022524 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.194108328, - "DownloadSeconds": 0.000019511 + "downloadSeconds": 0.000019511 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.189855379, - "DownloadSeconds": 0.000019748 + "downloadSeconds": 0.000019748 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.182903898, - "DownloadSeconds": 0.000017027 + "downloadSeconds": 0.000017027 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.191944715, - "DownloadSeconds": 0.000027435 + "downloadSeconds": 0.000027435 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.191778908, - "DownloadSeconds": 0.000025572 + "downloadSeconds": 0.000025572 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.190211536, - "DownloadSeconds": 0.000026185 + "downloadSeconds": 0.000026185 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.184234077, - "DownloadSeconds": 0.000033723 + "downloadSeconds": 0.000033723 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185647252, - "DownloadSeconds": 0.000030603 + "downloadSeconds": 0.000030603 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183308292, - "DownloadSeconds": 0.000022054 + "downloadSeconds": 0.000022054 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180877607, - "DownloadSeconds": 0.000026982 + "downloadSeconds": 0.000026982 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180613209, - "DownloadSeconds": 0.000026944 + "downloadSeconds": 0.000026944 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.19123981, - "DownloadSeconds": 0.000022695 + "downloadSeconds": 0.000022695 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188249077, - "DownloadSeconds": 0.00001968 + "downloadSeconds": 0.00001968 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188310162, - "DownloadSeconds": 0.000019461 + "downloadSeconds": 0.000019461 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192340124, - "DownloadSeconds": 0.000024555 + "downloadSeconds": 0.000024555 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188473932, - "DownloadSeconds": 0.000015915 + "downloadSeconds": 0.000015915 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186878094, - "DownloadSeconds": 0.000019374 + "downloadSeconds": 0.000019374 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185679154, - "DownloadSeconds": 0.000016414 + "downloadSeconds": 0.000016414 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.180612714, - "DownloadSeconds": 0.000019835 + "downloadSeconds": 0.000019835 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192304312, - "DownloadSeconds": 0.000021444 + "downloadSeconds": 0.000021444 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188282608, - "DownloadSeconds": 0.000017187 + "downloadSeconds": 0.000017187 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183278194, - "DownloadSeconds": 0.000018204 + "downloadSeconds": 0.000018204 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.184437713, - "DownloadSeconds": 0.000027936 + "downloadSeconds": 0.000027936 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185529677, - "DownloadSeconds": 0.00001732 + "downloadSeconds": 0.00001732 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193016666, - "DownloadSeconds": 0.000020431 + "downloadSeconds": 0.000020431 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.195416309, - "DownloadSeconds": 0.000022508 + "downloadSeconds": 0.000022508 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183699899, - "DownloadSeconds": 0.000021716 + "downloadSeconds": 0.000021716 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185744257, - "DownloadSeconds": 0.000022602 + "downloadSeconds": 0.000022602 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.189250203, - "DownloadSeconds": 0.000020598 + "downloadSeconds": 0.000020598 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185181606, - "DownloadSeconds": 0.000019866 + "downloadSeconds": 0.000019866 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.18333426, - "DownloadSeconds": 0.000020514 + "downloadSeconds": 0.000020514 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193817077, - "DownloadSeconds": 0.000018949 + "downloadSeconds": 0.000018949 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.18357926, - "DownloadSeconds": 0.000024613 + "downloadSeconds": 0.000024613 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.179392491, - "DownloadSeconds": 0.000026305 + "downloadSeconds": 0.000026305 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.190020686, - "DownloadSeconds": 0.000027925 + "downloadSeconds": 0.000027925 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.192780389, - "DownloadSeconds": 0.000021992 + "downloadSeconds": 0.000021992 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.189871699, - "DownloadSeconds": 0.000020478 + "downloadSeconds": 0.000020478 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.195791204, - "DownloadSeconds": 0.000022177 + "downloadSeconds": 0.000022177 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.183957873, - "DownloadSeconds": 0.000020035 + "downloadSeconds": 0.000020035 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186134924, - "DownloadSeconds": 0.000021316 + "downloadSeconds": 0.000021316 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186717805, - "DownloadSeconds": 0.000019271 + "downloadSeconds": 0.000019271 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.193530685, - "DownloadSeconds": 0.000022671 + "downloadSeconds": 0.000022671 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.186105862, - "DownloadSeconds": 0.000025304 + "downloadSeconds": 0.000025304 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.18535181, - "DownloadSeconds": 0.000019895 + "downloadSeconds": 0.000019895 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.184994725, - "DownloadSeconds": 0.000025617 + "downloadSeconds": 0.000025617 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.188647571, - "DownloadSeconds": 0.000027329 + "downloadSeconds": 0.000027329 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.190621346, - "DownloadSeconds": 0.000026131 + "downloadSeconds": 0.000026131 }, { "connectionEstablishedSeconds": 0, "uploadSeconds": 0.185577895, - "DownloadSeconds": 0.000022229 + "downloadSeconds": 0.000022229 } ], "implementation": "https", @@ -3012,502 +3012,502 @@ { "connectionEstablishedSeconds": 0.246982543, "uploadSeconds": 0.000002333, - "DownloadSeconds": 0.060636799 + "downloadSeconds": 0.060636799 }, { "connectionEstablishedSeconds": 0.254987407, "uploadSeconds": 0.000002637, - "DownloadSeconds": 0.125583931 + "downloadSeconds": 0.125583931 }, { "connectionEstablishedSeconds": 0.252265474, "uploadSeconds": 0.000003042, - "DownloadSeconds": 0.124496056 + "downloadSeconds": 0.124496056 }, { "connectionEstablishedSeconds": 0.257593737, "uploadSeconds": 0.000001947, - "DownloadSeconds": 0.063516924 + "downloadSeconds": 0.063516924 }, { "connectionEstablishedSeconds": 0.249634131, "uploadSeconds": 0.000002236, - "DownloadSeconds": 0.061606688 + "downloadSeconds": 0.061606688 }, { "connectionEstablishedSeconds": 0.256219747, "uploadSeconds": 0.000002639, - "DownloadSeconds": 0.063248102 + "downloadSeconds": 0.063248102 }, { "connectionEstablishedSeconds": 0.252442248, "uploadSeconds": 0.000002197, - "DownloadSeconds": 0.062669369 + "downloadSeconds": 0.062669369 }, { "connectionEstablishedSeconds": 0.259427625, "uploadSeconds": 0.000003211, - "DownloadSeconds": 0.127981684 + "downloadSeconds": 0.127981684 }, { "connectionEstablishedSeconds": 0.246514725, "uploadSeconds": 0.000002665, - "DownloadSeconds": 0.121201652 + "downloadSeconds": 0.121201652 }, { "connectionEstablishedSeconds": 0.256074228, "uploadSeconds": 0.000002774, - "DownloadSeconds": 0.063105187 + "downloadSeconds": 0.063105187 }, { "connectionEstablishedSeconds": 0.257314965, "uploadSeconds": 0.000002128, - "DownloadSeconds": 0.063868077 + "downloadSeconds": 0.063868077 }, { "connectionEstablishedSeconds": 0.252954088, "uploadSeconds": 0.000002252, - "DownloadSeconds": 0.062319815 + "downloadSeconds": 0.062319815 }, { "connectionEstablishedSeconds": 0.247593448, "uploadSeconds": 0.000002732, - "DownloadSeconds": 0.061417523 + "downloadSeconds": 0.061417523 }, { "connectionEstablishedSeconds": 0.248485597, "uploadSeconds": 0.000002477, - "DownloadSeconds": 0.122739395 + "downloadSeconds": 0.122739395 }, { "connectionEstablishedSeconds": 0.252755774, "uploadSeconds": 0.000003128, - "DownloadSeconds": 0.12465053 + "downloadSeconds": 0.12465053 }, { "connectionEstablishedSeconds": 0.24678383, "uploadSeconds": 0.000003171, - "DownloadSeconds": 0.061170425 + "downloadSeconds": 0.061170425 }, { "connectionEstablishedSeconds": 0.256799921, "uploadSeconds": 0.000002516, - "DownloadSeconds": 0.063288139 + "downloadSeconds": 0.063288139 }, { "connectionEstablishedSeconds": 0.258533884, "uploadSeconds": 0.000002448, - "DownloadSeconds": 0.063377461 + "downloadSeconds": 0.063377461 }, { "connectionEstablishedSeconds": 0.240389808, "uploadSeconds": 0.000002816, - "DownloadSeconds": 0.117642179 + "downloadSeconds": 0.117642179 }, { "connectionEstablishedSeconds": 0.252817235, "uploadSeconds": 0.000002452, - "DownloadSeconds": 0.123930684 + "downloadSeconds": 0.123930684 }, { "connectionEstablishedSeconds": 0.253777012, "uploadSeconds": 0.000002057, - "DownloadSeconds": 0.062848806 + "downloadSeconds": 0.062848806 }, { "connectionEstablishedSeconds": 0.245131591, "uploadSeconds": 0.000003236, - "DownloadSeconds": 0.120963083 + "downloadSeconds": 0.120963083 }, { "connectionEstablishedSeconds": 0.240467804, "uploadSeconds": 0.000004461, - "DownloadSeconds": 0.118627047 + "downloadSeconds": 0.118627047 }, { "connectionEstablishedSeconds": 0.255467807, "uploadSeconds": 0.000002626, - "DownloadSeconds": 0.062827272 + "downloadSeconds": 0.062827272 }, { "connectionEstablishedSeconds": 0.249338884, "uploadSeconds": 0.000002342, - "DownloadSeconds": 0.121499683 + "downloadSeconds": 0.121499683 }, { "connectionEstablishedSeconds": 0.252348186, "uploadSeconds": 0.000003027, - "DownloadSeconds": 0.062162683 + "downloadSeconds": 0.062162683 }, { "connectionEstablishedSeconds": 0.249576434, "uploadSeconds": 0.00000247, - "DownloadSeconds": 0.061533785 + "downloadSeconds": 0.061533785 }, { "connectionEstablishedSeconds": 0.25301387, "uploadSeconds": 0.000002702, - "DownloadSeconds": 0.062807451 + "downloadSeconds": 0.062807451 }, { "connectionEstablishedSeconds": 0.247662665, "uploadSeconds": 0.000002964, - "DownloadSeconds": 0.122013051 + "downloadSeconds": 0.122013051 }, { "connectionEstablishedSeconds": 0.250252663, "uploadSeconds": 0.000002914, - "DownloadSeconds": 0.123407763 + "downloadSeconds": 0.123407763 }, { "connectionEstablishedSeconds": 0.262054694, "uploadSeconds": 0.000002659, - "DownloadSeconds": 0.06503719 + "downloadSeconds": 0.06503719 }, { "connectionEstablishedSeconds": 0.25894961, "uploadSeconds": 0.000003183, - "DownloadSeconds": 0.063781309 + "downloadSeconds": 0.063781309 }, { "connectionEstablishedSeconds": 0.253447479, "uploadSeconds": 0.000005445, - "DownloadSeconds": 0.125038249 + "downloadSeconds": 0.125038249 }, { "connectionEstablishedSeconds": 0.25890693, "uploadSeconds": 0.000002949, - "DownloadSeconds": 0.064290345 + "downloadSeconds": 0.064290345 }, { "connectionEstablishedSeconds": 0.238136713, "uploadSeconds": 0.000002751, - "DownloadSeconds": 0.058523439 + "downloadSeconds": 0.058523439 }, { "connectionEstablishedSeconds": 0.238031833, "uploadSeconds": 0.00000201, - "DownloadSeconds": 0.058612018 + "downloadSeconds": 0.058612018 }, { "connectionEstablishedSeconds": 0.243987405, "uploadSeconds": 0.000002645, - "DownloadSeconds": 0.120430154 + "downloadSeconds": 0.120430154 }, { "connectionEstablishedSeconds": 0.25092512, "uploadSeconds": 0.000003203, - "DownloadSeconds": 0.062239462 + "downloadSeconds": 0.062239462 }, { "connectionEstablishedSeconds": 0.241461478, "uploadSeconds": 0.000002746, - "DownloadSeconds": 0.05956789 + "downloadSeconds": 0.05956789 }, { "connectionEstablishedSeconds": 0.251482992, "uploadSeconds": 0.00000234, - "DownloadSeconds": 0.061933183 + "downloadSeconds": 0.061933183 }, { "connectionEstablishedSeconds": 0.247927088, "uploadSeconds": 0.000002999, - "DownloadSeconds": 0.061510988 + "downloadSeconds": 0.061510988 }, { "connectionEstablishedSeconds": 0.245592314, "uploadSeconds": 0.000003012, - "DownloadSeconds": 0.06085414 + "downloadSeconds": 0.06085414 }, { "connectionEstablishedSeconds": 0.249204108, "uploadSeconds": 0.000002654, - "DownloadSeconds": 0.06184334 + "downloadSeconds": 0.06184334 }, { "connectionEstablishedSeconds": 0.257982473, "uploadSeconds": 0.000002161, - "DownloadSeconds": 0.064057546 + "downloadSeconds": 0.064057546 }, { "connectionEstablishedSeconds": 0.253774449, "uploadSeconds": 0.000002049, - "DownloadSeconds": 0.062934467 + "downloadSeconds": 0.062934467 }, { "connectionEstablishedSeconds": 0.247291556, "uploadSeconds": 0.000002676, - "DownloadSeconds": 0.060877055 + "downloadSeconds": 0.060877055 }, { "connectionEstablishedSeconds": 0.255902439, "uploadSeconds": 0.000002621, - "DownloadSeconds": 0.063567814 + "downloadSeconds": 0.063567814 }, { "connectionEstablishedSeconds": 0.254482313, "uploadSeconds": 0.000002629, - "DownloadSeconds": 0.063151743 + "downloadSeconds": 0.063151743 }, { "connectionEstablishedSeconds": 0.240553161, "uploadSeconds": 0.000002261, - "DownloadSeconds": 0.059636037 + "downloadSeconds": 0.059636037 }, { "connectionEstablishedSeconds": 0.248356912, "uploadSeconds": 0.000002729, - "DownloadSeconds": 0.061578029 + "downloadSeconds": 0.061578029 }, { "connectionEstablishedSeconds": 0.242345309, "uploadSeconds": 0.00000288, - "DownloadSeconds": 0.060093916 + "downloadSeconds": 0.060093916 }, { "connectionEstablishedSeconds": 0.259227269, "uploadSeconds": 0.000005216, - "DownloadSeconds": 0.1279868 + "downloadSeconds": 0.1279868 }, { "connectionEstablishedSeconds": 0.259282408, "uploadSeconds": 0.000002551, - "DownloadSeconds": 0.063973717 + "downloadSeconds": 0.063973717 }, { "connectionEstablishedSeconds": 0.25319996, "uploadSeconds": 0.000002716, - "DownloadSeconds": 0.125036282 + "downloadSeconds": 0.125036282 }, { "connectionEstablishedSeconds": 0.262780483, "uploadSeconds": 0.000002704, - "DownloadSeconds": 0.064785965 + "downloadSeconds": 0.064785965 }, { "connectionEstablishedSeconds": 0.240429364, "uploadSeconds": 0.000002006, - "DownloadSeconds": 0.059475532 + "downloadSeconds": 0.059475532 }, { "connectionEstablishedSeconds": 0.252537049, "uploadSeconds": 0.000002748, - "DownloadSeconds": 0.06261609 + "downloadSeconds": 0.06261609 }, { "connectionEstablishedSeconds": 0.249712979, "uploadSeconds": 0.000002727, - "DownloadSeconds": 0.061898698 + "downloadSeconds": 0.061898698 }, { "connectionEstablishedSeconds": 0.248365572, "uploadSeconds": 0.000003349, - "DownloadSeconds": 0.061521647 + "downloadSeconds": 0.061521647 }, { "connectionEstablishedSeconds": 0.247755439, "uploadSeconds": 0.000002551, - "DownloadSeconds": 0.061002033 + "downloadSeconds": 0.061002033 }, { "connectionEstablishedSeconds": 0.246475735, "uploadSeconds": 0.000002701, - "DownloadSeconds": 0.061086692 + "downloadSeconds": 0.061086692 }, { "connectionEstablishedSeconds": 0.259489949, "uploadSeconds": 0.000001757, - "DownloadSeconds": 0.063943852 + "downloadSeconds": 0.063943852 }, { "connectionEstablishedSeconds": 0.258184785, "uploadSeconds": 0.000001873, - "DownloadSeconds": 0.063650594 + "downloadSeconds": 0.063650594 }, { "connectionEstablishedSeconds": 0.261070592, "uploadSeconds": 0.000002752, - "DownloadSeconds": 0.064366046 + "downloadSeconds": 0.064366046 }, { "connectionEstablishedSeconds": 0.250568312, "uploadSeconds": 0.000002142, - "DownloadSeconds": 0.123570903 + "downloadSeconds": 0.123570903 }, { "connectionEstablishedSeconds": 0.255666103, "uploadSeconds": 0.000003077, - "DownloadSeconds": 0.063432424 + "downloadSeconds": 0.063432424 }, { "connectionEstablishedSeconds": 0.248139992, "uploadSeconds": 0.000002787, - "DownloadSeconds": 0.122421755 + "downloadSeconds": 0.122421755 }, { "connectionEstablishedSeconds": 0.244705897, "uploadSeconds": 0.000002085, - "DownloadSeconds": 0.060794925 + "downloadSeconds": 0.060794925 }, { "connectionEstablishedSeconds": 0.257247483, "uploadSeconds": 0.000002563, - "DownloadSeconds": 0.12735091 + "downloadSeconds": 0.12735091 }, { "connectionEstablishedSeconds": 0.249235758, "uploadSeconds": 0.00000251, - "DownloadSeconds": 0.061837351 + "downloadSeconds": 0.061837351 }, { "connectionEstablishedSeconds": 0.255130828, "uploadSeconds": 0.000002263, - "DownloadSeconds": 0.063169157 + "downloadSeconds": 0.063169157 }, { "connectionEstablishedSeconds": 0.251280256, "uploadSeconds": 0.000002482, - "DownloadSeconds": 0.123259335 + "downloadSeconds": 0.123259335 }, { "connectionEstablishedSeconds": 0.251983159, "uploadSeconds": 0.00000274, - "DownloadSeconds": 0.124431896 + "downloadSeconds": 0.124431896 }, { "connectionEstablishedSeconds": 0.245704446, "uploadSeconds": 0.000001875, - "DownloadSeconds": 0.120470878 + "downloadSeconds": 0.120470878 }, { "connectionEstablishedSeconds": 0.250201435, "uploadSeconds": 0.000002586, - "DownloadSeconds": 0.061731154 + "downloadSeconds": 0.061731154 }, { "connectionEstablishedSeconds": 0.238093943, "uploadSeconds": 0.00000245, - "DownloadSeconds": 0.058674458 + "downloadSeconds": 0.058674458 }, { "connectionEstablishedSeconds": 0.250553571, "uploadSeconds": 0.000002285, - "DownloadSeconds": 0.061589498 + "downloadSeconds": 0.061589498 }, { "connectionEstablishedSeconds": 0.244439626, "uploadSeconds": 0.000003027, - "DownloadSeconds": 0.060154682 + "downloadSeconds": 0.060154682 }, { "connectionEstablishedSeconds": 0.242412471, "uploadSeconds": 0.000002316, - "DownloadSeconds": 0.059615017 + "downloadSeconds": 0.059615017 }, { "connectionEstablishedSeconds": 0.25048618, "uploadSeconds": 0.000002677, - "DownloadSeconds": 0.061737041 + "downloadSeconds": 0.061737041 }, { "connectionEstablishedSeconds": 0.258953892, "uploadSeconds": 0.000002587, - "DownloadSeconds": 0.063803021 + "downloadSeconds": 0.063803021 }, { "connectionEstablishedSeconds": 0.250412263, "uploadSeconds": 0.0000034, - "DownloadSeconds": 0.12281949 + "downloadSeconds": 0.12281949 }, { "connectionEstablishedSeconds": 0.254144016, "uploadSeconds": 0.000002754, - "DownloadSeconds": 0.06300859 + "downloadSeconds": 0.06300859 }, { "connectionEstablishedSeconds": 0.260298291, "uploadSeconds": 0.000002975, - "DownloadSeconds": 0.064623551 + "downloadSeconds": 0.064623551 }, { "connectionEstablishedSeconds": 0.243397209, "uploadSeconds": 0.000002481, - "DownloadSeconds": 0.059877624 + "downloadSeconds": 0.059877624 }, { "connectionEstablishedSeconds": 0.24772037, "uploadSeconds": 0.000002941, - "DownloadSeconds": 0.060984094 + "downloadSeconds": 0.060984094 }, { "connectionEstablishedSeconds": 0.253506036, "uploadSeconds": 0.000002337, - "DownloadSeconds": 0.062951461 + "downloadSeconds": 0.062951461 }, { "connectionEstablishedSeconds": 0.254973803, "uploadSeconds": 0.000002862, - "DownloadSeconds": 0.062826139 + "downloadSeconds": 0.062826139 }, { "connectionEstablishedSeconds": 0.255472034, "uploadSeconds": 0.000002332, - "DownloadSeconds": 0.063002547 + "downloadSeconds": 0.063002547 }, { "connectionEstablishedSeconds": 0.256008456, "uploadSeconds": 0.000002753, - "DownloadSeconds": 0.126330132 + "downloadSeconds": 0.126330132 }, { "connectionEstablishedSeconds": 0.258165071, "uploadSeconds": 0.000002056, - "DownloadSeconds": 0.063652588 + "downloadSeconds": 0.063652588 }, { "connectionEstablishedSeconds": 0.25799469, "uploadSeconds": 0.000003118, - "DownloadSeconds": 0.126573181 + "downloadSeconds": 0.126573181 }, { "connectionEstablishedSeconds": 0.235590117, "uploadSeconds": 0.000002624, - "DownloadSeconds": 0.057922146 + "downloadSeconds": 0.057922146 }, { "connectionEstablishedSeconds": 0.243184757, "uploadSeconds": 0.000002738, - "DownloadSeconds": 0.059965651 + "downloadSeconds": 0.059965651 }, { "connectionEstablishedSeconds": 0.248694484, "uploadSeconds": 0.000002604, - "DownloadSeconds": 0.061723598 + "downloadSeconds": 0.061723598 }, { "connectionEstablishedSeconds": 0.251370563, "uploadSeconds": 0.000002583, - "DownloadSeconds": 0.06197375 + "downloadSeconds": 0.06197375 }, { "connectionEstablishedSeconds": 0.242432428, "uploadSeconds": 0.000002486, - "DownloadSeconds": 0.060143536 + "downloadSeconds": 0.060143536 }, { "connectionEstablishedSeconds": 0.243723796, "uploadSeconds": 0.000002083, - "DownloadSeconds": 0.060037652 + "downloadSeconds": 0.060037652 }, { "connectionEstablishedSeconds": 0.246442851, "uploadSeconds": 0.000002077, - "DownloadSeconds": 0.060712241 + "downloadSeconds": 0.060712241 }, { "connectionEstablishedSeconds": 0.246539718, "uploadSeconds": 0.000002761, - "DownloadSeconds": 0.061199242 + "downloadSeconds": 0.061199242 } ], "implementation": "go-libp2p", @@ -3519,502 +3519,502 @@ { "connectionEstablishedSeconds": 0.132559832, "uploadSeconds": 0.000001845, - "DownloadSeconds": 0.064081759 + "downloadSeconds": 0.064081759 }, { "connectionEstablishedSeconds": 0.127538862, "uploadSeconds": 0.000001708, - "DownloadSeconds": 0.062170888 + "downloadSeconds": 0.062170888 }, { "connectionEstablishedSeconds": 0.130805692, "uploadSeconds": 0.000001773, - "DownloadSeconds": 0.062955061 + "downloadSeconds": 0.062955061 }, { "connectionEstablishedSeconds": 0.127036422, "uploadSeconds": 0.000001649, - "DownloadSeconds": 0.061978598 + "downloadSeconds": 0.061978598 }, { "connectionEstablishedSeconds": 0.127375116, "uploadSeconds": 0.000001559, - "DownloadSeconds": 0.061272425 + "downloadSeconds": 0.061272425 }, { "connectionEstablishedSeconds": 0.127377704, "uploadSeconds": 0.000001414, - "DownloadSeconds": 0.062145909 + "downloadSeconds": 0.062145909 }, { "connectionEstablishedSeconds": 0.125731216, "uploadSeconds": 0.000001507, - "DownloadSeconds": 0.06135568 + "downloadSeconds": 0.06135568 }, { "connectionEstablishedSeconds": 0.133088001, "uploadSeconds": 0.000001788, - "DownloadSeconds": 0.064553093 + "downloadSeconds": 0.064553093 }, { "connectionEstablishedSeconds": 0.129277284, "uploadSeconds": 0.000001466, - "DownloadSeconds": 0.062234834 + "downloadSeconds": 0.062234834 }, { "connectionEstablishedSeconds": 0.119158102, "uploadSeconds": 0.000001566, - "DownloadSeconds": 0.058061112 + "downloadSeconds": 0.058061112 }, { "connectionEstablishedSeconds": 0.130364186, "uploadSeconds": 0.000001615, - "DownloadSeconds": 0.062807167 + "downloadSeconds": 0.062807167 }, { "connectionEstablishedSeconds": 0.127736162, "uploadSeconds": 0.000001415, - "DownloadSeconds": 0.061511958 + "downloadSeconds": 0.061511958 }, { "connectionEstablishedSeconds": 0.1278484, "uploadSeconds": 0.000001513, - "DownloadSeconds": 0.061515556 + "downloadSeconds": 0.061515556 }, { "connectionEstablishedSeconds": 0.128970078, "uploadSeconds": 0.000001392, - "DownloadSeconds": 0.061986167 + "downloadSeconds": 0.061986167 }, { "connectionEstablishedSeconds": 0.128039225, "uploadSeconds": 0.000001606, - "DownloadSeconds": 0.06170743 + "downloadSeconds": 0.06170743 }, { "connectionEstablishedSeconds": 0.127508048, "uploadSeconds": 0.000001458, - "DownloadSeconds": 0.062212279 + "downloadSeconds": 0.062212279 }, { "connectionEstablishedSeconds": 0.133455738, "uploadSeconds": 0.00000138, - "DownloadSeconds": 0.064288489 + "downloadSeconds": 0.064288489 }, { "connectionEstablishedSeconds": 0.129520369, "uploadSeconds": 0.000001526, - "DownloadSeconds": 0.062379621 + "downloadSeconds": 0.062379621 }, { "connectionEstablishedSeconds": 0.126453297, "uploadSeconds": 0.000001579, - "DownloadSeconds": 0.061700191 + "downloadSeconds": 0.061700191 }, { "connectionEstablishedSeconds": 0.129627112, "uploadSeconds": 0.000001465, - "DownloadSeconds": 0.062720055 + "downloadSeconds": 0.062720055 }, { "connectionEstablishedSeconds": 0.134000827, "uploadSeconds": 0.000001321, - "DownloadSeconds": 0.064357089 + "downloadSeconds": 0.064357089 }, { "connectionEstablishedSeconds": 0.124745152, "uploadSeconds": 0.000001493, - "DownloadSeconds": 0.060808097 + "downloadSeconds": 0.060808097 }, { "connectionEstablishedSeconds": 0.127733997, "uploadSeconds": 0.000002662, - "DownloadSeconds": 0.060965292 + "downloadSeconds": 0.060965292 }, { "connectionEstablishedSeconds": 0.124760848, "uploadSeconds": 0.000001412, - "DownloadSeconds": 0.06091855 + "downloadSeconds": 0.06091855 }, { "connectionEstablishedSeconds": 0.133028696, "uploadSeconds": 0.000001889, - "DownloadSeconds": 0.064165736 + "downloadSeconds": 0.064165736 }, { "connectionEstablishedSeconds": 0.131580179, "uploadSeconds": 0.000009386, - "DownloadSeconds": 0.063439782 + "downloadSeconds": 0.063439782 }, { "connectionEstablishedSeconds": 0.13153408, "uploadSeconds": 0.000001474, - "DownloadSeconds": 0.063494493 + "downloadSeconds": 0.063494493 }, { "connectionEstablishedSeconds": 0.133677377, "uploadSeconds": 0.00000147, - "DownloadSeconds": 0.064309541 + "downloadSeconds": 0.064309541 }, { "connectionEstablishedSeconds": 0.129927372, "uploadSeconds": 0.000001525, - "DownloadSeconds": 0.063450867 + "downloadSeconds": 0.063450867 }, { "connectionEstablishedSeconds": 0.131694963, "uploadSeconds": 0.000001381, - "DownloadSeconds": 0.063434821 + "downloadSeconds": 0.063434821 }, { "connectionEstablishedSeconds": 0.127899617, "uploadSeconds": 0.000001411, - "DownloadSeconds": 0.061525214 + "downloadSeconds": 0.061525214 }, { "connectionEstablishedSeconds": 0.130203328, "uploadSeconds": 0.000001495, - "DownloadSeconds": 0.062757457 + "downloadSeconds": 0.062757457 }, { "connectionEstablishedSeconds": 0.128960662, "uploadSeconds": 0.000001403, - "DownloadSeconds": 0.062074948 + "downloadSeconds": 0.062074948 }, { "connectionEstablishedSeconds": 0.130867787, "uploadSeconds": 0.000001446, - "DownloadSeconds": 0.062989249 + "downloadSeconds": 0.062989249 }, { "connectionEstablishedSeconds": 0.127509261, "uploadSeconds": 0.000001399, - "DownloadSeconds": 0.061493018 + "downloadSeconds": 0.061493018 }, { "connectionEstablishedSeconds": 0.125964276, "uploadSeconds": 0.000001522, - "DownloadSeconds": 0.060573677 + "downloadSeconds": 0.060573677 }, { "connectionEstablishedSeconds": 0.127927289, "uploadSeconds": 0.000001423, - "DownloadSeconds": 0.06157576 + "downloadSeconds": 0.06157576 }, { "connectionEstablishedSeconds": 0.130932601, "uploadSeconds": 0.000001443, - "DownloadSeconds": 0.063025361 + "downloadSeconds": 0.063025361 }, { "connectionEstablishedSeconds": 0.131325237, "uploadSeconds": 0.000001453, - "DownloadSeconds": 0.063283316 + "downloadSeconds": 0.063283316 }, { "connectionEstablishedSeconds": 0.131567611, "uploadSeconds": 0.000001482, - "DownloadSeconds": 0.063480748 + "downloadSeconds": 0.063480748 }, { "connectionEstablishedSeconds": 0.127139527, "uploadSeconds": 0.000001498, - "DownloadSeconds": 0.062091433 + "downloadSeconds": 0.062091433 }, { "connectionEstablishedSeconds": 0.130935865, "uploadSeconds": 0.000001494, - "DownloadSeconds": 0.063252549 + "downloadSeconds": 0.063252549 }, { "connectionEstablishedSeconds": 0.126708782, "uploadSeconds": 0.000001385, - "DownloadSeconds": 0.061000908 + "downloadSeconds": 0.061000908 }, { "connectionEstablishedSeconds": 0.131170813, "uploadSeconds": 0.000001618, - "DownloadSeconds": 0.063156049 + "downloadSeconds": 0.063156049 }, { "connectionEstablishedSeconds": 0.127562236, "uploadSeconds": 0.000001422, - "DownloadSeconds": 0.061339877 + "downloadSeconds": 0.061339877 }, { "connectionEstablishedSeconds": 0.127373514, "uploadSeconds": 0.000001411, - "DownloadSeconds": 0.062119254 + "downloadSeconds": 0.062119254 }, { "connectionEstablishedSeconds": 0.124467553, "uploadSeconds": 0.000001406, - "DownloadSeconds": 0.060622762 + "downloadSeconds": 0.060622762 }, { "connectionEstablishedSeconds": 0.130264415, "uploadSeconds": 0.000001423, - "DownloadSeconds": 0.063243987 + "downloadSeconds": 0.063243987 }, { "connectionEstablishedSeconds": 0.129495604, "uploadSeconds": 0.000001529, - "DownloadSeconds": 0.062278168 + "downloadSeconds": 0.062278168 }, { "connectionEstablishedSeconds": 0.130634463, "uploadSeconds": 0.000001486, - "DownloadSeconds": 0.062895839 + "downloadSeconds": 0.062895839 }, { "connectionEstablishedSeconds": 0.130588454, "uploadSeconds": 0.000001659, - "DownloadSeconds": 0.062499732 + "downloadSeconds": 0.062499732 }, { "connectionEstablishedSeconds": 0.131876225, "uploadSeconds": 0.000001316, - "DownloadSeconds": 0.064669517 + "downloadSeconds": 0.064669517 }, { "connectionEstablishedSeconds": 0.1300481, "uploadSeconds": 0.000001564, - "DownloadSeconds": 0.062634327 + "downloadSeconds": 0.062634327 }, { "connectionEstablishedSeconds": 0.125223091, "uploadSeconds": 0.000001481, - "DownloadSeconds": 0.061157475 + "downloadSeconds": 0.061157475 }, { "connectionEstablishedSeconds": 0.129800235, "uploadSeconds": 0.000001461, - "DownloadSeconds": 0.062495938 + "downloadSeconds": 0.062495938 }, { "connectionEstablishedSeconds": 0.128935513, "uploadSeconds": 0.000001289, - "DownloadSeconds": 0.062087854 + "downloadSeconds": 0.062087854 }, { "connectionEstablishedSeconds": 0.131783337, "uploadSeconds": 0.000001504, - "DownloadSeconds": 0.063374993 + "downloadSeconds": 0.063374993 }, { "connectionEstablishedSeconds": 0.128899161, "uploadSeconds": 0.000001482, - "DownloadSeconds": 0.062178416 + "downloadSeconds": 0.062178416 }, { "connectionEstablishedSeconds": 0.131739113, "uploadSeconds": 0.000001386, - "DownloadSeconds": 0.063473909 + "downloadSeconds": 0.063473909 }, { "connectionEstablishedSeconds": 0.132251676, "uploadSeconds": 0.000001453, - "DownloadSeconds": 0.06368673 + "downloadSeconds": 0.06368673 }, { "connectionEstablishedSeconds": 0.131773613, "uploadSeconds": 0.000001447, - "DownloadSeconds": 0.063479142 + "downloadSeconds": 0.063479142 }, { "connectionEstablishedSeconds": 0.127176818, "uploadSeconds": 0.0000014, - "DownloadSeconds": 0.061173964 + "downloadSeconds": 0.061173964 }, { "connectionEstablishedSeconds": 0.128782265, "uploadSeconds": 0.000001717, - "DownloadSeconds": 0.06190894 + "downloadSeconds": 0.06190894 }, { "connectionEstablishedSeconds": 0.126829132, "uploadSeconds": 0.00000196, - "DownloadSeconds": 0.060960895 + "downloadSeconds": 0.060960895 }, { "connectionEstablishedSeconds": 0.130953162, "uploadSeconds": 0.000001626, - "DownloadSeconds": 0.062989085 + "downloadSeconds": 0.062989085 }, { "connectionEstablishedSeconds": 0.120174779, "uploadSeconds": 0.000001516, - "DownloadSeconds": 0.058639118 + "downloadSeconds": 0.058639118 }, { "connectionEstablishedSeconds": 0.12485797, "uploadSeconds": 0.000001441, - "DownloadSeconds": 0.061003542 + "downloadSeconds": 0.061003542 }, { "connectionEstablishedSeconds": 0.124848685, "uploadSeconds": 0.000001469, - "DownloadSeconds": 0.060034978 + "downloadSeconds": 0.060034978 }, { "connectionEstablishedSeconds": 0.131629743, "uploadSeconds": 0.000001449, - "DownloadSeconds": 0.063505673 + "downloadSeconds": 0.063505673 }, { "connectionEstablishedSeconds": 0.118768582, "uploadSeconds": 0.000001448, - "DownloadSeconds": 0.057896358 + "downloadSeconds": 0.057896358 }, { "connectionEstablishedSeconds": 0.132635801, "uploadSeconds": 0.000001474, - "DownloadSeconds": 0.063932235 + "downloadSeconds": 0.063932235 }, { "connectionEstablishedSeconds": 0.126282233, "uploadSeconds": 0.000001428, - "DownloadSeconds": 0.061655677 + "downloadSeconds": 0.061655677 }, { "connectionEstablishedSeconds": 0.130103183, "uploadSeconds": 0.000001461, - "DownloadSeconds": 0.063143473 + "downloadSeconds": 0.063143473 }, { "connectionEstablishedSeconds": 0.126639755, "uploadSeconds": 0.000001414, - "DownloadSeconds": 0.06089211 + "downloadSeconds": 0.06089211 }, { "connectionEstablishedSeconds": 0.130654578, "uploadSeconds": 0.000001511, - "DownloadSeconds": 0.062895361 + "downloadSeconds": 0.062895361 }, { "connectionEstablishedSeconds": 0.130549247, "uploadSeconds": 0.000001451, - "DownloadSeconds": 0.063388518 + "downloadSeconds": 0.063388518 }, { "connectionEstablishedSeconds": 0.121943873, "uploadSeconds": 0.000001546, - "DownloadSeconds": 0.05863414 + "downloadSeconds": 0.05863414 }, { "connectionEstablishedSeconds": 0.128689427, "uploadSeconds": 0.000001541, - "DownloadSeconds": 0.061924851 + "downloadSeconds": 0.061924851 }, { "connectionEstablishedSeconds": 0.125593774, "uploadSeconds": 0.000001388, - "DownloadSeconds": 0.061346375 + "downloadSeconds": 0.061346375 }, { "connectionEstablishedSeconds": 0.126114403, "uploadSeconds": 0.000001478, - "DownloadSeconds": 0.061483351 + "downloadSeconds": 0.061483351 }, { "connectionEstablishedSeconds": 0.124927605, "uploadSeconds": 0.000001518, - "DownloadSeconds": 0.060145482 + "downloadSeconds": 0.060145482 }, { "connectionEstablishedSeconds": 0.128973538, "uploadSeconds": 0.00000153, - "DownloadSeconds": 0.062205281 + "downloadSeconds": 0.062205281 }, { "connectionEstablishedSeconds": 0.128944333, "uploadSeconds": 0.000001505, - "DownloadSeconds": 0.062992906 + "downloadSeconds": 0.062992906 }, { "connectionEstablishedSeconds": 0.128396058, "uploadSeconds": 0.000001591, - "DownloadSeconds": 0.061744308 + "downloadSeconds": 0.061744308 }, { "connectionEstablishedSeconds": 0.123635078, "uploadSeconds": 0.000001673, - "DownloadSeconds": 0.059731873 + "downloadSeconds": 0.059731873 }, { "connectionEstablishedSeconds": 0.126869663, "uploadSeconds": 0.000001602, - "DownloadSeconds": 0.060971931 + "downloadSeconds": 0.060971931 }, { "connectionEstablishedSeconds": 0.129249375, "uploadSeconds": 0.00000168, - "DownloadSeconds": 0.062236365 + "downloadSeconds": 0.062236365 }, { "connectionEstablishedSeconds": 0.129164979, "uploadSeconds": 0.000001724, - "DownloadSeconds": 0.063029812 + "downloadSeconds": 0.063029812 }, { "connectionEstablishedSeconds": 0.133137747, "uploadSeconds": 0.00000146, - "DownloadSeconds": 0.064202058 + "downloadSeconds": 0.064202058 }, { "connectionEstablishedSeconds": 0.126919816, "uploadSeconds": 0.000001559, - "DownloadSeconds": 0.061051216 + "downloadSeconds": 0.061051216 }, { "connectionEstablishedSeconds": 0.129161057, "uploadSeconds": 0.000001515, - "DownloadSeconds": 0.062148438 + "downloadSeconds": 0.062148438 }, { "connectionEstablishedSeconds": 0.12643837, "uploadSeconds": 0.000001527, - "DownloadSeconds": 0.060876096 + "downloadSeconds": 0.060876096 }, { "connectionEstablishedSeconds": 0.12883837, "uploadSeconds": 0.000001477, - "DownloadSeconds": 0.062117541 + "downloadSeconds": 0.062117541 }, { "connectionEstablishedSeconds": 0.125180919, "uploadSeconds": 0.00000138, - "DownloadSeconds": 0.060162327 + "downloadSeconds": 0.060162327 }, { "connectionEstablishedSeconds": 0.128980365, "uploadSeconds": 0.000001464, - "DownloadSeconds": 0.062863695 + "downloadSeconds": 0.062863695 }, { "connectionEstablishedSeconds": 0.125982137, "uploadSeconds": 0.000001546, - "DownloadSeconds": 0.060601693 + "downloadSeconds": 0.060601693 }, { "connectionEstablishedSeconds": 0.122040921, "uploadSeconds": 0.00000147, - "DownloadSeconds": 0.05863226 + "downloadSeconds": 0.05863226 }, { "connectionEstablishedSeconds": 0.13145477, "uploadSeconds": 0.000001542, - "DownloadSeconds": 0.064228081 + "downloadSeconds": 0.064228081 }, { "connectionEstablishedSeconds": 0.128118009, "uploadSeconds": 0.000001748, - "DownloadSeconds": 0.062337372 + "downloadSeconds": 0.062337372 }, { "connectionEstablishedSeconds": 0.129970686, "uploadSeconds": 0.000001924, - "DownloadSeconds": 0.062586235 + "downloadSeconds": 0.062586235 } ], "implementation": "go-libp2p", @@ -4200,4 +4200,4 @@ 2920000000 ] } -} \ No newline at end of file +} From 388886f3f6a419632cca5fefb240844b0cce9e8b Mon Sep 17 00:00:00 2001 From: Max Inden Date: Tue, 23 May 2023 12:58:06 +0900 Subject: [PATCH 090/101] fix(go-libp2p): use tls only Use TLS only instead of both TLS and Noise. Removes the additional multistream-select security protocol negotiation. Thus makes it easier to compare with TCP+TLS+HTTP/2 --- perf/impl/go-libp2p/v0.27/main.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index ca591e542..b07f9bff5 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -12,6 +12,7 @@ import ( "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/peer" "github.com/multiformats/go-multiaddr" + tls "github.com/libp2p/go-libp2p/p2p/security/tls" ) func main() { @@ -23,7 +24,13 @@ func main() { downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") flag.Parse() - var opts []libp2p.Option + opts := []libp2p.Option{ + // Use TLS only instead of both TLS and Noise. Removes the + // additional multistream-select security protocol negotiation. + // Thus makes it easier to compare with TCP+TLS+HTTP/2 + libp2p.Security(tls.ID, tls.New), + } + if *runServer { opts = append(opts, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/udp/4001/quic-v1")) From 23ed486deaf3f7021f3624eb88b04c994f6267a7 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Tue, 23 May 2023 12:58:47 +0900 Subject: [PATCH 091/101] List results last Makes the JSON easier to read. --- perf/runner/src/benchmark-result-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index 4fe15d302..34d1088ef 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -29,10 +29,10 @@ export type Parameters = { } export type Result = { - result: ResultValue[], implementation: string, transportStack: string, version: string + result: ResultValue[], }; export type ResultValue = { From fd8a87822aae53231b451400ea0807533cf3ee31 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 14:28:50 +0900 Subject: [PATCH 092/101] fix(runner): trust ssh host key --- perf/runner/src/index.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 588134785..d0e056587 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -56,7 +56,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { function runPing(clientPublicIP: string, serverPublicIP: string): PingResults { console.error(`= run 100 pings from client to server`); - let cmd = `ssh ec2-user@${clientPublicIP} 'ping -c 100 ${serverPublicIP}'`; + let cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'ping -c 100 ${serverPublicIP}'`; const stdout = execCommand(cmd).toString(); // Extract the time from each ping @@ -74,15 +74,15 @@ function runPing(clientPublicIP: string, serverPublicIP: string): PingResults { function runIPerf(clientPublicIP: string, serverPublicIP: string): IperfResults { console.error(`= run 60 iPerf UDP from client to server`); - let killCMD = `ssh ec2-user@${serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; + let killCMD = `ssh -o StrictHostKeyChecking=no ec2-user@${serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; const killSTDOUT = execCommand(killCMD); console.error(killSTDOUT); - let serverCMD = `ssh ec2-user@${serverPublicIP} 'nohup iperf3 -s > server.log 2>&1 & echo \$! > pidfile '`; + let serverCMD = `ssh -o StrictHostKeyChecking=no ec2-user@${serverPublicIP} 'nohup iperf3 -s > server.log 2>&1 & echo \$! > pidfile '`; const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); - let cmd = `ssh ec2-user@${clientPublicIP} 'iperf3 -c ${serverPublicIP} -u -b 25g -t 60'`; + let cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'iperf3 -c ${serverPublicIP} -u -b 25g -t 60'`; const stdout = execSync(cmd).toString(); // Extract the bitrate from each relevant line @@ -124,11 +124,11 @@ function runBenchmarkAcrossVersions(args: ArgsRunBenchmarkAcrossVersions): Bench console.error(`=== Starting server ${version.implementation}/${version.id}`); - let killCMD = `ssh ec2-user@${args.serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; + let killCMD = `ssh -o StrictHostKeyChecking=no ec2-user@${args.serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; const killSTDOUT = execCommand(killCMD); console.error(killSTDOUT); - let serverCMD = `ssh ec2-user@${args.serverPublicIP} 'nohup ./impl/${version.implementation}/${version.id}/perf --run-server --server-address 0.0.0.0:4001 --secret-key-seed 0 > server.log 2>&1 & echo \$! > pidfile '`; + let serverCMD = `ssh -o StrictHostKeyChecking=no ec2-user@${args.serverPublicIP} 'nohup ./impl/${version.implementation}/${version.id}/perf --run-server --server-address 0.0.0.0:4001 --secret-key-seed 0 > server.log 2>&1 & echo \$! > pidfile '`; const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); @@ -180,7 +180,7 @@ function runClient(args: ArgsRunBenchmark): ResultValue[] { console.error(`=== Starting client ${args.implementation}/${args.id}/${args.transportStack}`); const perfCMD = `./impl/${args.implementation}/${args.id}/perf --server-address ${args.serverPublicIP}:4001 --transport ${args.transportStack} --upload-bytes ${args.uploadBytes} --download-bytes ${args.downloadBytes}` - const cmd = `ssh ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` + const cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${args.clientPublicIP} 'for i in {1..${args.iterations}}; do ${perfCMD}; done'` const stdout = execCommand(cmd); @@ -210,10 +210,10 @@ function execCommand(cmd: string): string { } function copyAndBuildPerfImplementations(ip: string) { - const stdout = execCommand(`rsync -avz --progress --filter=':- .gitignore' ../impl ec2-user@${ip}:/home/ec2-user`); + const stdout = execCommand(`rsync -avz --progress --filter=':- .gitignore' -e "ssh -o StrictHostKeyChecking=no" ../impl ec2-user@${ip}:/home/ec2-user`); console.error(stdout.toString()); - const stdout2 = execCommand(`ssh ec2-user@${ip} 'cd impl && make'`); + const stdout2 = execCommand(`ssh -o StrictHostKeyChecking=no ec2-user@${ip} 'cd impl && make'`); console.error(stdout2.toString()); } From e1a49dad0704afcae0c444f6df840c157bea3e81 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 14:29:32 +0900 Subject: [PATCH 093/101] fix(go-libp2p): don't wait for identify round trip --- perf/impl/go-libp2p/v0.27/perf.go | 43 ++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/perf/impl/go-libp2p/v0.27/perf.go b/perf/impl/go-libp2p/v0.27/perf.go index 7a3e2b7a3..687372069 100644 --- a/perf/impl/go-libp2p/v0.27/perf.go +++ b/perf/impl/go-libp2p/v0.27/perf.go @@ -12,6 +12,7 @@ import ( "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/peer" + msmux "github.com/multiformats/go-multistream" ) var log = logging.Logger("perf") @@ -95,10 +96,21 @@ func (ps *PerfService) drainStream(ctx context.Context, s network.Stream, buf [] } func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) (time.Duration, time.Duration, error) { - s, err := ps.Host.NewStream(ctx, p, ID) + s, err := ps.Host.Network().NewStream(network.WithNoDial(ctx, "already dialed"), p) if err != nil { return 0, 0, err } + s.SetProtocol(ID) + lzcon := msmux.NewMSSelect(s, ID) + s = &streamWrapper{ + Stream: s, + rw: lzcon, + } + + // s, err := ps.Host.NewStream(ctx, p, ID) + // if err != nil { + // return 0, 0, err + // } buf := pool.Get(BlockSize) defer pool.Put(buf) @@ -131,3 +143,32 @@ func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint6 return sendDuration, recvDuration, nil } + +type streamWrapper struct { + network.Stream + rw io.ReadWriteCloser +} + +func (s *streamWrapper) Read(b []byte) (int, error) { + return s.rw.Read(b) +} + +func (s *streamWrapper) Write(b []byte) (int, error) { + return s.rw.Write(b) +} + +func (s *streamWrapper) Close() error { + return s.rw.Close() +} + +func (s *streamWrapper) CloseWrite() error { + // Flush the handshake before closing, but ignore the error. The other + // end may have closed their side for reading. + // + // If something is wrong with the stream, the user will get on error on + // read instead. + if flusher, ok := s.rw.(interface{ Flush() error }); ok { + _ = flusher.Flush() + } + return s.Stream.CloseWrite() +} From 89302efe899abea75c6222a5c46dc617d469e0b4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 14:29:51 +0900 Subject: [PATCH 094/101] fix(quic-go): update to latest upstream --- perf/impl/quic-go/v0.34/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/perf/impl/quic-go/v0.34/Makefile b/perf/impl/quic-go/v0.34/Makefile index 6c3c45b3a..1a9b335f6 100644 --- a/perf/impl/quic-go/v0.34/Makefile +++ b/perf/impl/quic-go/v0.34/Makefile @@ -1,4 +1,4 @@ -commitSha := b50b0322f56ff6e332189349478063259e0a0f8c +commitSha := bdfafffc8b7ec786ff41ea245f24920930eec720 all: perf @@ -10,8 +10,7 @@ perf-${commitSha}: perf-${commitSha}.zip unzip -o perf-${commitSha}.zip perf-${commitSha}.zip: - # TODO: Use upstream - wget -O $@ "https://github.com/mxinden/perf/archive/${commitSha}.zip" + wget -O $@ "https://github.com/quic-go/perf/archive/${commitSha}.zip" clean: rm perf-*.zip From c05e6d6f10d3d2a3326a687652f7bbafb466a8da Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 14:30:22 +0900 Subject: [PATCH 095/101] Udate benchmark results json --- perf/runner/benchmark-results.json | 4694 ++++++++++++++-------------- 1 file changed, 2347 insertions(+), 2347 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 905fc0d08..139f9795e 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -7,29 +7,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.064615047, - "uploadSeconds": 0.988964167, - "downloadSeconds": 1.19e-7 + "connectionEstablishedSeconds": 0.073534389, + "uploadSeconds": 1.022966015, + "downloadSeconds": 6e-8 }, { - "connectionEstablishedSeconds": 0.064595, - "uploadSeconds": 1.006270274, - "downloadSeconds": 5.7e-8 + "connectionEstablishedSeconds": 0.064356999, + "uploadSeconds": 0.998081542, + "downloadSeconds": 6.7e-8 }, { - "connectionEstablishedSeconds": 0.061957379, - "uploadSeconds": 0.967206045, - "downloadSeconds": 1.5e-7 + "connectionEstablishedSeconds": 0.063721734, + "uploadSeconds": 0.991826811, + "downloadSeconds": 1.2e-7 }, { - "connectionEstablishedSeconds": 0.066333628, - "uploadSeconds": 1.041923666, - "downloadSeconds": 8.1e-8 + "connectionEstablishedSeconds": 0.063634209, + "uploadSeconds": 0.989437537, + "downloadSeconds": 4.6e-8 }, { - "connectionEstablishedSeconds": 0.064395005, - "uploadSeconds": 1.001865646, - "downloadSeconds": 1.51e-7 + "connectionEstablishedSeconds": 0.06520362, + "uploadSeconds": 1.015414228, + "downloadSeconds": 7.9e-8 } ], "implementation": "quic-go", @@ -39,29 +39,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.130085386, - "uploadSeconds": 37.706576579, - "downloadSeconds": 0.06323964 + "connectionEstablishedSeconds": 0.128835561, + "uploadSeconds": 35.737586498, + "downloadSeconds": 0.063590841 }, { - "connectionEstablishedSeconds": 0.126073934, - "uploadSeconds": 35.394770671, - "downloadSeconds": 0.062791976 + "connectionEstablishedSeconds": 0.127912166, + "uploadSeconds": 38.667856873, + "downloadSeconds": 0.064191392 }, { - "connectionEstablishedSeconds": 0.118604112, - "uploadSeconds": 34.323311088, - "downloadSeconds": 0.059298347 + "connectionEstablishedSeconds": 0.128037643, + "uploadSeconds": 39.031020329, + "downloadSeconds": 0.063663246 }, { - "connectionEstablishedSeconds": 0.124873844, - "uploadSeconds": 35.669218402, - "downloadSeconds": 0.063715144 + "connectionEstablishedSeconds": 0.125461392, + "uploadSeconds": 35.221011787, + "downloadSeconds": 0.062566617 }, { - "connectionEstablishedSeconds": 0.127441566, - "uploadSeconds": 35.740599168, - "downloadSeconds": 0.063565162 + "connectionEstablishedSeconds": 0.127881229, + "uploadSeconds": 35.830456386, + "downloadSeconds": 0.063730291 } ], "implementation": "rust-libp2p", @@ -71,29 +71,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065548222, - "uploadSeconds": 14.530045427, - "downloadSeconds": 0.000076453 + "connectionEstablishedSeconds": 0.069181494, + "uploadSeconds": 8.663833631, + "downloadSeconds": 0.000052794 }, { - "connectionEstablishedSeconds": 0.065969131, - "uploadSeconds": 9.529083867, - "downloadSeconds": 0.000050095 + "connectionEstablishedSeconds": 0.066686168, + "uploadSeconds": 9.229412335, + "downloadSeconds": 0.000081701 }, { - "connectionEstablishedSeconds": 0.066708447, - "uploadSeconds": 12.083736464, - "downloadSeconds": 0.000108361 + "connectionEstablishedSeconds": 0.063637152, + "uploadSeconds": 10.140803841, + "downloadSeconds": 0.000111314 }, { - "connectionEstablishedSeconds": 0.062826795, - "uploadSeconds": 8.016417861, - "downloadSeconds": 0.000057748 + "connectionEstablishedSeconds": 0.064684463, + "uploadSeconds": 12.200936442, + "downloadSeconds": 0.000126945 }, { - "connectionEstablishedSeconds": 0.061946997, - "uploadSeconds": 15.177270054, - "downloadSeconds": 0.000040064 + "connectionEstablishedSeconds": 0.064385185, + "uploadSeconds": 5.834055514, + "downloadSeconds": 0.000197576 } ], "implementation": "rust-libp2p", @@ -103,29 +103,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065995905, - "uploadSeconds": 1.485719002, - "downloadSeconds": 0.000553305 + "connectionEstablishedSeconds": 0.068037568, + "uploadSeconds": 1.449457077, + "downloadSeconds": 0.00013048 }, { - "connectionEstablishedSeconds": 0.063538531, - "uploadSeconds": 1.395860033, - "downloadSeconds": 0.000067559 + "connectionEstablishedSeconds": 0.062217728, + "uploadSeconds": 1.363903017, + "downloadSeconds": 0.000167691 }, { - "connectionEstablishedSeconds": 0.065835491, - "uploadSeconds": 1.454903434, - "downloadSeconds": 0.00003936 + "connectionEstablishedSeconds": 0.061760172, + "uploadSeconds": 1.351303046, + "downloadSeconds": 0.000046245 }, { - "connectionEstablishedSeconds": 0.062994266, - "uploadSeconds": 1.390279352, - "downloadSeconds": 0.000037439 + "connectionEstablishedSeconds": 0.066087113, + "uploadSeconds": 1.458958647, + "downloadSeconds": 0.000163002 }, { - "connectionEstablishedSeconds": 0.061966219, - "uploadSeconds": 1.365005507, - "downloadSeconds": 0.000038552 + "connectionEstablishedSeconds": 0.064387156, + "uploadSeconds": 1.421119262, + "downloadSeconds": 0.000038861 } ], "implementation": "rust-libp2p-quinn", @@ -136,28 +136,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.874647174, - "downloadSeconds": 0.000004258 + "uploadSeconds": 2.786165446, + "downloadSeconds": 0.000004741 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.834617305, - "downloadSeconds": 0.000002323 + "uploadSeconds": 2.704157312, + "downloadSeconds": 0.000004241 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.7802673049999997, - "downloadSeconds": 0.000002272 + "uploadSeconds": 2.962081208, + "downloadSeconds": 0.00000479 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.875364372, - "downloadSeconds": 0.000004399 + "uploadSeconds": 2.7954418370000003, + "downloadSeconds": 0.000004374 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.886239104, - "downloadSeconds": 0.000004495 + "uploadSeconds": 2.661247369, + "downloadSeconds": 0.000006242 } ], "implementation": "https", @@ -167,29 +167,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.251550611, - "uploadSeconds": 2.846900655, - "downloadSeconds": 0.123533731 + "connectionEstablishedSeconds": 0.257242958, + "uploadSeconds": 2.898156996, + "downloadSeconds": 0.126289233 }, { - "connectionEstablishedSeconds": 0.242425913, - "uploadSeconds": 2.795257683, - "downloadSeconds": 0.118580522 + "connectionEstablishedSeconds": 0.24601548, + "uploadSeconds": 2.778560537, + "downloadSeconds": 0.120859979 }, { - "connectionEstablishedSeconds": 0.246873845, - "uploadSeconds": 3.063707114, - "downloadSeconds": 0.121986488 + "connectionEstablishedSeconds": 0.242625404, + "uploadSeconds": 2.746282241, + "downloadSeconds": 0.119425337 }, { - "connectionEstablishedSeconds": 0.249576396, - "uploadSeconds": 3.085365409, - "downloadSeconds": 0.122945992 + "connectionEstablishedSeconds": 0.248417743, + "uploadSeconds": 2.792082647, + "downloadSeconds": 0.122889467 }, { - "connectionEstablishedSeconds": 0.245968516, - "uploadSeconds": 2.773947588, - "downloadSeconds": 0.120331421 + "connectionEstablishedSeconds": 0.255177343, + "uploadSeconds": 2.881758737, + "downloadSeconds": 0.125591938 } ], "implementation": "go-libp2p", @@ -199,29 +199,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.126053411, - "uploadSeconds": 1.260300357, - "downloadSeconds": 0.061025325 + "connectionEstablishedSeconds": 0.127848229, + "uploadSeconds": 1.292611852, + "downloadSeconds": 0.061803216 }, { - "connectionEstablishedSeconds": 0.1235829, - "uploadSeconds": 1.221448272, - "downloadSeconds": 0.059113222 + "connectionEstablishedSeconds": 0.12811363, + "uploadSeconds": 1.284820075, + "downloadSeconds": 0.062122628 }, { - "connectionEstablishedSeconds": 0.12598381, - "uploadSeconds": 1.248171035, - "downloadSeconds": 0.060479591 + "connectionEstablishedSeconds": 0.127555659, + "uploadSeconds": 1.273436506, + "downloadSeconds": 0.060895745 }, { - "connectionEstablishedSeconds": 0.127167588, - "uploadSeconds": 1.270804783, - "downloadSeconds": 0.060895254 + "connectionEstablishedSeconds": 0.128008204, + "uploadSeconds": 1.264772788, + "downloadSeconds": 0.061220133 }, { - "connectionEstablishedSeconds": 0.12712039, - "uploadSeconds": 1.276295741, - "downloadSeconds": 0.061811092 + "connectionEstablishedSeconds": 0.132303698, + "uploadSeconds": 1.327344153, + "downloadSeconds": 0.064228251 } ], "implementation": "go-libp2p", @@ -235,35 +235,35 @@ } }, { - "name": "Single Connection throughput – download 100 MiB", + "name": "Single Connection throughput – Download 100 MiB", "unit": "bit/s", "results": [ { "result": [ { - "connectionEstablishedSeconds": 0.061999713, - "uploadSeconds": 4.39e-7, - "downloadSeconds": 1.028321192 + "connectionEstablishedSeconds": 0.063943862, + "uploadSeconds": 6.3e-7, + "downloadSeconds": 1.9445675869999999 }, { - "connectionEstablishedSeconds": 0.064917296, - "uploadSeconds": 5.56e-7, - "downloadSeconds": 1.061596996 + "connectionEstablishedSeconds": 0.062428058, + "uploadSeconds": 5.91e-7, + "downloadSeconds": 1.02886241 }, { - "connectionEstablishedSeconds": 0.066126296, - "uploadSeconds": 7.02e-7, - "downloadSeconds": 1.087863123 + "connectionEstablishedSeconds": 0.065298762, + "uploadSeconds": 6.06e-7, + "downloadSeconds": 1.075758583 }, { - "connectionEstablishedSeconds": 0.062688429, - "uploadSeconds": 5.69e-7, - "downloadSeconds": 1.042664418 + "connectionEstablishedSeconds": 0.06440009, + "uploadSeconds": 6.24e-7, + "downloadSeconds": 1.062645745 }, { - "connectionEstablishedSeconds": 0.062954018, - "uploadSeconds": 5.47e-7, - "downloadSeconds": 1.0342652 + "connectionEstablishedSeconds": 0.060673776, + "uploadSeconds": 6.01e-7, + "downloadSeconds": 1.000647709 } ], "implementation": "quic-go", @@ -273,29 +273,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.12706415, - "uploadSeconds": 0.063256119, - "downloadSeconds": 35.974620608 + "connectionEstablishedSeconds": 0.124610523, + "uploadSeconds": 0.062097943, + "downloadSeconds": 38.179314432 }, { - "connectionEstablishedSeconds": 0.127749712, - "uploadSeconds": 0.063366234, - "downloadSeconds": 41.601253149 + "connectionEstablishedSeconds": 0.129181421, + "uploadSeconds": 0.064326834, + "downloadSeconds": 36.613869855 }, { - "connectionEstablishedSeconds": 0.122257267, - "uploadSeconds": 0.060835769, - "downloadSeconds": 34.346292556 + "connectionEstablishedSeconds": 0.128061981, + "uploadSeconds": 0.06364587, + "downloadSeconds": 37.86262842 }, { - "connectionEstablishedSeconds": 0.128953805, - "uploadSeconds": 0.064083786, - "downloadSeconds": 42.747025706 + "connectionEstablishedSeconds": 0.12590699, + "uploadSeconds": 0.062548546, + "downloadSeconds": 39.484203053 }, { - "connectionEstablishedSeconds": 0.1210829, - "uploadSeconds": 0.060118424, - "downloadSeconds": 34.064101133 + "connectionEstablishedSeconds": 0.126808331, + "uploadSeconds": 0.063408568, + "downloadSeconds": 35.652751967 } ], "implementation": "rust-libp2p", @@ -305,29 +305,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.066243543, - "uploadSeconds": 0.129079158, - "downloadSeconds": 10.54329554 + "connectionEstablishedSeconds": 0.061041295, + "uploadSeconds": 0.11785278, + "downloadSeconds": 20.858156356 }, { - "connectionEstablishedSeconds": 0.063366265, - "uploadSeconds": 0.123480025, - "downloadSeconds": 13.530595282 + "connectionEstablishedSeconds": 0.064759436, + "uploadSeconds": 0.126188747, + "downloadSeconds": 25.139504889 }, { - "connectionEstablishedSeconds": 0.063453185, - "uploadSeconds": 0.123524922, - "downloadSeconds": 12.251153406 + "connectionEstablishedSeconds": 0.065386286, + "uploadSeconds": 0.127581631, + "downloadSeconds": 19.44089213 }, { - "connectionEstablishedSeconds": 0.063395541, - "uploadSeconds": 0.123495377, - "downloadSeconds": 10.753483627 + "connectionEstablishedSeconds": 0.064602725, + "uploadSeconds": 0.12600768, + "downloadSeconds": 29.363678817 }, { - "connectionEstablishedSeconds": 0.063278224, - "uploadSeconds": 0.123278503, - "downloadSeconds": 13.267019601 + "connectionEstablishedSeconds": 0.064424853, + "uploadSeconds": 0.125434375, + "downloadSeconds": 29.075442273 } ], "implementation": "rust-libp2p", @@ -337,29 +337,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.06488199, - "uploadSeconds": 0.125932155, - "downloadSeconds": 1.3633550589999999 + "connectionEstablishedSeconds": 0.066426458, + "uploadSeconds": 0.128562102, + "downloadSeconds": 1.406269952 }, { - "connectionEstablishedSeconds": 0.064353019, - "uploadSeconds": 0.125460117, - "downloadSeconds": 1.3598140189999999 + "connectionEstablishedSeconds": 0.062947594, + "uploadSeconds": 0.122508445, + "downloadSeconds": 1.326230859 }, { - "connectionEstablishedSeconds": 0.062296858, - "uploadSeconds": 0.12124451, - "downloadSeconds": 1.313197081 + "connectionEstablishedSeconds": 0.063135632, + "uploadSeconds": 0.12315273, + "downloadSeconds": 1.332490635 }, { - "connectionEstablishedSeconds": 0.065277725, - "uploadSeconds": 0.127151015, - "downloadSeconds": 1.415552125 + "connectionEstablishedSeconds": 0.065326068, + "uploadSeconds": 0.127387869, + "downloadSeconds": 1.376855747 }, { - "connectionEstablishedSeconds": 0.064746505, - "uploadSeconds": 0.126296331, - "downloadSeconds": 1.373616806 + "connectionEstablishedSeconds": 0.066076185, + "uploadSeconds": 0.128719025, + "downloadSeconds": 1.441012489 } ], "implementation": "rust-libp2p-quinn", @@ -370,28 +370,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187967569, - "downloadSeconds": 2.7059459219999997 + "uploadSeconds": 0.189144939, + "downloadSeconds": 2.668715956 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185706236, - "downloadSeconds": 2.61942649 + "uploadSeconds": 0.188799167, + "downloadSeconds": 2.654331318 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192289066, - "downloadSeconds": 2.716054685 + "uploadSeconds": 0.184312243, + "downloadSeconds": 2.7782000289999997 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191801605, - "downloadSeconds": 2.802501777 + "uploadSeconds": 0.186464761, + "downloadSeconds": 2.6601451430000003 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193762824, - "downloadSeconds": 3.006738304 + "uploadSeconds": 0.183973213, + "downloadSeconds": 2.936052888 } ], "implementation": "https", @@ -401,29 +401,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.249739662, - "uploadSeconds": 0.000002098, - "downloadSeconds": 2.9350942460000002 + "connectionEstablishedSeconds": 0.241151468, + "uploadSeconds": 0.000001908, + "downloadSeconds": 2.842781712 }, { - "connectionEstablishedSeconds": 0.254077537, - "uploadSeconds": 0.000001776, - "downloadSeconds": 2.99984772 + "connectionEstablishedSeconds": 0.263596828, + "uploadSeconds": 0.000002181, + "downloadSeconds": 3.218761259 }, { - "connectionEstablishedSeconds": 0.26064741, - "uploadSeconds": 0.000002265, - "downloadSeconds": 3.07579614 + "connectionEstablishedSeconds": 0.246584644, + "uploadSeconds": 0.000002162, + "downloadSeconds": 2.977065663 }, { - "connectionEstablishedSeconds": 0.248876875, - "uploadSeconds": 0.000001814, - "downloadSeconds": 3.109052261 + "connectionEstablishedSeconds": 0.24640504, + "uploadSeconds": 0.000002292, + "downloadSeconds": 2.894210966 }, { - "connectionEstablishedSeconds": 0.257652776, - "uploadSeconds": 0.000001835, - "downloadSeconds": 3.094898801 + "connectionEstablishedSeconds": 0.253147228, + "uploadSeconds": 0.000002386, + "downloadSeconds": 3.114069692 } ], "implementation": "go-libp2p", @@ -433,29 +433,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.129198968, - "uploadSeconds": 0.000001513, - "downloadSeconds": 1.336376132 + "connectionEstablishedSeconds": 0.126388751, + "uploadSeconds": 0.000001452, + "downloadSeconds": 1.30453021 }, { - "connectionEstablishedSeconds": 0.128866615, - "uploadSeconds": 0.000001247, - "downloadSeconds": 1.357847528 + "connectionEstablishedSeconds": 0.133952054, + "uploadSeconds": 0.00000173, + "downloadSeconds": 1.389168144 }, { - "connectionEstablishedSeconds": 0.128139163, - "uploadSeconds": 0.000001393, - "downloadSeconds": 1.343668511 + "connectionEstablishedSeconds": 0.126854789, + "uploadSeconds": 0.000001616, + "downloadSeconds": 1.335316416 }, { - "connectionEstablishedSeconds": 0.130263946, - "uploadSeconds": 0.000001313, - "downloadSeconds": 1.353385803 + "connectionEstablishedSeconds": 0.130872222, + "uploadSeconds": 0.000001434, + "downloadSeconds": 1.375239395 }, { - "connectionEstablishedSeconds": 0.124757242, - "uploadSeconds": 0.000001468, - "downloadSeconds": 1.3143922639999999 + "connectionEstablishedSeconds": 0.126340413, + "uploadSeconds": 0.000001736, + "downloadSeconds": 1.326846424 } ], "implementation": "go-libp2p", @@ -475,504 +475,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065069473, - "uploadSeconds": 0.000001866, - "downloadSeconds": 0.062256472 + "connectionEstablishedSeconds": 0.064760029, + "uploadSeconds": 0.000002237, + "downloadSeconds": 0.06281288 }, { - "connectionEstablishedSeconds": 0.064288585, - "uploadSeconds": 0.000002063, - "downloadSeconds": 0.06233876 + "connectionEstablishedSeconds": 0.062448685, + "uploadSeconds": 0.000001167, + "downloadSeconds": 0.060469641 }, { - "connectionEstablishedSeconds": 0.064484789, - "uploadSeconds": 0.000002073, - "downloadSeconds": 0.062723672 + "connectionEstablishedSeconds": 0.064932292, + "uploadSeconds": 0.000001928, + "downloadSeconds": 0.063148985 }, { - "connectionEstablishedSeconds": 0.062385008, - "uploadSeconds": 0.000001881, - "downloadSeconds": 0.060628645 + "connectionEstablishedSeconds": 0.066137949, + "uploadSeconds": 0.00000194, + "downloadSeconds": 0.064209464 }, { - "connectionEstablishedSeconds": 0.063304243, - "uploadSeconds": 0.000001961, - "downloadSeconds": 0.061635519 + "connectionEstablishedSeconds": 0.060545333, + "uploadSeconds": 9.07e-7, + "downloadSeconds": 0.058755662 }, { - "connectionEstablishedSeconds": 0.063332073, - "uploadSeconds": 8.86e-7, - "downloadSeconds": 0.061448365 + "connectionEstablishedSeconds": 0.061730743, + "uploadSeconds": 8.63e-7, + "downloadSeconds": 0.0597931 }, { - "connectionEstablishedSeconds": 0.062947885, - "uploadSeconds": 8.13e-7, - "downloadSeconds": 0.0612649 + "connectionEstablishedSeconds": 0.065625336, + "uploadSeconds": 0.000001947, + "downloadSeconds": 0.063831922 }, { - "connectionEstablishedSeconds": 0.065377389, - "uploadSeconds": 7.24e-7, - "downloadSeconds": 0.063726463 + "connectionEstablishedSeconds": 0.062263528, + "uploadSeconds": 0.00000198, + "downloadSeconds": 0.060449721 }, { - "connectionEstablishedSeconds": 0.06389184, - "uploadSeconds": 0.000001823, - "downloadSeconds": 0.062134002 + "connectionEstablishedSeconds": 0.065397138, + "uploadSeconds": 0.000002068, + "downloadSeconds": 0.063491222 }, { - "connectionEstablishedSeconds": 0.06182418, - "uploadSeconds": 0.000001945, - "downloadSeconds": 0.060201813 + "connectionEstablishedSeconds": 0.06699556, + "uploadSeconds": 0.000001977, + "downloadSeconds": 0.065209392 }, { - "connectionEstablishedSeconds": 0.062630776, - "uploadSeconds": 0.000001825, - "downloadSeconds": 0.060914704 + "connectionEstablishedSeconds": 0.065975661, + "uploadSeconds": 0.000001905, + "downloadSeconds": 0.064126424 }, { - "connectionEstablishedSeconds": 0.06616315, - "uploadSeconds": 0.000001876, - "downloadSeconds": 0.064389835 + "connectionEstablishedSeconds": 0.063061032, + "uploadSeconds": 9.21e-7, + "downloadSeconds": 0.061925001 }, { - "connectionEstablishedSeconds": 0.060004119, - "uploadSeconds": 0.000001963, - "downloadSeconds": 0.058251497 + "connectionEstablishedSeconds": 0.064418665, + "uploadSeconds": 0.000002286, + "downloadSeconds": 0.062459007 }, { - "connectionEstablishedSeconds": 0.064923606, - "uploadSeconds": 8.29e-7, - "downloadSeconds": 0.063041205 + "connectionEstablishedSeconds": 0.064316085, + "uploadSeconds": 8.99e-7, + "downloadSeconds": 0.062683664 }, { - "connectionEstablishedSeconds": 0.064839276, - "uploadSeconds": 0.000001954, - "downloadSeconds": 0.063133865 + "connectionEstablishedSeconds": 0.064894229, + "uploadSeconds": 0.000002007, + "downloadSeconds": 0.061567794 }, { - "connectionEstablishedSeconds": 0.063852939, - "uploadSeconds": 0.000001953, - "downloadSeconds": 0.062121333 + "connectionEstablishedSeconds": 0.066622933, + "uploadSeconds": 0.000002061, + "downloadSeconds": 0.064526084 }, { - "connectionEstablishedSeconds": 0.064406821, - "uploadSeconds": 8.09e-7, - "downloadSeconds": 0.064277535 + "connectionEstablishedSeconds": 0.066025413, + "uploadSeconds": 0.000001985, + "downloadSeconds": 0.064214234 }, { - "connectionEstablishedSeconds": 0.063644647, - "uploadSeconds": 0.00000193, - "downloadSeconds": 0.061865325 + "connectionEstablishedSeconds": 0.065527168, + "uploadSeconds": 0.000001991, + "downloadSeconds": 0.063739535 }, { - "connectionEstablishedSeconds": 0.06144155, - "uploadSeconds": 0.000001766, - "downloadSeconds": 0.059727007 + "connectionEstablishedSeconds": 0.061806465, + "uploadSeconds": 0.000001847, + "downloadSeconds": 0.059981388 }, { - "connectionEstablishedSeconds": 0.060326476, - "uploadSeconds": 0.000001896, - "downloadSeconds": 0.058577622 + "connectionEstablishedSeconds": 0.064470062, + "uploadSeconds": 0.000001983, + "downloadSeconds": 0.062677313 }, { - "connectionEstablishedSeconds": 0.062268388, - "uploadSeconds": 8.54e-7, - "downloadSeconds": 0.060703616 + "connectionEstablishedSeconds": 0.064385851, + "uploadSeconds": 0.000001936, + "downloadSeconds": 0.062727898 }, { - "connectionEstablishedSeconds": 0.06514159, - "uploadSeconds": 0.000001883, - "downloadSeconds": 0.063407356 + "connectionEstablishedSeconds": 0.065793443, + "uploadSeconds": 0.000001956, + "downloadSeconds": 0.063929008 }, { - "connectionEstablishedSeconds": 0.06609423, - "uploadSeconds": 0.000001916, - "downloadSeconds": 0.06438571 + "connectionEstablishedSeconds": 0.066344564, + "uploadSeconds": 0.00000192, + "downloadSeconds": 0.064569483 }, { - "connectionEstablishedSeconds": 0.06248634, - "uploadSeconds": 0.000001957, - "downloadSeconds": 0.060845688 + "connectionEstablishedSeconds": 0.062830475, + "uploadSeconds": 8.33e-7, + "downloadSeconds": 0.061086429 }, { - "connectionEstablishedSeconds": 0.059670474, - "uploadSeconds": 0.000001877, - "downloadSeconds": 0.058048044 + "connectionEstablishedSeconds": 0.065549432, + "uploadSeconds": 8.63e-7, + "downloadSeconds": 0.063729053 }, { - "connectionEstablishedSeconds": 0.064270199, - "uploadSeconds": 0.000001983, - "downloadSeconds": 0.062635036 + "connectionEstablishedSeconds": 0.065623979, + "uploadSeconds": 0.000001908, + "downloadSeconds": 0.063840254 }, { - "connectionEstablishedSeconds": 0.06429604, - "uploadSeconds": 7.7e-7, - "downloadSeconds": 0.062659615 + "connectionEstablishedSeconds": 0.06697079, + "uploadSeconds": 0.000002078, + "downloadSeconds": 0.065105928 }, { - "connectionEstablishedSeconds": 0.064919854, - "uploadSeconds": 0.000001919, - "downloadSeconds": 0.063192498 + "connectionEstablishedSeconds": 0.061487976, + "uploadSeconds": 0.00000194, + "downloadSeconds": 0.059726731 }, { - "connectionEstablishedSeconds": 0.065954302, - "uploadSeconds": 0.00000183, - "downloadSeconds": 0.064251883 + "connectionEstablishedSeconds": 0.066287254, + "uploadSeconds": 7.57e-7, + "downloadSeconds": 0.064530959 }, { - "connectionEstablishedSeconds": 0.064098869, - "uploadSeconds": 7.44e-7, - "downloadSeconds": 0.062482036 + "connectionEstablishedSeconds": 0.061716118, + "uploadSeconds": 0.000001937, + "downloadSeconds": 0.060018561 }, { - "connectionEstablishedSeconds": 0.062022221, - "uploadSeconds": 8.36e-7, - "downloadSeconds": 0.060461973 + "connectionEstablishedSeconds": 0.064844711, + "uploadSeconds": 8.28e-7, + "downloadSeconds": 0.063176451 }, { - "connectionEstablishedSeconds": 0.064627862, - "uploadSeconds": 0.000001859, - "downloadSeconds": 0.062912864 + "connectionEstablishedSeconds": 0.063681467, + "uploadSeconds": 8.39e-7, + "downloadSeconds": 0.062491939 }, { - "connectionEstablishedSeconds": 0.066653299, - "uploadSeconds": 7.84e-7, - "downloadSeconds": 0.065027545 + "connectionEstablishedSeconds": 0.066033579, + "uploadSeconds": 8.39e-7, + "downloadSeconds": 0.064329757 }, { - "connectionEstablishedSeconds": 0.063758312, - "uploadSeconds": 0.000001955, - "downloadSeconds": 0.061661263 + "connectionEstablishedSeconds": 0.064841555, + "uploadSeconds": 0.000002079, + "downloadSeconds": 0.063022891 }, { - "connectionEstablishedSeconds": 0.065877464, - "uploadSeconds": 0.000002, - "downloadSeconds": 0.06417309 + "connectionEstablishedSeconds": 0.063232988, + "uploadSeconds": 0.000002007, + "downloadSeconds": 0.061574144 }, { - "connectionEstablishedSeconds": 0.064380299, - "uploadSeconds": 8.84e-7, - "downloadSeconds": 0.062695264 + "connectionEstablishedSeconds": 0.064933807, + "uploadSeconds": 7.77e-7, + "downloadSeconds": 0.063233226 }, { - "connectionEstablishedSeconds": 0.066849312, - "uploadSeconds": 0.000001934, - "downloadSeconds": 0.06515325 + "connectionEstablishedSeconds": 0.06560355, + "uploadSeconds": 0.000001879, + "downloadSeconds": 0.063885974 }, { - "connectionEstablishedSeconds": 0.065114281, - "uploadSeconds": 8.7e-7, - "downloadSeconds": 0.063618019 + "connectionEstablishedSeconds": 0.063048478, + "uploadSeconds": 0.000001966, + "downloadSeconds": 0.061247689 }, { - "connectionEstablishedSeconds": 0.060301618, - "uploadSeconds": 8.29e-7, - "downloadSeconds": 0.058627961 + "connectionEstablishedSeconds": 0.065530419, + "uploadSeconds": 8.58e-7, + "downloadSeconds": 0.063799359 }, { - "connectionEstablishedSeconds": 0.061927104, - "uploadSeconds": 0.000001807, - "downloadSeconds": 0.060320047 + "connectionEstablishedSeconds": 0.062577659, + "uploadSeconds": 0.00000197, + "downloadSeconds": 0.060871138 }, { - "connectionEstablishedSeconds": 0.061410291, - "uploadSeconds": 7.8e-7, - "downloadSeconds": 0.059774255 + "connectionEstablishedSeconds": 0.064430476, + "uploadSeconds": 0.000001943, + "downloadSeconds": 0.062624132 }, { - "connectionEstablishedSeconds": 0.060291912, - "uploadSeconds": 0.000001748, - "downloadSeconds": 0.058655747 + "connectionEstablishedSeconds": 0.065087049, + "uploadSeconds": 0.000001941, + "downloadSeconds": 0.063500727 }, { - "connectionEstablishedSeconds": 0.064003172, - "uploadSeconds": 0.0000019, - "downloadSeconds": 0.062414151 + "connectionEstablishedSeconds": 0.064993479, + "uploadSeconds": 8.5e-7, + "downloadSeconds": 0.063395202 }, { - "connectionEstablishedSeconds": 0.062299025, - "uploadSeconds": 0.000001929, - "downloadSeconds": 0.060600816 + "connectionEstablishedSeconds": 0.065235155, + "uploadSeconds": 0.000002207, + "downloadSeconds": 0.063520117 }, { - "connectionEstablishedSeconds": 0.063780385, - "uploadSeconds": 0.000001764, - "downloadSeconds": 0.062150151 + "connectionEstablishedSeconds": 0.061144848, + "uploadSeconds": 0.000001996, + "downloadSeconds": 0.059348959 }, { - "connectionEstablishedSeconds": 0.064086724, - "uploadSeconds": 0.000001943, - "downloadSeconds": 0.062438543 + "connectionEstablishedSeconds": 0.065986763, + "uploadSeconds": 0.000001828, + "downloadSeconds": 0.063752895 }, { - "connectionEstablishedSeconds": 0.061971952, - "uploadSeconds": 7.16e-7, - "downloadSeconds": 0.060368773 + "connectionEstablishedSeconds": 0.065123685, + "uploadSeconds": 0.000001874, + "downloadSeconds": 0.063437157 }, { - "connectionEstablishedSeconds": 0.063038818, - "uploadSeconds": 0.000001832, - "downloadSeconds": 0.06087449 + "connectionEstablishedSeconds": 0.065245189, + "uploadSeconds": 0.000001856, + "downloadSeconds": 0.063451093 }, { - "connectionEstablishedSeconds": 0.066742315, - "uploadSeconds": 0.00000196, - "downloadSeconds": 0.065181044 + "connectionEstablishedSeconds": 0.063450695, + "uploadSeconds": 8.74e-7, + "downloadSeconds": 0.06175543 }, { - "connectionEstablishedSeconds": 0.065213307, - "uploadSeconds": 0.000001839, - "downloadSeconds": 0.063552711 + "connectionEstablishedSeconds": 0.06624405, + "uploadSeconds": 7.93e-7, + "downloadSeconds": 0.064463587 }, { - "connectionEstablishedSeconds": 0.061494505, - "uploadSeconds": 7.04e-7, - "downloadSeconds": 0.059872531 + "connectionEstablishedSeconds": 0.06214795, + "uploadSeconds": 7.65e-7, + "downloadSeconds": 0.060482684 }, { - "connectionEstablishedSeconds": 0.061478888, - "uploadSeconds": 0.000001866, - "downloadSeconds": 0.059847426 + "connectionEstablishedSeconds": 0.065562946, + "uploadSeconds": 0.000001159, + "downloadSeconds": 0.063926501 }, { - "connectionEstablishedSeconds": 0.06497519, - "uploadSeconds": 0.000001808, - "downloadSeconds": 0.06337211 + "connectionEstablishedSeconds": 0.066338614, + "uploadSeconds": 8.64e-7, + "downloadSeconds": 0.064582208 }, { - "connectionEstablishedSeconds": 0.065036928, - "uploadSeconds": 0.000001851, - "downloadSeconds": 0.063292299 + "connectionEstablishedSeconds": 0.066080194, + "uploadSeconds": 0.000001938, + "downloadSeconds": 0.064387893 }, { - "connectionEstablishedSeconds": 0.06468815, - "uploadSeconds": 0.000001992, - "downloadSeconds": 0.063006364 + "connectionEstablishedSeconds": 0.062753116, + "uploadSeconds": 0.000001749, + "downloadSeconds": 0.060966769 }, { - "connectionEstablishedSeconds": 0.06523528, - "uploadSeconds": 0.000001856, - "downloadSeconds": 0.063706587 + "connectionEstablishedSeconds": 0.06670096, + "uploadSeconds": 0.000002136, + "downloadSeconds": 0.065015137 }, { - "connectionEstablishedSeconds": 0.064295975, - "uploadSeconds": 0.000001796, - "downloadSeconds": 0.062484971 + "connectionEstablishedSeconds": 0.065191127, + "uploadSeconds": 0.000001907, + "downloadSeconds": 0.063967922 }, { - "connectionEstablishedSeconds": 0.061726106, - "uploadSeconds": 8.4e-7, - "downloadSeconds": 0.060078095 + "connectionEstablishedSeconds": 0.062696817, + "uploadSeconds": 0.000001903, + "downloadSeconds": 0.060870225 }, { - "connectionEstablishedSeconds": 0.062668852, - "uploadSeconds": 0.00000191, - "downloadSeconds": 0.060334766 + "connectionEstablishedSeconds": 0.06248965, + "uploadSeconds": 0.000001821, + "downloadSeconds": 0.060678251 }, { - "connectionEstablishedSeconds": 0.064838194, - "uploadSeconds": 0.00000196, - "downloadSeconds": 0.063181639 + "connectionEstablishedSeconds": 0.062654457, + "uploadSeconds": 8.81e-7, + "downloadSeconds": 0.060962527 }, { - "connectionEstablishedSeconds": 0.06429928, - "uploadSeconds": 0.000001752, - "downloadSeconds": 0.062645255 + "connectionEstablishedSeconds": 0.064268986, + "uploadSeconds": 7.85e-7, + "downloadSeconds": 0.062495117 }, { - "connectionEstablishedSeconds": 0.059668224, - "uploadSeconds": 0.000001862, - "downloadSeconds": 0.058021052 + "connectionEstablishedSeconds": 0.063733813, + "uploadSeconds": 0.000001807, + "downloadSeconds": 0.062112064 }, { - "connectionEstablishedSeconds": 0.06296264, - "uploadSeconds": 0.000001912, - "downloadSeconds": 0.061298395 + "connectionEstablishedSeconds": 0.065260619, + "uploadSeconds": 0.000001884, + "downloadSeconds": 0.063585493 }, { - "connectionEstablishedSeconds": 0.059958842, - "uploadSeconds": 0.000001862, - "downloadSeconds": 0.058318696 + "connectionEstablishedSeconds": 0.065842262, + "uploadSeconds": 0.000001853, + "downloadSeconds": 0.064176502 }, { - "connectionEstablishedSeconds": 0.063492431, - "uploadSeconds": 7.18e-7, - "downloadSeconds": 0.06173307 + "connectionEstablishedSeconds": 0.060294876, + "uploadSeconds": 0.000001912, + "downloadSeconds": 0.058585692 }, { - "connectionEstablishedSeconds": 0.06592515, - "uploadSeconds": 0.00000176, - "downloadSeconds": 0.064247585 + "connectionEstablishedSeconds": 0.066388657, + "uploadSeconds": 0.000001224, + "downloadSeconds": 0.064721512 }, { - "connectionEstablishedSeconds": 0.064512627, - "uploadSeconds": 0.000001836, - "downloadSeconds": 0.062787141 + "connectionEstablishedSeconds": 0.064995086, + "uploadSeconds": 7.62e-7, + "downloadSeconds": 0.063261543 }, { - "connectionEstablishedSeconds": 0.063431219, - "uploadSeconds": 7.89e-7, - "downloadSeconds": 0.061738575 + "connectionEstablishedSeconds": 0.065398433, + "uploadSeconds": 0.000001887, + "downloadSeconds": 0.062779168 }, { - "connectionEstablishedSeconds": 0.062946175, - "uploadSeconds": 7.77e-7, - "downloadSeconds": 0.061326043 + "connectionEstablishedSeconds": 0.064685915, + "uploadSeconds": 8.09e-7, + "downloadSeconds": 0.062934946 }, { - "connectionEstablishedSeconds": 0.063931168, - "uploadSeconds": 7.83e-7, - "downloadSeconds": 0.062336508 + "connectionEstablishedSeconds": 0.0652299, + "uploadSeconds": 0.000001814, + "downloadSeconds": 0.063376032 }, { - "connectionEstablishedSeconds": 0.062151404, - "uploadSeconds": 0.000001791, - "downloadSeconds": 0.059868496 + "connectionEstablishedSeconds": 0.06176216, + "uploadSeconds": 0.0000019, + "downloadSeconds": 0.059977637 }, { - "connectionEstablishedSeconds": 0.062883368, - "uploadSeconds": 7.56e-7, - "downloadSeconds": 0.061280069 + "connectionEstablishedSeconds": 0.062917191, + "uploadSeconds": 7.77e-7, + "downloadSeconds": 0.061358745 }, { - "connectionEstablishedSeconds": 0.064648947, - "uploadSeconds": 0.000001843, - "downloadSeconds": 0.063037667 + "connectionEstablishedSeconds": 0.064894281, + "uploadSeconds": 0.000001035, + "downloadSeconds": 0.063349511 }, { - "connectionEstablishedSeconds": 0.060729236, - "uploadSeconds": 7.3e-7, - "downloadSeconds": 0.059125773 + "connectionEstablishedSeconds": 0.066701458, + "uploadSeconds": 0.000001984, + "downloadSeconds": 0.064929288 }, { - "connectionEstablishedSeconds": 0.063317758, - "uploadSeconds": 0.000001834, - "downloadSeconds": 0.061730434 + "connectionEstablishedSeconds": 0.065497067, + "uploadSeconds": 0.000001976, + "downloadSeconds": 0.063766971 }, { - "connectionEstablishedSeconds": 0.066656664, - "uploadSeconds": 7.91e-7, - "downloadSeconds": 0.064998067 + "connectionEstablishedSeconds": 0.065137242, + "uploadSeconds": 0.000001867, + "downloadSeconds": 0.063424394 }, { - "connectionEstablishedSeconds": 0.06258373, - "uploadSeconds": 0.000002, - "downloadSeconds": 0.060890619 + "connectionEstablishedSeconds": 0.063138487, + "uploadSeconds": 0.000001986, + "downloadSeconds": 0.061429917 }, { - "connectionEstablishedSeconds": 0.06319078, - "uploadSeconds": 6.89e-7, - "downloadSeconds": 0.061459901 + "connectionEstablishedSeconds": 0.064407804, + "uploadSeconds": 0.000001982, + "downloadSeconds": 0.06268847 }, { - "connectionEstablishedSeconds": 0.064543424, - "uploadSeconds": 0.000001756, - "downloadSeconds": 0.063178255 + "connectionEstablishedSeconds": 0.065795651, + "uploadSeconds": 8.68e-7, + "downloadSeconds": 0.064334815 }, { - "connectionEstablishedSeconds": 0.062345482, - "uploadSeconds": 0.000001939, - "downloadSeconds": 0.060653297 + "connectionEstablishedSeconds": 0.064823516, + "uploadSeconds": 0.000001927, + "downloadSeconds": 0.06300212 }, { - "connectionEstablishedSeconds": 0.061808393, - "uploadSeconds": 0.000001924, - "downloadSeconds": 0.060171952 + "connectionEstablishedSeconds": 0.065963804, + "uploadSeconds": 7.9e-7, + "downloadSeconds": 0.064829289 }, { - "connectionEstablishedSeconds": 0.065829336, - "uploadSeconds": 0.000001791, - "downloadSeconds": 0.064152923 + "connectionEstablishedSeconds": 0.064067047, + "uploadSeconds": 0.000001943, + "downloadSeconds": 0.062424641 }, { - "connectionEstablishedSeconds": 0.061952759, - "uploadSeconds": 0.000001878, - "downloadSeconds": 0.060281317 + "connectionEstablishedSeconds": 0.0659525, + "uploadSeconds": 0.000001998, + "downloadSeconds": 0.064430986 }, { - "connectionEstablishedSeconds": 0.064850571, - "uploadSeconds": 0.000001778, - "downloadSeconds": 0.063198825 + "connectionEstablishedSeconds": 0.062982117, + "uploadSeconds": 8.93e-7, + "downloadSeconds": 0.061279518 }, { - "connectionEstablishedSeconds": 0.063476523, - "uploadSeconds": 7.43e-7, - "downloadSeconds": 0.061770307 + "connectionEstablishedSeconds": 0.065117546, + "uploadSeconds": 8.01e-7, + "downloadSeconds": 0.063463914 }, { - "connectionEstablishedSeconds": 0.066471319, - "uploadSeconds": 8.72e-7, - "downloadSeconds": 0.064391845 + "connectionEstablishedSeconds": 0.062436406, + "uploadSeconds": 0.000002008, + "downloadSeconds": 0.060670593 }, { - "connectionEstablishedSeconds": 0.064264771, - "uploadSeconds": 0.000001808, - "downloadSeconds": 0.062746709 + "connectionEstablishedSeconds": 0.065396799, + "uploadSeconds": 0.000001992, + "downloadSeconds": 0.06381817 }, { - "connectionEstablishedSeconds": 0.063894644, - "uploadSeconds": 7.2e-7, - "downloadSeconds": 0.062251002 + "connectionEstablishedSeconds": 0.065378427, + "uploadSeconds": 0.000001825, + "downloadSeconds": 0.063600177 }, { - "connectionEstablishedSeconds": 0.063922439, - "uploadSeconds": 0.000001856, - "downloadSeconds": 0.062219476 + "connectionEstablishedSeconds": 0.062197303, + "uploadSeconds": 0.000001965, + "downloadSeconds": 0.060437046 }, { - "connectionEstablishedSeconds": 0.066209402, - "uploadSeconds": 7.94e-7, - "downloadSeconds": 0.064478021 + "connectionEstablishedSeconds": 0.066848549, + "uploadSeconds": 9.25e-7, + "downloadSeconds": 0.065111064 }, { - "connectionEstablishedSeconds": 0.063985061, - "uploadSeconds": 8.04e-7, - "downloadSeconds": 0.062304085 + "connectionEstablishedSeconds": 0.066892128, + "uploadSeconds": 8.49e-7, + "downloadSeconds": 0.065136432 }, { - "connectionEstablishedSeconds": 0.062835992, - "uploadSeconds": 8.01e-7, - "downloadSeconds": 0.061305266 + "connectionEstablishedSeconds": 0.063533068, + "uploadSeconds": 0.000001934, + "downloadSeconds": 0.061806919 }, { - "connectionEstablishedSeconds": 0.061206315, - "uploadSeconds": 0.000001983, - "downloadSeconds": 0.059519765 + "connectionEstablishedSeconds": 0.065851953, + "uploadSeconds": 0.000001829, + "downloadSeconds": 0.064120925 }, { - "connectionEstablishedSeconds": 0.063490488, - "uploadSeconds": 0.000001799, - "downloadSeconds": 0.06185446 + "connectionEstablishedSeconds": 0.06636729, + "uploadSeconds": 0.000001922, + "downloadSeconds": 0.064636105 }, { - "connectionEstablishedSeconds": 0.062635641, - "uploadSeconds": 0.00000199, - "downloadSeconds": 0.060952837 + "connectionEstablishedSeconds": 0.063609689, + "uploadSeconds": 9.22e-7, + "downloadSeconds": 0.061941316 }, { - "connectionEstablishedSeconds": 0.065738211, - "uploadSeconds": 0.000001799, - "downloadSeconds": 0.064081999 + "connectionEstablishedSeconds": 0.066131632, + "uploadSeconds": 8.55e-7, + "downloadSeconds": 0.06437746 }, { - "connectionEstablishedSeconds": 0.063443249, - "uploadSeconds": 0.000001864, - "downloadSeconds": 0.061807711 + "connectionEstablishedSeconds": 0.064215882, + "uploadSeconds": 0.000001915, + "downloadSeconds": 0.062532476 }, { - "connectionEstablishedSeconds": 0.062892786, - "uploadSeconds": 0.000001823, - "downloadSeconds": 0.061237758 + "connectionEstablishedSeconds": 0.063644923, + "uploadSeconds": 0.000001938, + "downloadSeconds": 0.060830741 }, { - "connectionEstablishedSeconds": 0.063952929, - "uploadSeconds": 0.000001745, - "downloadSeconds": 0.062293249 + "connectionEstablishedSeconds": 0.063732836, + "uploadSeconds": 0.000001884, + "downloadSeconds": 0.061946688 }, { - "connectionEstablishedSeconds": 0.06369205, - "uploadSeconds": 7.4e-7, - "downloadSeconds": 0.06221562 + "connectionEstablishedSeconds": 0.066034355, + "uploadSeconds": 0.000001708, + "downloadSeconds": 0.0643128 } ], "implementation": "quic-go", @@ -982,504 +982,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.124145125, - "uploadSeconds": 0.061859659, - "downloadSeconds": 0.061728155 + "connectionEstablishedSeconds": 0.12890574, + "uploadSeconds": 0.064234944, + "downloadSeconds": 0.064077181 }, { - "connectionEstablishedSeconds": 0.125843822, - "uploadSeconds": 0.062567003, - "downloadSeconds": 0.062580374 + "connectionEstablishedSeconds": 0.123666368, + "uploadSeconds": 0.06144532, + "downloadSeconds": 0.061441703 }, { - "connectionEstablishedSeconds": 0.128356336, - "uploadSeconds": 0.063803389, - "downloadSeconds": 0.06394792 + "connectionEstablishedSeconds": 0.129268658, + "uploadSeconds": 0.064259392, + "downloadSeconds": 0.064232697 }, { - "connectionEstablishedSeconds": 0.125477543, - "uploadSeconds": 0.062407752, - "downloadSeconds": 0.062384645 + "connectionEstablishedSeconds": 0.127924895, + "uploadSeconds": 0.063625281, + "downloadSeconds": 0.063605948 }, { - "connectionEstablishedSeconds": 0.121965219, - "uploadSeconds": 0.060644372, - "downloadSeconds": 0.060629723 + "connectionEstablishedSeconds": 0.126165285, + "uploadSeconds": 0.062710021, + "downloadSeconds": 0.062744639 }, { - "connectionEstablishedSeconds": 0.123418626, - "uploadSeconds": 0.061339105, - "downloadSeconds": 0.061357789 + "connectionEstablishedSeconds": 0.125455033, + "uploadSeconds": 0.062406175, + "downloadSeconds": 0.06237357 }, { - "connectionEstablishedSeconds": 0.12581403, - "uploadSeconds": 0.062546744, - "downloadSeconds": 0.062553167 + "connectionEstablishedSeconds": 0.130679247, + "uploadSeconds": 0.064931164, + "downloadSeconds": 0.065014193 }, { - "connectionEstablishedSeconds": 0.124444099, - "uploadSeconds": 0.061550699, - "downloadSeconds": 0.061594448 + "connectionEstablishedSeconds": 0.118667532, + "uploadSeconds": 0.058958126, + "downloadSeconds": 0.058990372 }, { - "connectionEstablishedSeconds": 0.126029087, - "uploadSeconds": 0.06264191, - "downloadSeconds": 0.062662179 + "connectionEstablishedSeconds": 0.128856956, + "uploadSeconds": 0.064054102, + "downloadSeconds": 0.064101849 }, { - "connectionEstablishedSeconds": 0.12795165, - "uploadSeconds": 0.063613922, - "downloadSeconds": 0.063630625 + "connectionEstablishedSeconds": 0.127606227, + "uploadSeconds": 0.063461964, + "downloadSeconds": 0.063486288 }, { - "connectionEstablishedSeconds": 0.125703903, - "uploadSeconds": 0.062461812, - "downloadSeconds": 0.062475161 + "connectionEstablishedSeconds": 0.119437378, + "uploadSeconds": 0.059492119, + "downloadSeconds": 0.05941957 }, { - "connectionEstablishedSeconds": 0.125912662, - "uploadSeconds": 0.062574314, - "downloadSeconds": 0.062594162 + "connectionEstablishedSeconds": 0.124138498, + "uploadSeconds": 0.061714219, + "downloadSeconds": 0.061673285 }, { - "connectionEstablishedSeconds": 0.124266318, - "uploadSeconds": 0.061767835, - "downloadSeconds": 0.061794058 + "connectionEstablishedSeconds": 0.129222748, + "uploadSeconds": 0.064260759, + "downloadSeconds": 0.06430083 }, { - "connectionEstablishedSeconds": 0.122011611, - "uploadSeconds": 0.060626943, - "downloadSeconds": 0.060894199 + "connectionEstablishedSeconds": 0.125269156, + "uploadSeconds": 0.062145234, + "downloadSeconds": 0.062231168 }, { - "connectionEstablishedSeconds": 0.122673098, - "uploadSeconds": 0.060966735, - "downloadSeconds": 0.061010991 + "connectionEstablishedSeconds": 0.124394051, + "uploadSeconds": 0.061821911, + "downloadSeconds": 0.061863613 }, { - "connectionEstablishedSeconds": 0.124042209, - "uploadSeconds": 0.061603136, - "downloadSeconds": 0.061670242 + "connectionEstablishedSeconds": 0.126723226, + "uploadSeconds": 0.062997038, + "downloadSeconds": 0.063023762 }, { - "connectionEstablishedSeconds": 0.119048947, - "uploadSeconds": 0.058947587, - "downloadSeconds": 0.059002538 + "connectionEstablishedSeconds": 0.128021564, + "uploadSeconds": 0.063460744, + "downloadSeconds": 0.063511776 }, { - "connectionEstablishedSeconds": 0.128934417, - "uploadSeconds": 0.064095484, - "downloadSeconds": 0.064128754 + "connectionEstablishedSeconds": 0.12773778, + "uploadSeconds": 0.063448123, + "downloadSeconds": 0.06349057 }, { - "connectionEstablishedSeconds": 0.122362305, - "uploadSeconds": 0.060785743, - "downloadSeconds": 0.060800834 + "connectionEstablishedSeconds": 0.126872286, + "uploadSeconds": 0.063037982, + "downloadSeconds": 0.063093935 }, { - "connectionEstablishedSeconds": 0.121230527, - "uploadSeconds": 0.060245036, - "downloadSeconds": 0.060381548 + "connectionEstablishedSeconds": 0.123476483, + "uploadSeconds": 0.061382576, + "downloadSeconds": 0.061395165 }, { - "connectionEstablishedSeconds": 0.124992226, - "uploadSeconds": 0.062181934, - "downloadSeconds": 0.06209275 + "connectionEstablishedSeconds": 0.128140827, + "uploadSeconds": 0.063684825, + "downloadSeconds": 0.063828771 }, { - "connectionEstablishedSeconds": 0.127526691, - "uploadSeconds": 0.063399351, - "downloadSeconds": 0.063405159 + "connectionEstablishedSeconds": 0.123338245, + "uploadSeconds": 0.061279922, + "downloadSeconds": 0.061289205 }, { - "connectionEstablishedSeconds": 0.124249699, - "uploadSeconds": 0.061870978, - "downloadSeconds": 0.061780321 + "connectionEstablishedSeconds": 0.124056083, + "uploadSeconds": 0.061649497, + "downloadSeconds": 0.061711477 }, { - "connectionEstablishedSeconds": 0.126347503, - "uploadSeconds": 0.062858753, - "downloadSeconds": 0.062814028 + "connectionEstablishedSeconds": 0.127936406, + "uploadSeconds": 0.063595593, + "downloadSeconds": 0.063629585 }, { - "connectionEstablishedSeconds": 0.11682585, - "uploadSeconds": 0.058026417, - "downloadSeconds": 0.058059279 + "connectionEstablishedSeconds": 0.123247794, + "uploadSeconds": 0.061233624, + "downloadSeconds": 0.061263316 }, { - "connectionEstablishedSeconds": 0.122583849, - "uploadSeconds": 0.060917102, - "downloadSeconds": 0.060954055 + "connectionEstablishedSeconds": 0.121794273, + "uploadSeconds": 0.060511801, + "downloadSeconds": 0.060624242 }, { - "connectionEstablishedSeconds": 0.123544343, - "uploadSeconds": 0.06142371, - "downloadSeconds": 0.061420304 + "connectionEstablishedSeconds": 0.127386558, + "uploadSeconds": 0.063249047, + "downloadSeconds": 0.063317881 }, { - "connectionEstablishedSeconds": 0.12710688, - "uploadSeconds": 0.063145252, - "downloadSeconds": 0.063224586 + "connectionEstablishedSeconds": 0.129265951, + "uploadSeconds": 0.064265895, + "downloadSeconds": 0.064397965 }, { - "connectionEstablishedSeconds": 0.127842154, - "uploadSeconds": 0.063501412, - "downloadSeconds": 0.063566842 + "connectionEstablishedSeconds": 0.123841345, + "uploadSeconds": 0.061519427, + "downloadSeconds": 0.061568687 }, { - "connectionEstablishedSeconds": 0.123062881, - "uploadSeconds": 0.061182822, - "downloadSeconds": 0.061162174 + "connectionEstablishedSeconds": 0.129677907, + "uploadSeconds": 0.06445228, + "downloadSeconds": 0.064479643 }, { - "connectionEstablishedSeconds": 0.12615966, - "uploadSeconds": 0.062682485, - "downloadSeconds": 0.062684356 + "connectionEstablishedSeconds": 0.122579899, + "uploadSeconds": 0.060907635, + "downloadSeconds": 0.060942285 }, { - "connectionEstablishedSeconds": 0.120560034, - "uploadSeconds": 0.059891731, - "downloadSeconds": 0.059905717 + "connectionEstablishedSeconds": 0.124209834, + "uploadSeconds": 0.061721528, + "downloadSeconds": 0.061738801 }, { - "connectionEstablishedSeconds": 0.120055808, - "uploadSeconds": 0.059680657, - "downloadSeconds": 0.059689754 + "connectionEstablishedSeconds": 0.126179737, + "uploadSeconds": 0.062663006, + "downloadSeconds": 0.062718067 }, { - "connectionEstablishedSeconds": 0.117916772, - "uploadSeconds": 0.058567597, - "downloadSeconds": 0.058605824 + "connectionEstablishedSeconds": 0.120286079, + "uploadSeconds": 0.059710579, + "downloadSeconds": 0.059754437 }, { - "connectionEstablishedSeconds": 0.124189356, - "uploadSeconds": 0.061700699, - "downloadSeconds": 0.061744668 + "connectionEstablishedSeconds": 0.128902775, + "uploadSeconds": 0.064057795, + "downloadSeconds": 0.0641045 }, { - "connectionEstablishedSeconds": 0.122986734, - "uploadSeconds": 0.061131076, - "downloadSeconds": 0.061157656 + "connectionEstablishedSeconds": 0.12501096, + "uploadSeconds": 0.06211691, + "downloadSeconds": 0.062130498 }, { - "connectionEstablishedSeconds": 0.123495903, - "uploadSeconds": 0.061318598, - "downloadSeconds": 0.061348062 + "connectionEstablishedSeconds": 0.125588205, + "uploadSeconds": 0.062423772, + "downloadSeconds": 0.062548054 }, { - "connectionEstablishedSeconds": 0.11902555, - "uploadSeconds": 0.059132276, - "downloadSeconds": 0.05916622 + "connectionEstablishedSeconds": 0.127045386, + "uploadSeconds": 0.063157894, + "downloadSeconds": 0.06322661 }, { - "connectionEstablishedSeconds": 0.128687472, - "uploadSeconds": 0.064000216, - "downloadSeconds": 0.063988446 + "connectionEstablishedSeconds": 0.12536339, + "uploadSeconds": 0.062324403, + "downloadSeconds": 0.062349488 }, { - "connectionEstablishedSeconds": 0.121696737, - "uploadSeconds": 0.060479899, - "downloadSeconds": 0.060491725 + "connectionEstablishedSeconds": 0.124130694, + "uploadSeconds": 0.06169533, + "downloadSeconds": 0.061743995 }, { - "connectionEstablishedSeconds": 0.12475878, - "uploadSeconds": 0.062033193, - "downloadSeconds": 0.062057929 + "connectionEstablishedSeconds": 0.12162633, + "uploadSeconds": 0.060141065, + "downloadSeconds": 0.060204186 }, { - "connectionEstablishedSeconds": 0.128872156, - "uploadSeconds": 0.06408639, - "downloadSeconds": 0.064089976 + "connectionEstablishedSeconds": 0.125090977, + "uploadSeconds": 0.062147681, + "downloadSeconds": 0.062210098 }, { - "connectionEstablishedSeconds": 0.121594455, - "uploadSeconds": 0.06041272, - "downloadSeconds": 0.060461311 + "connectionEstablishedSeconds": 0.118105467, + "uploadSeconds": 0.058706731, + "downloadSeconds": 0.058756401 }, { - "connectionEstablishedSeconds": 0.124767425, - "uploadSeconds": 0.062014862, - "downloadSeconds": 0.062043844 + "connectionEstablishedSeconds": 0.123878404, + "uploadSeconds": 0.061560572, + "downloadSeconds": 0.061614152 }, { - "connectionEstablishedSeconds": 0.126761906, - "uploadSeconds": 0.062920659, - "downloadSeconds": 0.062972128 + "connectionEstablishedSeconds": 0.124496523, + "uploadSeconds": 0.061845435, + "downloadSeconds": 0.061903011 }, { - "connectionEstablishedSeconds": 0.124931648, - "uploadSeconds": 0.062079875, - "downloadSeconds": 0.062108369 + "connectionEstablishedSeconds": 0.12443545, + "uploadSeconds": 0.061831566, + "downloadSeconds": 0.061893016 }, { - "connectionEstablishedSeconds": 0.122642546, - "uploadSeconds": 0.060930495, - "downloadSeconds": 0.060985003 + "connectionEstablishedSeconds": 0.123151719, + "uploadSeconds": 0.061200232, + "downloadSeconds": 0.061242368 }, { - "connectionEstablishedSeconds": 0.127321614, - "uploadSeconds": 0.063321951, - "downloadSeconds": 0.06330981 + "connectionEstablishedSeconds": 0.128504905, + "uploadSeconds": 0.0639307, + "downloadSeconds": 0.063969831 }, { - "connectionEstablishedSeconds": 0.126709211, - "uploadSeconds": 0.062986201, - "downloadSeconds": 0.063011283 + "connectionEstablishedSeconds": 0.126148904, + "uploadSeconds": 0.062676269, + "downloadSeconds": 0.062754341 }, { - "connectionEstablishedSeconds": 0.127663243, - "uploadSeconds": 0.063264135, - "downloadSeconds": 0.063304528 + "connectionEstablishedSeconds": 0.123028749, + "uploadSeconds": 0.061168186, + "downloadSeconds": 0.061328432 }, { - "connectionEstablishedSeconds": 0.120960863, - "uploadSeconds": 0.060081181, - "downloadSeconds": 0.060120516 + "connectionEstablishedSeconds": 0.119122662, + "uploadSeconds": 0.059129282, + "downloadSeconds": 0.059176153 }, { - "connectionEstablishedSeconds": 0.123381844, - "uploadSeconds": 0.061365268, - "downloadSeconds": 0.061315441 + "connectionEstablishedSeconds": 0.127636204, + "uploadSeconds": 0.063429603, + "downloadSeconds": 0.063485914 }, { - "connectionEstablishedSeconds": 0.128545917, - "uploadSeconds": 0.063891788, - "downloadSeconds": 0.06394697 + "connectionEstablishedSeconds": 0.127539638, + "uploadSeconds": 0.0633655, + "downloadSeconds": 0.063407649 }, { - "connectionEstablishedSeconds": 0.117939599, - "uploadSeconds": 0.058599891, - "downloadSeconds": 0.058641942 + "connectionEstablishedSeconds": 0.124085235, + "uploadSeconds": 0.061666285, + "downloadSeconds": 0.061769771 }, { - "connectionEstablishedSeconds": 0.119184747, - "uploadSeconds": 0.059090548, - "downloadSeconds": 0.059103432 + "connectionEstablishedSeconds": 0.126051378, + "uploadSeconds": 0.06264114, + "downloadSeconds": 0.062682767 }, { - "connectionEstablishedSeconds": 0.119225496, - "uploadSeconds": 0.05922733, - "downloadSeconds": 0.059264784 + "connectionEstablishedSeconds": 0.121206208, + "uploadSeconds": 0.060259099, + "downloadSeconds": 0.060215874 }, { - "connectionEstablishedSeconds": 0.122905732, - "uploadSeconds": 0.061065736, - "downloadSeconds": 0.061151848 + "connectionEstablishedSeconds": 0.123315093, + "uploadSeconds": 0.061282075, + "downloadSeconds": 0.06129655 }, { - "connectionEstablishedSeconds": 0.125260299, - "uploadSeconds": 0.062258568, - "downloadSeconds": 0.062296567 + "connectionEstablishedSeconds": 0.124861246, + "uploadSeconds": 0.062037243, + "downloadSeconds": 0.062078911 }, { - "connectionEstablishedSeconds": 0.125666793, - "uploadSeconds": 0.06246034, - "downloadSeconds": 0.062490292 + "connectionEstablishedSeconds": 0.120254617, + "uploadSeconds": 0.059760296, + "downloadSeconds": 0.059818618 }, { - "connectionEstablishedSeconds": 0.130158543, - "uploadSeconds": 0.064693106, - "downloadSeconds": 0.06471281 + "connectionEstablishedSeconds": 0.126175648, + "uploadSeconds": 0.062650832, + "downloadSeconds": 0.06269929 }, { - "connectionEstablishedSeconds": 0.123926745, - "uploadSeconds": 0.061615685, - "downloadSeconds": 0.061623424 + "connectionEstablishedSeconds": 0.119165489, + "uploadSeconds": 0.059187281, + "downloadSeconds": 0.059384443 }, { - "connectionEstablishedSeconds": 0.12913928, - "uploadSeconds": 0.064184865, - "downloadSeconds": 0.064204226 + "connectionEstablishedSeconds": 0.127276105, + "uploadSeconds": 0.063267277, + "downloadSeconds": 0.063277402 }, { - "connectionEstablishedSeconds": 0.120888422, - "uploadSeconds": 0.060079159, - "downloadSeconds": 0.060075203 + "connectionEstablishedSeconds": 0.128078375, + "uploadSeconds": 0.063689218, + "downloadSeconds": 0.063717693 }, { - "connectionEstablishedSeconds": 0.121925559, - "uploadSeconds": 0.06058572, - "downloadSeconds": 0.060601655 + "connectionEstablishedSeconds": 0.130814074, + "uploadSeconds": 0.065013698, + "downloadSeconds": 0.065038194 }, { - "connectionEstablishedSeconds": 0.12744737, - "uploadSeconds": 0.063359326, - "downloadSeconds": 0.063369463 + "connectionEstablishedSeconds": 0.125699777, + "uploadSeconds": 0.062473144, + "downloadSeconds": 0.062501372 }, { - "connectionEstablishedSeconds": 0.121927453, - "uploadSeconds": 0.060578582, - "downloadSeconds": 0.060592778 + "connectionEstablishedSeconds": 0.127536867, + "uploadSeconds": 0.063443592, + "downloadSeconds": 0.063402855 }, { - "connectionEstablishedSeconds": 0.12108071, - "uploadSeconds": 0.060175648, - "downloadSeconds": 0.060614869 + "connectionEstablishedSeconds": 0.120001228, + "uploadSeconds": 0.059615536, + "downloadSeconds": 0.059700619 }, { - "connectionEstablishedSeconds": 0.127892119, - "uploadSeconds": 0.063587952, - "downloadSeconds": 0.063609969 + "connectionEstablishedSeconds": 0.124652579, + "uploadSeconds": 0.062025072, + "downloadSeconds": 0.061968964 }, { - "connectionEstablishedSeconds": 0.120905003, - "uploadSeconds": 0.060085677, - "downloadSeconds": 0.060124089 + "connectionEstablishedSeconds": 0.129308472, + "uploadSeconds": 0.064272732, + "downloadSeconds": 0.064343532 }, { - "connectionEstablishedSeconds": 0.120594857, - "uploadSeconds": 0.059925071, - "downloadSeconds": 0.059965372 + "connectionEstablishedSeconds": 0.121926007, + "uploadSeconds": 0.060601275, + "downloadSeconds": 0.060636989 }, { - "connectionEstablishedSeconds": 0.126257335, - "uploadSeconds": 0.062704273, - "downloadSeconds": 0.062742059 + "connectionEstablishedSeconds": 0.128084176, + "uploadSeconds": 0.063678326, + "downloadSeconds": 0.063726372 }, { - "connectionEstablishedSeconds": 0.125894135, - "uploadSeconds": 0.062578119, - "downloadSeconds": 0.062602191 + "connectionEstablishedSeconds": 0.127331445, + "uploadSeconds": 0.063229219, + "downloadSeconds": 0.063301032 }, { - "connectionEstablishedSeconds": 0.123692801, - "uploadSeconds": 0.061494169, - "downloadSeconds": 0.061509289 + "connectionEstablishedSeconds": 0.128604751, + "uploadSeconds": 0.063915006, + "downloadSeconds": 0.063960143 }, { - "connectionEstablishedSeconds": 0.125885482, - "uploadSeconds": 0.062573749, - "downloadSeconds": 0.062580884 + "connectionEstablishedSeconds": 0.12927236, + "uploadSeconds": 0.064247353, + "downloadSeconds": 0.064270362 }, { - "connectionEstablishedSeconds": 0.12775227, - "uploadSeconds": 0.063489935, - "downloadSeconds": 0.063545142 + "connectionEstablishedSeconds": 0.123154914, + "uploadSeconds": 0.06117626, + "downloadSeconds": 0.061225975 }, { - "connectionEstablishedSeconds": 0.124090919, - "uploadSeconds": 0.061676606, - "downloadSeconds": 0.061714668 + "connectionEstablishedSeconds": 0.1243586, + "uploadSeconds": 0.061846783, + "downloadSeconds": 0.061860297 }, { - "connectionEstablishedSeconds": 0.127768893, - "uploadSeconds": 0.063489949, - "downloadSeconds": 0.063512222 + "connectionEstablishedSeconds": 0.126006421, + "uploadSeconds": 0.062605494, + "downloadSeconds": 0.062678936 }, { - "connectionEstablishedSeconds": 0.121857213, - "uploadSeconds": 0.060515969, - "downloadSeconds": 0.060548248 + "connectionEstablishedSeconds": 0.122807399, + "uploadSeconds": 0.061034823, + "downloadSeconds": 0.061078398 }, { - "connectionEstablishedSeconds": 0.120858895, - "uploadSeconds": 0.059936957, - "downloadSeconds": 0.059978208 + "connectionEstablishedSeconds": 0.128105322, + "uploadSeconds": 0.063667657, + "downloadSeconds": 0.063743009 }, { - "connectionEstablishedSeconds": 0.125957099, - "uploadSeconds": 0.062588604, - "downloadSeconds": 0.062638697 + "connectionEstablishedSeconds": 0.123447944, + "uploadSeconds": 0.0614329, + "downloadSeconds": 0.061387349 }, { - "connectionEstablishedSeconds": 0.128928719, - "uploadSeconds": 0.064153287, - "downloadSeconds": 0.064156072 + "connectionEstablishedSeconds": 0.126163081, + "uploadSeconds": 0.062636708, + "downloadSeconds": 0.0626641 }, { - "connectionEstablishedSeconds": 0.123693096, - "uploadSeconds": 0.061581606, - "downloadSeconds": 0.061498676 + "connectionEstablishedSeconds": 0.124654643, + "uploadSeconds": 0.061948928, + "downloadSeconds": 0.061996041 }, { - "connectionEstablishedSeconds": 0.11974957, - "uploadSeconds": 0.059490641, - "downloadSeconds": 0.059520038 + "connectionEstablishedSeconds": 0.12803414, + "uploadSeconds": 0.063604036, + "downloadSeconds": 0.063647278 }, { - "connectionEstablishedSeconds": 0.127675593, - "uploadSeconds": 0.063485346, - "downloadSeconds": 0.063516515 + "connectionEstablishedSeconds": 0.131103982, + "uploadSeconds": 0.065187795, + "downloadSeconds": 0.065250979 }, { - "connectionEstablishedSeconds": 0.129245549, - "uploadSeconds": 0.064255694, - "downloadSeconds": 0.064269179 + "connectionEstablishedSeconds": 0.125471676, + "uploadSeconds": 0.062379177, + "downloadSeconds": 0.062390086 }, { - "connectionEstablishedSeconds": 0.130277486, - "uploadSeconds": 0.064766765, - "downloadSeconds": 0.064795694 + "connectionEstablishedSeconds": 0.125032401, + "uploadSeconds": 0.062132886, + "downloadSeconds": 0.0621851 }, { - "connectionEstablishedSeconds": 0.127990056, - "uploadSeconds": 0.063648257, - "downloadSeconds": 0.063665452 + "connectionEstablishedSeconds": 0.125146993, + "uploadSeconds": 0.062156848, + "downloadSeconds": 0.06219907 }, { - "connectionEstablishedSeconds": 0.127237517, - "uploadSeconds": 0.063228796, - "downloadSeconds": 0.063325575 + "connectionEstablishedSeconds": 0.125724129, + "uploadSeconds": 0.062447722, + "downloadSeconds": 0.062481181 }, { - "connectionEstablishedSeconds": 0.126827288, - "uploadSeconds": 0.063057107, - "downloadSeconds": 0.063060423 + "connectionEstablishedSeconds": 0.124786004, + "uploadSeconds": 0.062042945, + "downloadSeconds": 0.06264053 }, { - "connectionEstablishedSeconds": 0.128076095, - "uploadSeconds": 0.063600281, - "downloadSeconds": 0.063563121 + "connectionEstablishedSeconds": 0.122854895, + "uploadSeconds": 0.061029218, + "downloadSeconds": 0.061082874 }, { - "connectionEstablishedSeconds": 0.126112736, - "uploadSeconds": 0.062712107, - "downloadSeconds": 0.062709074 + "connectionEstablishedSeconds": 0.127816982, + "uploadSeconds": 0.063556758, + "downloadSeconds": 0.063570017 }, { - "connectionEstablishedSeconds": 0.126037179, - "uploadSeconds": 0.062549752, - "downloadSeconds": 0.062570997 + "connectionEstablishedSeconds": 0.128751465, + "uploadSeconds": 0.063987236, + "downloadSeconds": 0.064039094 }, { - "connectionEstablishedSeconds": 0.124178306, - "uploadSeconds": 0.061731673, - "downloadSeconds": 0.061729123 + "connectionEstablishedSeconds": 0.128139274, + "uploadSeconds": 0.063677502, + "downloadSeconds": 0.063743376 }, { - "connectionEstablishedSeconds": 0.122969035, - "uploadSeconds": 0.061091485, - "downloadSeconds": 0.061125026 + "connectionEstablishedSeconds": 0.12227394, + "uploadSeconds": 0.06069762, + "downloadSeconds": 0.060746496 }, { - "connectionEstablishedSeconds": 0.126242854, - "uploadSeconds": 0.062729515, - "downloadSeconds": 0.062781941 + "connectionEstablishedSeconds": 0.129220588, + "uploadSeconds": 0.064189879, + "downloadSeconds": 0.064285771 }, { - "connectionEstablishedSeconds": 0.12955639, - "uploadSeconds": 0.064371501, - "downloadSeconds": 0.064425928 + "connectionEstablishedSeconds": 0.124770957, + "uploadSeconds": 0.061999252, + "downloadSeconds": 0.062004879 }, { - "connectionEstablishedSeconds": 0.123962068, - "uploadSeconds": 0.061665617, - "downloadSeconds": 0.061628992 + "connectionEstablishedSeconds": 0.129240924, + "uploadSeconds": 0.064258811, + "downloadSeconds": 0.064342173 }, { - "connectionEstablishedSeconds": 0.12504171, - "uploadSeconds": 0.062189832, - "downloadSeconds": 0.06221121 + "connectionEstablishedSeconds": 0.125171561, + "uploadSeconds": 0.062195451, + "downloadSeconds": 0.062236192 }, { - "connectionEstablishedSeconds": 0.130446313, - "uploadSeconds": 0.064829082, - "downloadSeconds": 0.064873804 + "connectionEstablishedSeconds": 0.129305095, + "uploadSeconds": 0.064498854, + "downloadSeconds": 0.06432414 }, { - "connectionEstablishedSeconds": 0.129508575, - "uploadSeconds": 0.064349556, - "downloadSeconds": 0.064360501 + "connectionEstablishedSeconds": 0.130281646, + "uploadSeconds": 0.064774718, + "downloadSeconds": 0.064791614 } ], "implementation": "rust-libp2p", @@ -1489,504 +1489,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.064777868, - "uploadSeconds": 0.125998204, - "downloadSeconds": 0.000075636 + "connectionEstablishedSeconds": 0.062555178, + "uploadSeconds": 0.121464442, + "downloadSeconds": 0.000082901 }, { - "connectionEstablishedSeconds": 0.06294562, - "uploadSeconds": 0.12275897, - "downloadSeconds": 0.000073667 + "connectionEstablishedSeconds": 0.063369527, + "uploadSeconds": 0.123457052, + "downloadSeconds": 0.000085259 }, { - "connectionEstablishedSeconds": 0.064982803, - "uploadSeconds": 0.126651951, - "downloadSeconds": 0.000069897 + "connectionEstablishedSeconds": 0.063640605, + "uploadSeconds": 0.123966857, + "downloadSeconds": 0.000084324 }, { - "connectionEstablishedSeconds": 0.063169272, - "uploadSeconds": 0.123140985, - "downloadSeconds": 0.000078117 + "connectionEstablishedSeconds": 0.065154661, + "uploadSeconds": 0.126671499, + "downloadSeconds": 0.000130963 }, { - "connectionEstablishedSeconds": 0.061480717, - "uploadSeconds": 0.119770789, - "downloadSeconds": 0.000080836 + "connectionEstablishedSeconds": 0.064592418, + "uploadSeconds": 0.125392005, + "downloadSeconds": 0.000078974 }, { - "connectionEstablishedSeconds": 0.064885998, - "uploadSeconds": 0.126467413, - "downloadSeconds": 0.000045782 + "connectionEstablishedSeconds": 0.066054486, + "uploadSeconds": 0.128804493, + "downloadSeconds": 0.000100537 }, { - "connectionEstablishedSeconds": 0.063326276, - "uploadSeconds": 0.123218016, - "downloadSeconds": 0.000074582 + "connectionEstablishedSeconds": 0.060591598, + "uploadSeconds": 0.117682519, + "downloadSeconds": 0.000076024 }, { - "connectionEstablishedSeconds": 0.065046438, - "uploadSeconds": 0.126780176, - "downloadSeconds": 0.000073816 + "connectionEstablishedSeconds": 0.06327672, + "uploadSeconds": 0.12307991, + "downloadSeconds": 0.00008693 }, { - "connectionEstablishedSeconds": 0.062702721, - "uploadSeconds": 0.122423041, - "downloadSeconds": 0.000073728 + "connectionEstablishedSeconds": 0.066036308, + "uploadSeconds": 0.128649426, + "downloadSeconds": 0.000094116 }, { - "connectionEstablishedSeconds": 0.065586164, - "uploadSeconds": 0.127955324, - "downloadSeconds": 0.000080008 + "connectionEstablishedSeconds": 0.064443428, + "uploadSeconds": 0.125458301, + "downloadSeconds": 0.000085163 }, { - "connectionEstablishedSeconds": 0.066246125, - "uploadSeconds": 0.129010614, - "downloadSeconds": 0.000081791 + "connectionEstablishedSeconds": 0.060612667, + "uploadSeconds": 0.117629487, + "downloadSeconds": 0.00008556 }, { - "connectionEstablishedSeconds": 0.064241739, - "uploadSeconds": 0.125201385, - "downloadSeconds": 0.000082527 + "connectionEstablishedSeconds": 0.062749736, + "uploadSeconds": 0.122072668, + "downloadSeconds": 0.00008688 }, { - "connectionEstablishedSeconds": 0.063676962, - "uploadSeconds": 0.124129189, - "downloadSeconds": 0.000092577 + "connectionEstablishedSeconds": 0.063998842, + "uploadSeconds": 0.124482878, + "downloadSeconds": 0.0000873 }, { - "connectionEstablishedSeconds": 0.061776373, - "uploadSeconds": 0.120380327, - "downloadSeconds": 0.000088589 + "connectionEstablishedSeconds": 0.06467811, + "uploadSeconds": 0.126032702, + "downloadSeconds": 0.000117909 }, { - "connectionEstablishedSeconds": 0.064540106, - "uploadSeconds": 0.125817512, - "downloadSeconds": 0.000063514 + "connectionEstablishedSeconds": 0.064432402, + "uploadSeconds": 0.125746167, + "downloadSeconds": 0.000087769 }, { - "connectionEstablishedSeconds": 0.06378064, - "uploadSeconds": 0.124386111, - "downloadSeconds": 0.000071957 + "connectionEstablishedSeconds": 0.061048609, + "uploadSeconds": 0.118620331, + "downloadSeconds": 0.000084944 }, { - "connectionEstablishedSeconds": 0.063139452, - "uploadSeconds": 0.12295606, - "downloadSeconds": 0.000080053 + "connectionEstablishedSeconds": 0.063234156, + "uploadSeconds": 0.122973143, + "downloadSeconds": 0.000062995 }, { - "connectionEstablishedSeconds": 0.062069621, - "uploadSeconds": 0.120622443, - "downloadSeconds": 0.000053712 + "connectionEstablishedSeconds": 0.063368215, + "uploadSeconds": 0.123410879, + "downloadSeconds": 0.000081405 }, { - "connectionEstablishedSeconds": 0.062981833, - "uploadSeconds": 0.12289405, - "downloadSeconds": 0.00008086 + "connectionEstablishedSeconds": 0.065971913, + "uploadSeconds": 0.128409181, + "downloadSeconds": 0.000086581 }, { - "connectionEstablishedSeconds": 0.064930467, - "uploadSeconds": 0.126605086, - "downloadSeconds": 0.000082813 + "connectionEstablishedSeconds": 0.064192182, + "uploadSeconds": 0.124766215, + "downloadSeconds": 0.000085311 }, { - "connectionEstablishedSeconds": 0.06285884, - "uploadSeconds": 0.122514956, - "downloadSeconds": 0.000093668 + "connectionEstablishedSeconds": 0.065122346, + "uploadSeconds": 0.126924617, + "downloadSeconds": 0.000077339 }, { - "connectionEstablishedSeconds": 0.061271851, - "uploadSeconds": 0.119193715, - "downloadSeconds": 0.000082919 + "connectionEstablishedSeconds": 0.063140431, + "uploadSeconds": 0.122964453, + "downloadSeconds": 0.000088041 }, { - "connectionEstablishedSeconds": 0.064243355, - "uploadSeconds": 0.125646122, - "downloadSeconds": 0.000087232 + "connectionEstablishedSeconds": 0.063312335, + "uploadSeconds": 0.123131605, + "downloadSeconds": 0.000088513 }, { - "connectionEstablishedSeconds": 0.063067288, - "uploadSeconds": 0.122717381, - "downloadSeconds": 0.000073586 + "connectionEstablishedSeconds": 0.065980778, + "uploadSeconds": 0.128555153, + "downloadSeconds": 0.000086702 }, { - "connectionEstablishedSeconds": 0.0665023, - "uploadSeconds": 0.129655903, - "downloadSeconds": 0.000069867 + "connectionEstablishedSeconds": 0.063307699, + "uploadSeconds": 0.123217326, + "downloadSeconds": 0.000100773 }, { - "connectionEstablishedSeconds": 0.064118954, - "uploadSeconds": 0.124881153, - "downloadSeconds": 0.000059721 + "connectionEstablishedSeconds": 0.064792526, + "uploadSeconds": 0.12793851, + "downloadSeconds": 0.000077 }, { - "connectionEstablishedSeconds": 0.063248922, - "uploadSeconds": 0.123328557, - "downloadSeconds": 0.000078478 + "connectionEstablishedSeconds": 0.065063158, + "uploadSeconds": 0.126801106, + "downloadSeconds": 0.000092032 }, { - "connectionEstablishedSeconds": 0.061599504, - "uploadSeconds": 0.119807769, - "downloadSeconds": 0.000086405 + "connectionEstablishedSeconds": 0.061136292, + "uploadSeconds": 0.118917211, + "downloadSeconds": 0.000087618 }, { - "connectionEstablishedSeconds": 0.063174339, - "uploadSeconds": 0.123168493, - "downloadSeconds": 0.000078535 + "connectionEstablishedSeconds": 0.062526539, + "uploadSeconds": 0.12154554, + "downloadSeconds": 0.000076073 }, { - "connectionEstablishedSeconds": 0.064735618, - "uploadSeconds": 0.12625337, - "downloadSeconds": 0.000055502 + "connectionEstablishedSeconds": 0.064467535, + "uploadSeconds": 0.125464429, + "downloadSeconds": 0.000053374 }, { - "connectionEstablishedSeconds": 0.062365727, - "uploadSeconds": 0.121573982, - "downloadSeconds": 0.000067009 + "connectionEstablishedSeconds": 0.066230482, + "uploadSeconds": 0.128881524, + "downloadSeconds": 0.000087982 }, { - "connectionEstablishedSeconds": 0.062613185, - "uploadSeconds": 0.122205546, - "downloadSeconds": 0.00006355 + "connectionEstablishedSeconds": 0.06440969, + "uploadSeconds": 0.125494731, + "downloadSeconds": 0.000083717 }, { - "connectionEstablishedSeconds": 0.063637113, - "uploadSeconds": 0.124060759, - "downloadSeconds": 0.000104106 + "connectionEstablishedSeconds": 0.063325895, + "uploadSeconds": 0.123178386, + "downloadSeconds": 0.000102126 }, { - "connectionEstablishedSeconds": 0.065089764, - "uploadSeconds": 0.127116541, - "downloadSeconds": 0.000069329 + "connectionEstablishedSeconds": 0.06475516, + "uploadSeconds": 0.126263552, + "downloadSeconds": 0.000074456 }, { - "connectionEstablishedSeconds": 0.063268963, - "uploadSeconds": 0.123293679, - "downloadSeconds": 0.000070154 + "connectionEstablishedSeconds": 0.062523354, + "uploadSeconds": 0.121687039, + "downloadSeconds": 0.000088698 }, { - "connectionEstablishedSeconds": 0.064351409, - "uploadSeconds": 0.125566891, - "downloadSeconds": 0.000081906 + "connectionEstablishedSeconds": 0.066140374, + "uploadSeconds": 0.12882998, + "downloadSeconds": 0.000080221 }, { - "connectionEstablishedSeconds": 0.063977541, - "uploadSeconds": 0.124605088, - "downloadSeconds": 0.000090947 + "connectionEstablishedSeconds": 0.06367331, + "uploadSeconds": 0.123789185, + "downloadSeconds": 0.000084024 }, { - "connectionEstablishedSeconds": 0.064431774, - "uploadSeconds": 0.125293052, - "downloadSeconds": 0.000097249 + "connectionEstablishedSeconds": 0.065822443, + "uploadSeconds": 0.128522425, + "downloadSeconds": 0.00007626 }, { - "connectionEstablishedSeconds": 0.062392999, - "uploadSeconds": 0.12150546, - "downloadSeconds": 0.000089871 + "connectionEstablishedSeconds": 0.066161448, + "uploadSeconds": 0.128911001, + "downloadSeconds": 0.000075998 }, { - "connectionEstablishedSeconds": 0.065171834, - "uploadSeconds": 0.126893219, - "downloadSeconds": 0.00006415 + "connectionEstablishedSeconds": 0.062993283, + "uploadSeconds": 0.122537444, + "downloadSeconds": 0.000079189 }, { - "connectionEstablishedSeconds": 0.063419236, - "uploadSeconds": 0.123194115, - "downloadSeconds": 0.0000752 + "connectionEstablishedSeconds": 0.065840144, + "uploadSeconds": 0.128380241, + "downloadSeconds": 0.000098752 }, { - "connectionEstablishedSeconds": 0.062857141, - "uploadSeconds": 0.122546209, - "downloadSeconds": 0.000079444 + "connectionEstablishedSeconds": 0.065179651, + "uploadSeconds": 0.127048149, + "downloadSeconds": 0.000078663 }, { - "connectionEstablishedSeconds": 0.060385801, - "uploadSeconds": 0.117631317, - "downloadSeconds": 0.000085714 + "connectionEstablishedSeconds": 0.063577878, + "uploadSeconds": 0.123962103, + "downloadSeconds": 0.000050825 }, { - "connectionEstablishedSeconds": 0.066192975, - "uploadSeconds": 0.128907583, - "downloadSeconds": 0.00007039 + "connectionEstablishedSeconds": 0.065114994, + "uploadSeconds": 0.126840587, + "downloadSeconds": 0.000060604 }, { - "connectionEstablishedSeconds": 0.06264006, - "uploadSeconds": 0.121778547, - "downloadSeconds": 0.000095732 + "connectionEstablishedSeconds": 0.06212057, + "uploadSeconds": 0.120834495, + "downloadSeconds": 0.000087046 }, { - "connectionEstablishedSeconds": 0.064492003, - "uploadSeconds": 0.125525397, - "downloadSeconds": 0.000046312 + "connectionEstablishedSeconds": 0.065030609, + "uploadSeconds": 0.126546622, + "downloadSeconds": 0.000081112 }, { - "connectionEstablishedSeconds": 0.065256489, - "uploadSeconds": 0.127060265, - "downloadSeconds": 0.000111949 + "connectionEstablishedSeconds": 0.06283852, + "uploadSeconds": 0.122414091, + "downloadSeconds": 0.000053942 }, { - "connectionEstablishedSeconds": 0.064660316, - "uploadSeconds": 0.125923877, - "downloadSeconds": 0.000077244 + "connectionEstablishedSeconds": 0.065302421, + "uploadSeconds": 0.127077082, + "downloadSeconds": 0.000081628 }, { - "connectionEstablishedSeconds": 0.06355617, - "uploadSeconds": 0.123885464, - "downloadSeconds": 0.000086419 + "connectionEstablishedSeconds": 0.066722523, + "uploadSeconds": 0.129948955, + "downloadSeconds": 0.000107012 }, { - "connectionEstablishedSeconds": 0.062414997, - "uploadSeconds": 0.121797196, - "downloadSeconds": 0.00010588 + "connectionEstablishedSeconds": 0.063075872, + "uploadSeconds": 0.122902967, + "downloadSeconds": 0.000128587 }, { - "connectionEstablishedSeconds": 0.066173573, - "uploadSeconds": 0.12932854, - "downloadSeconds": 0.000063044 + "connectionEstablishedSeconds": 0.06241058, + "uploadSeconds": 0.121339306, + "downloadSeconds": 0.000078697 }, { - "connectionEstablishedSeconds": 0.062986592, - "uploadSeconds": 0.122868444, - "downloadSeconds": 0.000081463 + "connectionEstablishedSeconds": 0.063973005, + "uploadSeconds": 0.124662567, + "downloadSeconds": 0.000076339 }, { - "connectionEstablishedSeconds": 0.063503944, - "uploadSeconds": 0.12384623, - "downloadSeconds": 0.000075366 + "connectionEstablishedSeconds": 0.064128175, + "uploadSeconds": 0.124891473, + "downloadSeconds": 0.000086363 }, { - "connectionEstablishedSeconds": 0.064330604, - "uploadSeconds": 0.125533853, - "downloadSeconds": 0.000079061 + "connectionEstablishedSeconds": 0.065478882, + "uploadSeconds": 0.127407412, + "downloadSeconds": 0.000063738 }, { - "connectionEstablishedSeconds": 0.065544157, - "uploadSeconds": 0.128015899, - "downloadSeconds": 0.000068859 + "connectionEstablishedSeconds": 0.066621562, + "uploadSeconds": 0.128820191, + "downloadSeconds": 0.000084262 }, { - "connectionEstablishedSeconds": 0.064812758, - "uploadSeconds": 0.126523177, - "downloadSeconds": 0.000073051 + "connectionEstablishedSeconds": 0.064804123, + "uploadSeconds": 0.125901878, + "downloadSeconds": 0.00008048 }, { - "connectionEstablishedSeconds": 0.062981201, - "uploadSeconds": 0.122817041, - "downloadSeconds": 0.000148614 + "connectionEstablishedSeconds": 0.067100174, + "uploadSeconds": 0.130916696, + "downloadSeconds": 0.000087192 }, { - "connectionEstablishedSeconds": 0.066029472, - "uploadSeconds": 0.128808333, - "downloadSeconds": 0.000127753 + "connectionEstablishedSeconds": 0.065284109, + "uploadSeconds": 0.127163699, + "downloadSeconds": 0.000062674 }, { - "connectionEstablishedSeconds": 0.063809677, - "uploadSeconds": 0.124393806, - "downloadSeconds": 0.000074221 + "connectionEstablishedSeconds": 0.06473319, + "uploadSeconds": 0.126026119, + "downloadSeconds": 0.000091165 }, { - "connectionEstablishedSeconds": 0.064258717, - "uploadSeconds": 0.125336028, - "downloadSeconds": 0.000071534 + "connectionEstablishedSeconds": 0.065570038, + "uploadSeconds": 0.127822192, + "downloadSeconds": 0.000060558 }, { - "connectionEstablishedSeconds": 0.063431624, - "uploadSeconds": 0.123813457, - "downloadSeconds": 0.000076783 + "connectionEstablishedSeconds": 0.065484686, + "uploadSeconds": 0.127695353, + "downloadSeconds": 0.000085598 }, { - "connectionEstablishedSeconds": 0.066005284, - "uploadSeconds": 0.128856331, - "downloadSeconds": 0.000081916 + "connectionEstablishedSeconds": 0.061210531, + "uploadSeconds": 0.118908659, + "downloadSeconds": 0.000078286 }, { - "connectionEstablishedSeconds": 0.06587658, - "uploadSeconds": 0.128505099, - "downloadSeconds": 0.000082519 + "connectionEstablishedSeconds": 0.063481257, + "uploadSeconds": 0.123340897, + "downloadSeconds": 0.000112374 }, { - "connectionEstablishedSeconds": 0.062858795, - "uploadSeconds": 0.122414246, - "downloadSeconds": 0.000083717 + "connectionEstablishedSeconds": 0.06411204, + "uploadSeconds": 0.124634666, + "downloadSeconds": 0.000082322 }, { - "connectionEstablishedSeconds": 0.061783997, - "uploadSeconds": 0.119334631, - "downloadSeconds": 0.000109582 + "connectionEstablishedSeconds": 0.062239547, + "uploadSeconds": 0.121146964, + "downloadSeconds": 0.000081609 }, { - "connectionEstablishedSeconds": 0.062791376, - "uploadSeconds": 0.122468863, - "downloadSeconds": 0.000076865 + "connectionEstablishedSeconds": 0.06241652, + "uploadSeconds": 0.121505384, + "downloadSeconds": 0.000084119 }, { - "connectionEstablishedSeconds": 0.062901138, - "uploadSeconds": 0.122598995, - "downloadSeconds": 0.000071515 + "connectionEstablishedSeconds": 0.064479432, + "uploadSeconds": 0.125733454, + "downloadSeconds": 0.000068474 }, { - "connectionEstablishedSeconds": 0.062531113, - "uploadSeconds": 0.121863399, - "downloadSeconds": 0.000087865 + "connectionEstablishedSeconds": 0.066331924, + "uploadSeconds": 0.129337226, + "downloadSeconds": 0.000131293 }, { - "connectionEstablishedSeconds": 0.064976981, - "uploadSeconds": 0.126558119, - "downloadSeconds": 0.000115422 + "connectionEstablishedSeconds": 0.065104036, + "uploadSeconds": 0.126754178, + "downloadSeconds": 0.000091442 }, { - "connectionEstablishedSeconds": 0.064216494, - "uploadSeconds": 0.124962731, - "downloadSeconds": 0.000083004 + "connectionEstablishedSeconds": 0.0637304, + "uploadSeconds": 0.124140772, + "downloadSeconds": 0.000079004 }, { - "connectionEstablishedSeconds": 0.062264406, - "uploadSeconds": 0.121360788, - "downloadSeconds": 0.000073056 + "connectionEstablishedSeconds": 0.06541628, + "uploadSeconds": 0.127396082, + "downloadSeconds": 0.000058255 }, { - "connectionEstablishedSeconds": 0.064672496, - "uploadSeconds": 0.126154373, - "downloadSeconds": 0.000091576 + "connectionEstablishedSeconds": 0.064089724, + "uploadSeconds": 0.124570267, + "downloadSeconds": 0.000090973 }, { - "connectionEstablishedSeconds": 0.065740028, - "uploadSeconds": 0.128227022, - "downloadSeconds": 0.000154756 + "connectionEstablishedSeconds": 0.062512896, + "uploadSeconds": 0.121609734, + "downloadSeconds": 0.000085923 }, { - "connectionEstablishedSeconds": 0.061835942, - "uploadSeconds": 0.120442236, - "downloadSeconds": 0.000074908 + "connectionEstablishedSeconds": 0.067080325, + "uploadSeconds": 0.13072748, + "downloadSeconds": 0.000079027 }, { - "connectionEstablishedSeconds": 0.063429564, - "uploadSeconds": 0.123661597, - "downloadSeconds": 0.000052419 + "connectionEstablishedSeconds": 0.066950497, + "uploadSeconds": 0.130311531, + "downloadSeconds": 0.000118296 }, { - "connectionEstablishedSeconds": 0.066476234, - "uploadSeconds": 0.129799817, - "downloadSeconds": 0.000076399 + "connectionEstablishedSeconds": 0.063424248, + "uploadSeconds": 0.123647825, + "downloadSeconds": 0.000066672 }, { - "connectionEstablishedSeconds": 0.062667103, - "uploadSeconds": 0.122210395, - "downloadSeconds": 0.000075119 + "connectionEstablishedSeconds": 0.060437534, + "uploadSeconds": 0.117455929, + "downloadSeconds": 0.000091736 }, { - "connectionEstablishedSeconds": 0.062874746, - "uploadSeconds": 0.122624341, - "downloadSeconds": 0.000099077 + "connectionEstablishedSeconds": 0.063662903, + "uploadSeconds": 0.123920495, + "downloadSeconds": 0.000078148 }, { - "connectionEstablishedSeconds": 0.063208043, - "uploadSeconds": 0.123244426, - "downloadSeconds": 0.000083971 + "connectionEstablishedSeconds": 0.065905467, + "uploadSeconds": 0.128413462, + "downloadSeconds": 0.00005148 }, { - "connectionEstablishedSeconds": 0.062803152, - "uploadSeconds": 0.12237716, - "downloadSeconds": 0.000077384 + "connectionEstablishedSeconds": 0.062669667, + "uploadSeconds": 0.121915854, + "downloadSeconds": 0.000079754 }, { - "connectionEstablishedSeconds": 0.064475435, - "uploadSeconds": 0.12574189, - "downloadSeconds": 0.000047054 + "connectionEstablishedSeconds": 0.061357263, + "uploadSeconds": 0.11931048, + "downloadSeconds": 0.000117476 }, { - "connectionEstablishedSeconds": 0.066113533, - "uploadSeconds": 0.129156976, - "downloadSeconds": 0.000076801 + "connectionEstablishedSeconds": 0.064901746, + "uploadSeconds": 0.126331826, + "downloadSeconds": 0.000094664 }, { - "connectionEstablishedSeconds": 0.065250443, - "uploadSeconds": 0.12746102, - "downloadSeconds": 0.000052761 + "connectionEstablishedSeconds": 0.064194337, + "uploadSeconds": 0.125086379, + "downloadSeconds": 0.000082276 }, { - "connectionEstablishedSeconds": 0.064099146, - "uploadSeconds": 0.12506225, - "downloadSeconds": 0.000077246 + "connectionEstablishedSeconds": 0.065560723, + "uploadSeconds": 0.127569475, + "downloadSeconds": 0.000089714 }, { - "connectionEstablishedSeconds": 0.063758761, - "uploadSeconds": 0.124206074, - "downloadSeconds": 0.000081693 + "connectionEstablishedSeconds": 0.067019224, + "uploadSeconds": 0.130436691, + "downloadSeconds": 0.000090948 }, { - "connectionEstablishedSeconds": 0.064691732, - "uploadSeconds": 0.126195825, - "downloadSeconds": 0.000075353 + "connectionEstablishedSeconds": 0.06532367, + "uploadSeconds": 0.127207457, + "downloadSeconds": 0.000086598 }, { - "connectionEstablishedSeconds": 0.062189209, - "uploadSeconds": 0.121311004, - "downloadSeconds": 0.000069429 + "connectionEstablishedSeconds": 0.062311329, + "uploadSeconds": 0.11996796, + "downloadSeconds": 0.000085597 }, { - "connectionEstablishedSeconds": 0.061228587, - "uploadSeconds": 0.119376962, - "downloadSeconds": 0.00007423 + "connectionEstablishedSeconds": 0.064293896, + "uploadSeconds": 0.125071759, + "downloadSeconds": 0.000084569 }, { - "connectionEstablishedSeconds": 0.061882032, - "uploadSeconds": 0.12067482, - "downloadSeconds": 0.000089354 + "connectionEstablishedSeconds": 0.064947935, + "uploadSeconds": 0.126388251, + "downloadSeconds": 0.000062561 }, { - "connectionEstablishedSeconds": 0.060575704, - "uploadSeconds": 0.118040972, - "downloadSeconds": 0.000095531 + "connectionEstablishedSeconds": 0.062403254, + "uploadSeconds": 0.121419997, + "downloadSeconds": 0.000085121 }, { - "connectionEstablishedSeconds": 0.063224556, - "uploadSeconds": 0.123390466, - "downloadSeconds": 0.000077311 + "connectionEstablishedSeconds": 0.064554434, + "uploadSeconds": 0.125555427, + "downloadSeconds": 0.000084835 }, { - "connectionEstablishedSeconds": 0.061287889, - "uploadSeconds": 0.119465674, - "downloadSeconds": 0.000074671 + "connectionEstablishedSeconds": 0.065129867, + "uploadSeconds": 0.126757758, + "downloadSeconds": 0.000076839 }, { - "connectionEstablishedSeconds": 0.062176027, - "uploadSeconds": 0.121133286, - "downloadSeconds": 0.00007535 + "connectionEstablishedSeconds": 0.062349026, + "uploadSeconds": 0.121155662, + "downloadSeconds": 0.000101132 }, { - "connectionEstablishedSeconds": 0.064492176, - "uploadSeconds": 0.125851577, - "downloadSeconds": 0.000077252 + "connectionEstablishedSeconds": 0.06535092, + "uploadSeconds": 0.1273273, + "downloadSeconds": 0.000089002 }, { - "connectionEstablishedSeconds": 0.063885163, - "uploadSeconds": 0.124464327, - "downloadSeconds": 0.00007576 + "connectionEstablishedSeconds": 0.066094518, + "uploadSeconds": 0.128518422, + "downloadSeconds": 0.000126889 }, { - "connectionEstablishedSeconds": 0.062164169, - "uploadSeconds": 0.12127478, - "downloadSeconds": 0.000070603 + "connectionEstablishedSeconds": 0.064563922, + "uploadSeconds": 0.125643408, + "downloadSeconds": 0.000087266 }, { - "connectionEstablishedSeconds": 0.062933372, - "uploadSeconds": 0.12266429, - "downloadSeconds": 0.000075274 + "connectionEstablishedSeconds": 0.063078447, + "uploadSeconds": 0.122793638, + "downloadSeconds": 0.00005627 }, { - "connectionEstablishedSeconds": 0.063141544, - "uploadSeconds": 0.123043061, - "downloadSeconds": 0.000067134 + "connectionEstablishedSeconds": 0.063925994, + "uploadSeconds": 0.124353016, + "downloadSeconds": 0.000088933 }, { - "connectionEstablishedSeconds": 0.064007733, - "uploadSeconds": 0.124852186, - "downloadSeconds": 0.000092172 + "connectionEstablishedSeconds": 0.064054259, + "uploadSeconds": 0.124578191, + "downloadSeconds": 0.000083031 }, { - "connectionEstablishedSeconds": 0.062662758, - "uploadSeconds": 0.121683962, - "downloadSeconds": 0.000097485 + "connectionEstablishedSeconds": 0.060656395, + "uploadSeconds": 0.117757039, + "downloadSeconds": 0.000082353 } ], "implementation": "rust-libp2p", @@ -1996,504 +1996,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065345597, - "uploadSeconds": 0.126627588, - "downloadSeconds": 0.000079782 + "connectionEstablishedSeconds": 0.063519078, + "uploadSeconds": 0.122990612, + "downloadSeconds": 0.000077929 }, { - "connectionEstablishedSeconds": 0.06195985, - "uploadSeconds": 0.120559278, - "downloadSeconds": 0.000063813 + "connectionEstablishedSeconds": 0.063665886, + "uploadSeconds": 0.123635194, + "downloadSeconds": 0.000071066 }, { - "connectionEstablishedSeconds": 0.065746356, - "uploadSeconds": 0.1281704, - "downloadSeconds": 0.000042327 + "connectionEstablishedSeconds": 0.062310276, + "uploadSeconds": 0.121258041, + "downloadSeconds": 0.000050745 }, { - "connectionEstablishedSeconds": 0.06182322, - "uploadSeconds": 0.120358159, - "downloadSeconds": 0.000054483 + "connectionEstablishedSeconds": 0.064168618, + "uploadSeconds": 0.124698939, + "downloadSeconds": 0.000062075 }, { - "connectionEstablishedSeconds": 0.063796406, - "uploadSeconds": 0.124231577, - "downloadSeconds": 0.000042138 + "connectionEstablishedSeconds": 0.061712537, + "uploadSeconds": 0.119761987, + "downloadSeconds": 0.000083662 }, { - "connectionEstablishedSeconds": 0.064608911, - "uploadSeconds": 0.125767583, - "downloadSeconds": 0.000042794 + "connectionEstablishedSeconds": 0.066369464, + "uploadSeconds": 0.12928018, + "downloadSeconds": 0.00007292 }, { - "connectionEstablishedSeconds": 0.065418586, - "uploadSeconds": 0.127598866, - "downloadSeconds": 0.0000745 + "connectionEstablishedSeconds": 0.06597437, + "uploadSeconds": 0.128489863, + "downloadSeconds": 0.000095037 }, { - "connectionEstablishedSeconds": 0.063857974, - "uploadSeconds": 0.12470036, - "downloadSeconds": 0.000054574 + "connectionEstablishedSeconds": 0.066852308, + "uploadSeconds": 0.130111008, + "downloadSeconds": 0.000050861 }, { - "connectionEstablishedSeconds": 0.064741435, - "uploadSeconds": 0.126321487, - "downloadSeconds": 0.000049352 + "connectionEstablishedSeconds": 0.065107393, + "uploadSeconds": 0.126825077, + "downloadSeconds": 0.000073899 }, { - "connectionEstablishedSeconds": 0.062298059, - "uploadSeconds": 0.121567394, - "downloadSeconds": 0.000043745 + "connectionEstablishedSeconds": 0.064804187, + "uploadSeconds": 0.126203664, + "downloadSeconds": 0.000094286 }, { - "connectionEstablishedSeconds": 0.062853679, - "uploadSeconds": 0.1215074, - "downloadSeconds": 0.000068952 + "connectionEstablishedSeconds": 0.062656878, + "uploadSeconds": 0.121770066, + "downloadSeconds": 0.000077609 }, { - "connectionEstablishedSeconds": 0.061282703, - "uploadSeconds": 0.119296348, - "downloadSeconds": 0.000044825 + "connectionEstablishedSeconds": 0.064139385, + "uploadSeconds": 0.125054034, + "downloadSeconds": 0.000063282 }, { - "connectionEstablishedSeconds": 0.065680616, - "uploadSeconds": 0.128422717, - "downloadSeconds": 0.00004375 + "connectionEstablishedSeconds": 0.065992239, + "uploadSeconds": 0.128643708, + "downloadSeconds": 0.000085683 }, { - "connectionEstablishedSeconds": 0.060174806, - "uploadSeconds": 0.117313557, - "downloadSeconds": 0.000045011 + "connectionEstablishedSeconds": 0.066444011, + "uploadSeconds": 0.129491444, + "downloadSeconds": 0.000053422 }, { - "connectionEstablishedSeconds": 0.064585942, - "uploadSeconds": 0.126086034, - "downloadSeconds": 0.000043884 + "connectionEstablishedSeconds": 0.065541288, + "uploadSeconds": 0.127670473, + "downloadSeconds": 0.000051367 }, { - "connectionEstablishedSeconds": 0.064333531, - "uploadSeconds": 0.125695507, - "downloadSeconds": 0.000041636 + "connectionEstablishedSeconds": 0.065511296, + "uploadSeconds": 0.127685358, + "downloadSeconds": 0.000081536 }, { - "connectionEstablishedSeconds": 0.063111935, - "uploadSeconds": 0.122901385, - "downloadSeconds": 0.000043733 + "connectionEstablishedSeconds": 0.0655056, + "uploadSeconds": 0.127548821, + "downloadSeconds": 0.000070778 }, { - "connectionEstablishedSeconds": 0.064714655, - "uploadSeconds": 0.12637165, - "downloadSeconds": 0.000044685 + "connectionEstablishedSeconds": 0.06506113, + "uploadSeconds": 0.126577011, + "downloadSeconds": 0.000049992 }, { - "connectionEstablishedSeconds": 0.062752903, - "uploadSeconds": 0.122323865, - "downloadSeconds": 0.000060012 + "connectionEstablishedSeconds": 0.065260381, + "uploadSeconds": 0.127215303, + "downloadSeconds": 0.00004709 }, { - "connectionEstablishedSeconds": 0.066008082, - "uploadSeconds": 0.128951116, - "downloadSeconds": 0.000043653 + "connectionEstablishedSeconds": 0.066048768, + "uploadSeconds": 0.128658866, + "downloadSeconds": 0.000049508 }, { - "connectionEstablishedSeconds": 0.064480896, - "uploadSeconds": 0.125931628, - "downloadSeconds": 0.000061708 + "connectionEstablishedSeconds": 0.063479391, + "uploadSeconds": 0.123462859, + "downloadSeconds": 0.000072927 }, { - "connectionEstablishedSeconds": 0.065804323, - "uploadSeconds": 0.128470453, - "downloadSeconds": 0.00004138 + "connectionEstablishedSeconds": 0.063377289, + "uploadSeconds": 0.123550736, + "downloadSeconds": 0.000084836 }, { - "connectionEstablishedSeconds": 0.064074568, - "uploadSeconds": 0.125002588, - "downloadSeconds": 0.000074019 + "connectionEstablishedSeconds": 0.065219667, + "uploadSeconds": 0.127035888, + "downloadSeconds": 0.000077057 }, { - "connectionEstablishedSeconds": 0.064293037, - "uploadSeconds": 0.125354149, - "downloadSeconds": 0.000044326 + "connectionEstablishedSeconds": 0.065376484, + "uploadSeconds": 0.127416787, + "downloadSeconds": 0.000080627 }, { - "connectionEstablishedSeconds": 0.062835329, - "uploadSeconds": 0.122464034, - "downloadSeconds": 0.000046381 + "connectionEstablishedSeconds": 0.060574272, + "uploadSeconds": 0.117808539, + "downloadSeconds": 0.00006683 }, { - "connectionEstablishedSeconds": 0.062287958, - "uploadSeconds": 0.121541381, - "downloadSeconds": 0.00005813 + "connectionEstablishedSeconds": 0.063172525, + "uploadSeconds": 0.1229846, + "downloadSeconds": 0.0000842 }, { - "connectionEstablishedSeconds": 0.063293814, - "uploadSeconds": 0.123336206, - "downloadSeconds": 0.000049922 + "connectionEstablishedSeconds": 0.063844106, + "uploadSeconds": 0.124200646, + "downloadSeconds": 0.000104537 }, { - "connectionEstablishedSeconds": 0.062950057, - "uploadSeconds": 0.122558901, - "downloadSeconds": 0.000075057 + "connectionEstablishedSeconds": 0.06151384, + "uploadSeconds": 0.119567831, + "downloadSeconds": 0.000050586 }, { - "connectionEstablishedSeconds": 0.064089433, - "uploadSeconds": 0.125055731, - "downloadSeconds": 0.000049211 + "connectionEstablishedSeconds": 0.065960291, + "uploadSeconds": 0.128569634, + "downloadSeconds": 0.000069633 }, { - "connectionEstablishedSeconds": 0.062809583, - "uploadSeconds": 0.122608524, - "downloadSeconds": 0.000044586 + "connectionEstablishedSeconds": 0.066044813, + "uploadSeconds": 0.128689496, + "downloadSeconds": 0.000055203 }, { - "connectionEstablishedSeconds": 0.063234631, - "uploadSeconds": 0.123434574, - "downloadSeconds": 0.000044071 + "connectionEstablishedSeconds": 0.064051288, + "uploadSeconds": 0.124576427, + "downloadSeconds": 0.000078675 }, { - "connectionEstablishedSeconds": 0.06434445, - "uploadSeconds": 0.125639794, - "downloadSeconds": 0.000042225 + "connectionEstablishedSeconds": 0.06467373, + "uploadSeconds": 0.125604057, + "downloadSeconds": 0.000051035 }, { - "connectionEstablishedSeconds": 0.064164746, - "uploadSeconds": 0.125205322, - "downloadSeconds": 0.00005385 + "connectionEstablishedSeconds": 0.064637567, + "uploadSeconds": 0.125751746, + "downloadSeconds": 0.000071124 }, { - "connectionEstablishedSeconds": 0.066054385, - "uploadSeconds": 0.128645324, - "downloadSeconds": 0.000117253 + "connectionEstablishedSeconds": 0.062621301, + "uploadSeconds": 0.121779078, + "downloadSeconds": 0.000046352 }, { - "connectionEstablishedSeconds": 0.064043208, - "uploadSeconds": 0.124796422, - "downloadSeconds": 0.00004381 + "connectionEstablishedSeconds": 0.065625727, + "uploadSeconds": 0.127832477, + "downloadSeconds": 0.000058497 }, { - "connectionEstablishedSeconds": 0.065831828, - "uploadSeconds": 0.128577677, - "downloadSeconds": 0.000060214 + "connectionEstablishedSeconds": 0.061680041, + "uploadSeconds": 0.119933855, + "downloadSeconds": 0.000048531 }, { - "connectionEstablishedSeconds": 0.060849511, - "uploadSeconds": 0.118586915, - "downloadSeconds": 0.000043138 + "connectionEstablishedSeconds": 0.066777416, + "uploadSeconds": 0.130039376, + "downloadSeconds": 0.000053951 }, { - "connectionEstablishedSeconds": 0.066767867, - "uploadSeconds": 0.130452973, - "downloadSeconds": 0.00004553 + "connectionEstablishedSeconds": 0.065635455, + "uploadSeconds": 0.127942878, + "downloadSeconds": 0.000067954 }, { - "connectionEstablishedSeconds": 0.06153828, - "uploadSeconds": 0.119777042, - "downloadSeconds": 0.000074773 + "connectionEstablishedSeconds": 0.064511421, + "uploadSeconds": 0.125934908, + "downloadSeconds": 0.000064877 }, { - "connectionEstablishedSeconds": 0.06366191, - "uploadSeconds": 0.124192021, - "downloadSeconds": 0.000047986 + "connectionEstablishedSeconds": 0.066366217, + "uploadSeconds": 0.129128895, + "downloadSeconds": 0.000048741 }, { - "connectionEstablishedSeconds": 0.062317532, - "uploadSeconds": 0.121469918, - "downloadSeconds": 0.000050752 + "connectionEstablishedSeconds": 0.064343476, + "uploadSeconds": 0.125404508, + "downloadSeconds": 0.000051655 }, { - "connectionEstablishedSeconds": 0.064815759, - "uploadSeconds": 0.126497739, - "downloadSeconds": 0.00004439 + "connectionEstablishedSeconds": 0.06482128, + "uploadSeconds": 0.126211526, + "downloadSeconds": 0.000069293 }, { - "connectionEstablishedSeconds": 0.065128152, - "uploadSeconds": 0.127083413, - "downloadSeconds": 0.00004496 + "connectionEstablishedSeconds": 0.064502871, + "uploadSeconds": 0.125611693, + "downloadSeconds": 0.000074536 }, { - "connectionEstablishedSeconds": 0.061595343, - "uploadSeconds": 0.11990911, - "downloadSeconds": 0.000049068 + "connectionEstablishedSeconds": 0.064757256, + "uploadSeconds": 0.126138884, + "downloadSeconds": 0.000095554 }, { - "connectionEstablishedSeconds": 0.06438175, - "uploadSeconds": 0.125755389, - "downloadSeconds": 0.000054198 + "connectionEstablishedSeconds": 0.062325722, + "uploadSeconds": 0.121371296, + "downloadSeconds": 0.000070108 }, { - "connectionEstablishedSeconds": 0.064237585, - "uploadSeconds": 0.125526082, - "downloadSeconds": 0.000045735 + "connectionEstablishedSeconds": 0.06502706, + "uploadSeconds": 0.126730306, + "downloadSeconds": 0.000097587 }, { - "connectionEstablishedSeconds": 0.066888061, - "uploadSeconds": 0.130603408, - "downloadSeconds": 0.000062431 + "connectionEstablishedSeconds": 0.063551583, + "uploadSeconds": 0.12373032, + "downloadSeconds": 0.000070006 }, { - "connectionEstablishedSeconds": 0.062696867, - "uploadSeconds": 0.122318473, - "downloadSeconds": 0.000060549 + "connectionEstablishedSeconds": 0.063523662, + "uploadSeconds": 0.123407521, + "downloadSeconds": 0.000095457 }, { - "connectionEstablishedSeconds": 0.062242458, - "uploadSeconds": 0.121236386, - "downloadSeconds": 0.00004419 + "connectionEstablishedSeconds": 0.062619221, + "uploadSeconds": 0.121918325, + "downloadSeconds": 0.000076268 }, { - "connectionEstablishedSeconds": 0.065115077, - "uploadSeconds": 0.127120581, - "downloadSeconds": 0.000043557 + "connectionEstablishedSeconds": 0.065951366, + "uploadSeconds": 0.128622794, + "downloadSeconds": 0.000081698 }, { - "connectionEstablishedSeconds": 0.061703831, - "uploadSeconds": 0.120399369, - "downloadSeconds": 0.000076802 + "connectionEstablishedSeconds": 0.064698136, + "uploadSeconds": 0.125988787, + "downloadSeconds": 0.000092626 }, { - "connectionEstablishedSeconds": 0.060947387, - "uploadSeconds": 0.118735343, - "downloadSeconds": 0.000041297 + "connectionEstablishedSeconds": 0.061843308, + "uploadSeconds": 0.119684107, + "downloadSeconds": 0.00008365 }, { - "connectionEstablishedSeconds": 0.062627883, - "uploadSeconds": 0.122338635, - "downloadSeconds": 0.000062754 + "connectionEstablishedSeconds": 0.063300197, + "uploadSeconds": 0.123280677, + "downloadSeconds": 0.000092735 }, { - "connectionEstablishedSeconds": 0.06587111, - "uploadSeconds": 0.128622617, - "downloadSeconds": 0.000071002 + "connectionEstablishedSeconds": 0.063834879, + "uploadSeconds": 0.124240871, + "downloadSeconds": 0.000085256 }, { - "connectionEstablishedSeconds": 0.061339484, - "uploadSeconds": 0.119520814, - "downloadSeconds": 0.000044442 + "connectionEstablishedSeconds": 0.062236693, + "uploadSeconds": 0.121076369, + "downloadSeconds": 0.000085015 }, { - "connectionEstablishedSeconds": 0.06266093, - "uploadSeconds": 0.122319167, - "downloadSeconds": 0.000045757 + "connectionEstablishedSeconds": 0.066130838, + "uploadSeconds": 0.12887493, + "downloadSeconds": 0.000086221 }, { - "connectionEstablishedSeconds": 0.059822555, - "uploadSeconds": 0.116451437, - "downloadSeconds": 0.000051119 + "connectionEstablishedSeconds": 0.06279212, + "uploadSeconds": 0.122060554, + "downloadSeconds": 0.000094097 }, { - "connectionEstablishedSeconds": 0.064790049, - "uploadSeconds": 0.126349844, - "downloadSeconds": 0.000054441 + "connectionEstablishedSeconds": 0.066620106, + "uploadSeconds": 0.129906214, + "downloadSeconds": 0.000074539 }, { - "connectionEstablishedSeconds": 0.060382326, - "uploadSeconds": 0.117494745, - "downloadSeconds": 0.000066657 + "connectionEstablishedSeconds": 0.065449705, + "uploadSeconds": 0.127120498, + "downloadSeconds": 0.000070276 }, { - "connectionEstablishedSeconds": 0.064148746, - "uploadSeconds": 0.125341426, - "downloadSeconds": 0.000068746 + "connectionEstablishedSeconds": 0.064987889, + "uploadSeconds": 0.126646536, + "downloadSeconds": 0.000097892 }, { - "connectionEstablishedSeconds": 0.064827261, - "uploadSeconds": 0.126498123, - "downloadSeconds": 0.000046183 + "connectionEstablishedSeconds": 0.065076398, + "uploadSeconds": 0.126771911, + "downloadSeconds": 0.000105138 }, { - "connectionEstablishedSeconds": 0.063153185, - "uploadSeconds": 0.123135312, - "downloadSeconds": 0.000056084 + "connectionEstablishedSeconds": 0.064257919, + "uploadSeconds": 0.124723095, + "downloadSeconds": 0.00009047 }, { - "connectionEstablishedSeconds": 0.064816062, - "uploadSeconds": 0.126277356, - "downloadSeconds": 0.000057828 + "connectionEstablishedSeconds": 0.060898769, + "uploadSeconds": 0.118227532, + "downloadSeconds": 0.000084797 }, { - "connectionEstablishedSeconds": 0.064278199, - "uploadSeconds": 0.125414573, - "downloadSeconds": 0.000056262 + "connectionEstablishedSeconds": 0.063728016, + "uploadSeconds": 0.123884811, + "downloadSeconds": 0.000080106 }, { - "connectionEstablishedSeconds": 0.062752747, - "uploadSeconds": 0.122380922, - "downloadSeconds": 0.00004374 + "connectionEstablishedSeconds": 0.064262811, + "uploadSeconds": 0.124954518, + "downloadSeconds": 0.000090781 }, { - "connectionEstablishedSeconds": 0.063445685, - "uploadSeconds": 0.12384881, - "downloadSeconds": 0.000058514 + "connectionEstablishedSeconds": 0.066008012, + "uploadSeconds": 0.128710865, + "downloadSeconds": 0.000055674 }, { - "connectionEstablishedSeconds": 0.061353473, - "uploadSeconds": 0.11954829, - "downloadSeconds": 0.000046112 + "connectionEstablishedSeconds": 0.065924989, + "uploadSeconds": 0.128442804, + "downloadSeconds": 0.0000892 }, { - "connectionEstablishedSeconds": 0.061389462, - "uploadSeconds": 0.119577677, - "downloadSeconds": 0.00004814 + "connectionEstablishedSeconds": 0.064246623, + "uploadSeconds": 0.125166351, + "downloadSeconds": 0.000045633 }, { - "connectionEstablishedSeconds": 0.06504855, - "uploadSeconds": 0.126994673, - "downloadSeconds": 0.000045321 + "connectionEstablishedSeconds": 0.065089089, + "uploadSeconds": 0.126801117, + "downloadSeconds": 0.000051485 }, { - "connectionEstablishedSeconds": 0.063919567, - "uploadSeconds": 0.124684165, - "downloadSeconds": 0.000046332 + "connectionEstablishedSeconds": 0.064307456, + "uploadSeconds": 0.125302103, + "downloadSeconds": 0.000052845 }, { - "connectionEstablishedSeconds": 0.063229164, - "uploadSeconds": 0.123321507, - "downloadSeconds": 0.000067032 + "connectionEstablishedSeconds": 0.064868441, + "uploadSeconds": 0.126266168, + "downloadSeconds": 0.000126958 }, { - "connectionEstablishedSeconds": 0.06335159, - "uploadSeconds": 0.123595726, - "downloadSeconds": 0.000041004 + "connectionEstablishedSeconds": 0.066007201, + "uploadSeconds": 0.128569868, + "downloadSeconds": 0.000095506 }, { - "connectionEstablishedSeconds": 0.065081469, - "uploadSeconds": 0.126797911, - "downloadSeconds": 0.000043306 + "connectionEstablishedSeconds": 0.063274614, + "uploadSeconds": 0.122752513, + "downloadSeconds": 0.00005209 }, { - "connectionEstablishedSeconds": 0.061901279, - "uploadSeconds": 0.120697729, - "downloadSeconds": 0.000047542 + "connectionEstablishedSeconds": 0.064596218, + "uploadSeconds": 0.125676799, + "downloadSeconds": 0.000055948 }, { - "connectionEstablishedSeconds": 0.064367226, - "uploadSeconds": 0.125627014, - "downloadSeconds": 0.000045714 + "connectionEstablishedSeconds": 0.066233576, + "uploadSeconds": 0.129240386, + "downloadSeconds": 0.000069711 }, { - "connectionEstablishedSeconds": 0.063913815, - "uploadSeconds": 0.124644766, - "downloadSeconds": 0.00004568 + "connectionEstablishedSeconds": 0.062692077, + "uploadSeconds": 0.121887906, + "downloadSeconds": 0.000096332 }, { - "connectionEstablishedSeconds": 0.06340771, - "uploadSeconds": 0.123482778, - "downloadSeconds": 0.000044898 + "connectionEstablishedSeconds": 0.066084061, + "uploadSeconds": 0.128741924, + "downloadSeconds": 0.000060631 }, { - "connectionEstablishedSeconds": 0.063186517, - "uploadSeconds": 0.123321763, - "downloadSeconds": 0.000058528 + "connectionEstablishedSeconds": 0.063618972, + "uploadSeconds": 0.123940924, + "downloadSeconds": 0.000079125 }, { - "connectionEstablishedSeconds": 0.064830366, - "uploadSeconds": 0.126475036, - "downloadSeconds": 0.000043936 + "connectionEstablishedSeconds": 0.064626859, + "uploadSeconds": 0.125812036, + "downloadSeconds": 0.00006151 }, { - "connectionEstablishedSeconds": 0.064311509, - "uploadSeconds": 0.1256985, - "downloadSeconds": 0.00004633 + "connectionEstablishedSeconds": 0.064685468, + "uploadSeconds": 0.125981711, + "downloadSeconds": 0.000079766 }, { - "connectionEstablishedSeconds": 0.064923178, - "uploadSeconds": 0.126746877, - "downloadSeconds": 0.000053903 + "connectionEstablishedSeconds": 0.066351685, + "uploadSeconds": 0.129293632, + "downloadSeconds": 0.000057879 }, { - "connectionEstablishedSeconds": 0.062433534, - "uploadSeconds": 0.121735648, - "downloadSeconds": 0.000042678 + "connectionEstablishedSeconds": 0.066941968, + "uploadSeconds": 0.13060837, + "downloadSeconds": 0.000091937 }, { - "connectionEstablishedSeconds": 0.0630008, - "uploadSeconds": 0.122846943, - "downloadSeconds": 0.000069978 + "connectionEstablishedSeconds": 0.063342774, + "uploadSeconds": 0.123086611, + "downloadSeconds": 0.000090204 }, { - "connectionEstablishedSeconds": 0.061905677, - "uploadSeconds": 0.120652533, - "downloadSeconds": 0.000041876 + "connectionEstablishedSeconds": 0.061606028, + "uploadSeconds": 0.11983355, + "downloadSeconds": 0.000098157 }, { - "connectionEstablishedSeconds": 0.061748607, - "uploadSeconds": 0.120433329, - "downloadSeconds": 0.000051629 + "connectionEstablishedSeconds": 0.06640212, + "uploadSeconds": 0.129430666, + "downloadSeconds": 0.000103247 }, { - "connectionEstablishedSeconds": 0.063537551, - "uploadSeconds": 0.12409735, - "downloadSeconds": 0.000048765 + "connectionEstablishedSeconds": 0.061717249, + "uploadSeconds": 0.120163634, + "downloadSeconds": 0.000067477 }, { - "connectionEstablishedSeconds": 0.065324316, - "uploadSeconds": 0.127421798, - "downloadSeconds": 0.000050191 + "connectionEstablishedSeconds": 0.062332833, + "uploadSeconds": 0.121309199, + "downloadSeconds": 0.000067077 }, { - "connectionEstablishedSeconds": 0.062042321, - "uploadSeconds": 0.120701257, - "downloadSeconds": 0.000083878 + "connectionEstablishedSeconds": 0.066746587, + "uploadSeconds": 0.130068658, + "downloadSeconds": 0.000142669 }, { - "connectionEstablishedSeconds": 0.065968655, - "uploadSeconds": 0.128594752, - "downloadSeconds": 0.000046201 + "connectionEstablishedSeconds": 0.065263106, + "uploadSeconds": 0.127183749, + "downloadSeconds": 0.000086632 }, { - "connectionEstablishedSeconds": 0.066267306, - "uploadSeconds": 0.129164475, - "downloadSeconds": 0.000047815 + "connectionEstablishedSeconds": 0.064773722, + "uploadSeconds": 0.126194066, + "downloadSeconds": 0.000082269 }, { - "connectionEstablishedSeconds": 0.063216526, - "uploadSeconds": 0.123040735, - "downloadSeconds": 0.000048823 + "connectionEstablishedSeconds": 0.063074204, + "uploadSeconds": 0.122612869, + "downloadSeconds": 0.000050804 }, { - "connectionEstablishedSeconds": 0.062511579, - "uploadSeconds": 0.121695004, - "downloadSeconds": 0.000098282 + "connectionEstablishedSeconds": 0.065106436, + "uploadSeconds": 0.126604141, + "downloadSeconds": 0.00004978 }, { - "connectionEstablishedSeconds": 0.06385184, - "uploadSeconds": 0.124698687, - "downloadSeconds": 0.00004754 + "connectionEstablishedSeconds": 0.061870206, + "uploadSeconds": 0.120408102, + "downloadSeconds": 0.000076583 }, { - "connectionEstablishedSeconds": 0.066343358, - "uploadSeconds": 0.129372553, - "downloadSeconds": 0.000045503 + "connectionEstablishedSeconds": 0.065547347, + "uploadSeconds": 0.127744669, + "downloadSeconds": 0.000083739 }, { - "connectionEstablishedSeconds": 0.063851167, - "uploadSeconds": 0.124576921, - "downloadSeconds": 0.000073813 + "connectionEstablishedSeconds": 0.062585839, + "uploadSeconds": 0.121799329, + "downloadSeconds": 0.000049104 }, { - "connectionEstablishedSeconds": 0.061794819, - "uploadSeconds": 0.120476674, - "downloadSeconds": 0.000054353 + "connectionEstablishedSeconds": 0.065295289, + "uploadSeconds": 0.127162027, + "downloadSeconds": 0.000100753 }, { - "connectionEstablishedSeconds": 0.062373556, - "uploadSeconds": 0.121513655, - "downloadSeconds": 0.000064687 + "connectionEstablishedSeconds": 0.064643425, + "uploadSeconds": 0.125866769, + "downloadSeconds": 0.000128764 }, { - "connectionEstablishedSeconds": 0.065235287, - "uploadSeconds": 0.127276967, - "downloadSeconds": 0.000043501 + "connectionEstablishedSeconds": 0.065628334, + "uploadSeconds": 0.127949056, + "downloadSeconds": 0.000085941 }, { - "connectionEstablishedSeconds": 0.063303476, - "uploadSeconds": 0.123601522, - "downloadSeconds": 0.000054569 + "connectionEstablishedSeconds": 0.063687324, + "uploadSeconds": 0.124031975, + "downloadSeconds": 0.000053998 }, { - "connectionEstablishedSeconds": 0.06083302, - "uploadSeconds": 0.118595803, - "downloadSeconds": 0.000044348 + "connectionEstablishedSeconds": 0.065033196, + "uploadSeconds": 0.126591394, + "downloadSeconds": 0.000090445 } ], "implementation": "rust-libp2p-quinn", @@ -2504,503 +2504,503 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192846838, - "downloadSeconds": 0.000037175 + "uploadSeconds": 0.182526996, + "downloadSeconds": 0.000028081 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187225653, - "downloadSeconds": 0.00002122 + "uploadSeconds": 0.190504604, + "downloadSeconds": 0.000030004 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180294225, - "downloadSeconds": 0.000020804 + "uploadSeconds": 0.193522642, + "downloadSeconds": 0.000033063 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188550533, - "downloadSeconds": 0.00001889 + "uploadSeconds": 0.188083933, + "downloadSeconds": 0.000022961 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187079499, - "downloadSeconds": 0.000019885 + "uploadSeconds": 0.188448323, + "downloadSeconds": 0.00002412 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183078712, - "downloadSeconds": 0.000019767 + "uploadSeconds": 0.196740918, + "downloadSeconds": 0.000026258 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179674262, - "downloadSeconds": 0.000018376 + "uploadSeconds": 0.18308572, + "downloadSeconds": 0.000028927 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189301769, - "downloadSeconds": 0.000016046 + "uploadSeconds": 0.185745296, + "downloadSeconds": 0.000024131 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179261369, - "downloadSeconds": 0.000021543 + "uploadSeconds": 0.18907954, + "downloadSeconds": 0.00001991 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195516869, - "downloadSeconds": 0.00002226 + "uploadSeconds": 0.185833055, + "downloadSeconds": 0.000023142 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191348801, - "downloadSeconds": 0.000019777 + "uploadSeconds": 0.189649454, + "downloadSeconds": 0.000024058 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187403028, - "downloadSeconds": 0.000019978 + "uploadSeconds": 0.191497443, + "downloadSeconds": 0.000021405 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194552184, - "downloadSeconds": 0.000027462 + "uploadSeconds": 0.189316359, + "downloadSeconds": 0.000023068 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187159984, - "downloadSeconds": 0.000018502 + "uploadSeconds": 0.190140897, + "downloadSeconds": 0.000022992 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190738456, - "downloadSeconds": 0.000021419 + "uploadSeconds": 0.195869519, + "downloadSeconds": 0.000029358 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192054637, - "downloadSeconds": 0.000026524 + "uploadSeconds": 0.189150223, + "downloadSeconds": 0.000024037 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180311141, - "downloadSeconds": 0.000020699 + "uploadSeconds": 0.192729951, + "downloadSeconds": 0.000022296 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191411991, - "downloadSeconds": 0.000021317 + "uploadSeconds": 0.193891543, + "downloadSeconds": 0.000024125 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188145831, - "downloadSeconds": 0.000020147 + "uploadSeconds": 0.188204969, + "downloadSeconds": 0.000027787 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186536958, - "downloadSeconds": 0.000017486 + "uploadSeconds": 0.180378732, + "downloadSeconds": 0.000022672 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18584601, - "downloadSeconds": 0.000021541 + "uploadSeconds": 0.177582096, + "downloadSeconds": 0.000022659 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.178354975, - "downloadSeconds": 0.000020018 + "uploadSeconds": 0.193350469, + "downloadSeconds": 0.000020163 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.178293565, - "downloadSeconds": 0.000019429 + "uploadSeconds": 0.185767481, + "downloadSeconds": 0.000026842 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186344401, - "downloadSeconds": 0.000016421 + "uploadSeconds": 0.193804953, + "downloadSeconds": 0.000020949 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193071917, - "downloadSeconds": 0.000019174 + "uploadSeconds": 0.18438266, + "downloadSeconds": 0.000023656 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190289691, - "downloadSeconds": 0.000026341 + "uploadSeconds": 0.183008634, + "downloadSeconds": 0.000023277 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188518447, - "downloadSeconds": 0.000021059 + "uploadSeconds": 0.191210666, + "downloadSeconds": 0.000024137 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.19045129, - "downloadSeconds": 0.000026429 + "uploadSeconds": 0.186482695, + "downloadSeconds": 0.000022633 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186835899, - "downloadSeconds": 0.000030147 + "uploadSeconds": 0.189309966, + "downloadSeconds": 0.000023136 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183109891, - "downloadSeconds": 0.000023588 + "uploadSeconds": 0.191818133, + "downloadSeconds": 0.000021278 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185059453, - "downloadSeconds": 0.000023165 + "uploadSeconds": 0.189251616, + "downloadSeconds": 0.000021964 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185681056, - "downloadSeconds": 0.000026437 + "uploadSeconds": 0.181809604, + "downloadSeconds": 0.000028936 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183409423, - "downloadSeconds": 0.000016582 + "uploadSeconds": 0.18660164, + "downloadSeconds": 0.000024492 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184370277, - "downloadSeconds": 0.000026094 + "uploadSeconds": 0.189789357, + "downloadSeconds": 0.000021157 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192355075, - "downloadSeconds": 0.0000183 + "uploadSeconds": 0.184932541, + "downloadSeconds": 0.000023631 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184482574, - "downloadSeconds": 0.000022659 + "uploadSeconds": 0.186822751, + "downloadSeconds": 0.000020386 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185725446, - "downloadSeconds": 0.000016072 + "uploadSeconds": 0.1918446, + "downloadSeconds": 0.000025974 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188063944, - "downloadSeconds": 0.000022491 + "uploadSeconds": 0.193359663, + "downloadSeconds": 0.000023906 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180056658, - "downloadSeconds": 0.000017605 + "uploadSeconds": 0.180623778, + "downloadSeconds": 0.000022066 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188372489, - "downloadSeconds": 0.000022438 + "uploadSeconds": 0.194065624, + "downloadSeconds": 0.000024338 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192814141, - "downloadSeconds": 0.000020323 + "uploadSeconds": 0.186297434, + "downloadSeconds": 0.000024067 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187925726, - "downloadSeconds": 0.000025641 + "uploadSeconds": 0.193217938, + "downloadSeconds": 0.00003172 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187622686, - "downloadSeconds": 0.000018206 + "uploadSeconds": 0.189385811, + "downloadSeconds": 0.000030405 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187187961, - "downloadSeconds": 0.00001939 + "uploadSeconds": 0.187927176, + "downloadSeconds": 0.000029698 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182899565, - "downloadSeconds": 0.000019681 + "uploadSeconds": 0.188805384, + "downloadSeconds": 0.000034208 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185843579, - "downloadSeconds": 0.000019817 + "uploadSeconds": 0.189654743, + "downloadSeconds": 0.000024488 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188049356, - "downloadSeconds": 0.00002526 + "uploadSeconds": 0.191317788, + "downloadSeconds": 0.000030165 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195165351, - "downloadSeconds": 0.000019705 + "uploadSeconds": 0.177344546, + "downloadSeconds": 0.000022917 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186840089, - "downloadSeconds": 0.000020557 + "uploadSeconds": 0.185253469, + "downloadSeconds": 0.000021784 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18747958, - "downloadSeconds": 0.000026473 + "uploadSeconds": 0.194740613, + "downloadSeconds": 0.000024717 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185693664, - "downloadSeconds": 0.000019646 + "uploadSeconds": 0.189147404, + "downloadSeconds": 0.000030423 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193451665, - "downloadSeconds": 0.000022524 + "uploadSeconds": 0.194014909, + "downloadSeconds": 0.000020974 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194108328, - "downloadSeconds": 0.000019511 + "uploadSeconds": 0.181861578, + "downloadSeconds": 0.00002424 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189855379, - "downloadSeconds": 0.000019748 + "uploadSeconds": 0.192169323, + "downloadSeconds": 0.000024615 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182903898, - "downloadSeconds": 0.000017027 + "uploadSeconds": 0.188696576, + "downloadSeconds": 0.000021796 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191944715, - "downloadSeconds": 0.000027435 + "uploadSeconds": 0.179715562, + "downloadSeconds": 0.000024024 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191778908, - "downloadSeconds": 0.000025572 + "uploadSeconds": 0.187766484, + "downloadSeconds": 0.000020671 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190211536, - "downloadSeconds": 0.000026185 + "uploadSeconds": 0.191328207, + "downloadSeconds": 0.000021573 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184234077, - "downloadSeconds": 0.000033723 + "uploadSeconds": 0.190159105, + "downloadSeconds": 0.000025215 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185647252, - "downloadSeconds": 0.000030603 + "uploadSeconds": 0.196031344, + "downloadSeconds": 0.000021368 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183308292, - "downloadSeconds": 0.000022054 + "uploadSeconds": 0.188587152, + "downloadSeconds": 0.000029023 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180877607, - "downloadSeconds": 0.000026982 + "uploadSeconds": 0.182829839, + "downloadSeconds": 0.000021626 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180613209, - "downloadSeconds": 0.000026944 + "uploadSeconds": 0.183022527, + "downloadSeconds": 0.000029741 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.19123981, - "downloadSeconds": 0.000022695 + "uploadSeconds": 0.191183223, + "downloadSeconds": 0.000023445 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188249077, - "downloadSeconds": 0.00001968 + "uploadSeconds": 0.195757349, + "downloadSeconds": 0.000030259 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188310162, - "downloadSeconds": 0.000019461 + "uploadSeconds": 0.188233925, + "downloadSeconds": 0.000032255 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192340124, - "downloadSeconds": 0.000024555 + "uploadSeconds": 0.184361716, + "downloadSeconds": 0.000028005 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188473932, - "downloadSeconds": 0.000015915 + "uploadSeconds": 0.186432378, + "downloadSeconds": 0.000019995 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186878094, - "downloadSeconds": 0.000019374 + "uploadSeconds": 0.188335389, + "downloadSeconds": 0.000024858 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185679154, - "downloadSeconds": 0.000016414 + "uploadSeconds": 0.191171584, + "downloadSeconds": 0.000021449 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180612714, - "downloadSeconds": 0.000019835 + "uploadSeconds": 0.193595616, + "downloadSeconds": 0.000024224 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192304312, - "downloadSeconds": 0.000021444 + "uploadSeconds": 0.183355964, + "downloadSeconds": 0.000020573 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188282608, - "downloadSeconds": 0.000017187 + "uploadSeconds": 0.193506624, + "downloadSeconds": 0.000024937 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183278194, - "downloadSeconds": 0.000018204 + "uploadSeconds": 0.184619421, + "downloadSeconds": 0.000021662 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184437713, - "downloadSeconds": 0.000027936 + "uploadSeconds": 0.182013165, + "downloadSeconds": 0.000023987 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185529677, - "downloadSeconds": 0.00001732 + "uploadSeconds": 0.179699999, + "downloadSeconds": 0.000020907 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193016666, - "downloadSeconds": 0.000020431 + "uploadSeconds": 0.191663979, + "downloadSeconds": 0.000024939 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195416309, - "downloadSeconds": 0.000022508 + "uploadSeconds": 0.186674829, + "downloadSeconds": 0.000024025 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183699899, - "downloadSeconds": 0.000021716 + "uploadSeconds": 0.18304345, + "downloadSeconds": 0.000021069 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185744257, - "downloadSeconds": 0.000022602 + "uploadSeconds": 0.194300055, + "downloadSeconds": 0.000026738 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189250203, - "downloadSeconds": 0.000020598 + "uploadSeconds": 0.184448741, + "downloadSeconds": 0.000032237 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185181606, - "downloadSeconds": 0.000019866 + "uploadSeconds": 0.193911983, + "downloadSeconds": 0.000022306 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18333426, - "downloadSeconds": 0.000020514 + "uploadSeconds": 0.187826647, + "downloadSeconds": 0.000024787 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193817077, - "downloadSeconds": 0.000018949 + "uploadSeconds": 0.188415711, + "downloadSeconds": 0.000022936 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18357926, - "downloadSeconds": 0.000024613 + "uploadSeconds": 0.189168992, + "downloadSeconds": 0.000023928 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179392491, - "downloadSeconds": 0.000026305 + "uploadSeconds": 0.193147287, + "downloadSeconds": 0.000028749 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190020686, - "downloadSeconds": 0.000027925 + "uploadSeconds": 0.187182336, + "downloadSeconds": 0.000021227 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192780389, - "downloadSeconds": 0.000021992 + "uploadSeconds": 0.190808467, + "downloadSeconds": 0.000021406 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189871699, - "downloadSeconds": 0.000020478 + "uploadSeconds": 0.186257853, + "downloadSeconds": 0.000029142 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195791204, - "downloadSeconds": 0.000022177 + "uploadSeconds": 0.192046336, + "downloadSeconds": 0.000020604 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183957873, - "downloadSeconds": 0.000020035 + "uploadSeconds": 0.189009156, + "downloadSeconds": 0.000024835 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186134924, - "downloadSeconds": 0.000021316 + "uploadSeconds": 0.188875391, + "downloadSeconds": 0.000021557 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186717805, - "downloadSeconds": 0.000019271 + "uploadSeconds": 0.187455696, + "downloadSeconds": 0.000032943 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193530685, - "downloadSeconds": 0.000022671 + "uploadSeconds": 0.188796385, + "downloadSeconds": 0.00002132 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186105862, - "downloadSeconds": 0.000025304 + "uploadSeconds": 0.189167855, + "downloadSeconds": 0.000023001 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18535181, - "downloadSeconds": 0.000019895 + "uploadSeconds": 0.192158684, + "downloadSeconds": 0.000023581 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184994725, - "downloadSeconds": 0.000025617 + "uploadSeconds": 0.182266809, + "downloadSeconds": 0.00002149 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188647571, - "downloadSeconds": 0.000027329 + "uploadSeconds": 0.184985228, + "downloadSeconds": 0.000020968 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190621346, - "downloadSeconds": 0.000026131 + "uploadSeconds": 0.191639946, + "downloadSeconds": 0.000031242 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185577895, - "downloadSeconds": 0.000022229 + "uploadSeconds": 0.181595298, + "downloadSeconds": 0.000022569 } ], "implementation": "https", @@ -3010,504 +3010,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.246982543, - "uploadSeconds": 0.000002333, - "downloadSeconds": 0.060636799 + "connectionEstablishedSeconds": 0.249245346, + "uploadSeconds": 0.00000296, + "downloadSeconds": 0.121561847 }, { - "connectionEstablishedSeconds": 0.254987407, - "uploadSeconds": 0.000002637, - "downloadSeconds": 0.125583931 + "connectionEstablishedSeconds": 0.255001237, + "uploadSeconds": 0.000003556, + "downloadSeconds": 0.125212686 }, { - "connectionEstablishedSeconds": 0.252265474, - "uploadSeconds": 0.000003042, - "downloadSeconds": 0.124496056 + "connectionEstablishedSeconds": 0.255493913, + "uploadSeconds": 0.000003514, + "downloadSeconds": 0.063117853 }, { - "connectionEstablishedSeconds": 0.257593737, - "uploadSeconds": 0.000001947, - "downloadSeconds": 0.063516924 + "connectionEstablishedSeconds": 0.262519463, + "uploadSeconds": 0.000003092, + "downloadSeconds": 0.129294372 }, { - "connectionEstablishedSeconds": 0.249634131, - "uploadSeconds": 0.000002236, - "downloadSeconds": 0.061606688 + "connectionEstablishedSeconds": 0.239658021, + "uploadSeconds": 0.000003293, + "downloadSeconds": 0.11715543 }, { - "connectionEstablishedSeconds": 0.256219747, - "uploadSeconds": 0.000002639, - "downloadSeconds": 0.063248102 + "connectionEstablishedSeconds": 0.263939584, + "uploadSeconds": 0.000003054, + "downloadSeconds": 0.064954231 }, { - "connectionEstablishedSeconds": 0.252442248, - "uploadSeconds": 0.000002197, - "downloadSeconds": 0.062669369 + "connectionEstablishedSeconds": 0.251204172, + "uploadSeconds": 0.000003244, + "downloadSeconds": 0.062123993 }, { - "connectionEstablishedSeconds": 0.259427625, - "uploadSeconds": 0.000003211, - "downloadSeconds": 0.127981684 + "connectionEstablishedSeconds": 0.259751512, + "uploadSeconds": 0.000004006, + "downloadSeconds": 0.127990905 }, { - "connectionEstablishedSeconds": 0.246514725, - "uploadSeconds": 0.000002665, - "downloadSeconds": 0.121201652 + "connectionEstablishedSeconds": 0.237142565, + "uploadSeconds": 0.000003207, + "downloadSeconds": 0.058597937 }, { - "connectionEstablishedSeconds": 0.256074228, - "uploadSeconds": 0.000002774, - "downloadSeconds": 0.063105187 + "connectionEstablishedSeconds": 0.248714979, + "uploadSeconds": 0.000003286, + "downloadSeconds": 0.06106676 }, { - "connectionEstablishedSeconds": 0.257314965, - "uploadSeconds": 0.000002128, - "downloadSeconds": 0.063868077 + "connectionEstablishedSeconds": 0.252705849, + "uploadSeconds": 0.00000327, + "downloadSeconds": 0.124599556 }, { - "connectionEstablishedSeconds": 0.252954088, - "uploadSeconds": 0.000002252, - "downloadSeconds": 0.062319815 + "connectionEstablishedSeconds": 0.246962278, + "uploadSeconds": 0.000003538, + "downloadSeconds": 0.121470347 }, { - "connectionEstablishedSeconds": 0.247593448, - "uploadSeconds": 0.000002732, - "downloadSeconds": 0.061417523 + "connectionEstablishedSeconds": 0.253085008, + "uploadSeconds": 0.000003344, + "downloadSeconds": 0.062264437 }, { - "connectionEstablishedSeconds": 0.248485597, - "uploadSeconds": 0.000002477, - "downloadSeconds": 0.122739395 + "connectionEstablishedSeconds": 0.245111484, + "uploadSeconds": 0.000002724, + "downloadSeconds": 0.120523806 }, { - "connectionEstablishedSeconds": 0.252755774, - "uploadSeconds": 0.000003128, - "downloadSeconds": 0.12465053 + "connectionEstablishedSeconds": 0.242808553, + "uploadSeconds": 0.00000674, + "downloadSeconds": 0.061028522 }, { - "connectionEstablishedSeconds": 0.24678383, - "uploadSeconds": 0.000003171, - "downloadSeconds": 0.061170425 + "connectionEstablishedSeconds": 0.247597565, + "uploadSeconds": 0.000003013, + "downloadSeconds": 0.121020036 }, { - "connectionEstablishedSeconds": 0.256799921, - "uploadSeconds": 0.000002516, - "downloadSeconds": 0.063288139 + "connectionEstablishedSeconds": 0.250210602, + "uploadSeconds": 0.000003549, + "downloadSeconds": 0.123252958 }, { - "connectionEstablishedSeconds": 0.258533884, - "uploadSeconds": 0.000002448, - "downloadSeconds": 0.063377461 + "connectionEstablishedSeconds": 0.26000532, + "uploadSeconds": 0.000002986, + "downloadSeconds": 0.127196999 }, { - "connectionEstablishedSeconds": 0.240389808, - "uploadSeconds": 0.000002816, - "downloadSeconds": 0.117642179 + "connectionEstablishedSeconds": 0.255290376, + "uploadSeconds": 0.000003333, + "downloadSeconds": 0.062675862 }, { - "connectionEstablishedSeconds": 0.252817235, - "uploadSeconds": 0.000002452, - "downloadSeconds": 0.123930684 + "connectionEstablishedSeconds": 0.253008209, + "uploadSeconds": 0.000002933, + "downloadSeconds": 0.062583056 }, { - "connectionEstablishedSeconds": 0.253777012, - "uploadSeconds": 0.000002057, - "downloadSeconds": 0.062848806 + "connectionEstablishedSeconds": 0.247708643, + "uploadSeconds": 0.000003901, + "downloadSeconds": 0.061294321 }, { - "connectionEstablishedSeconds": 0.245131591, - "uploadSeconds": 0.000003236, - "downloadSeconds": 0.120963083 + "connectionEstablishedSeconds": 0.244514103, + "uploadSeconds": 0.0000027, + "downloadSeconds": 0.120299674 }, { - "connectionEstablishedSeconds": 0.240467804, - "uploadSeconds": 0.000004461, - "downloadSeconds": 0.118627047 + "connectionEstablishedSeconds": 0.25041742, + "uploadSeconds": 0.000002909, + "downloadSeconds": 0.061566587 }, { - "connectionEstablishedSeconds": 0.255467807, - "uploadSeconds": 0.000002626, - "downloadSeconds": 0.062827272 + "connectionEstablishedSeconds": 0.257779055, + "uploadSeconds": 0.000003455, + "downloadSeconds": 0.063430914 }, { - "connectionEstablishedSeconds": 0.249338884, - "uploadSeconds": 0.000002342, - "downloadSeconds": 0.121499683 + "connectionEstablishedSeconds": 0.255153072, + "uploadSeconds": 0.000002986, + "downloadSeconds": 0.124803856 }, { - "connectionEstablishedSeconds": 0.252348186, - "uploadSeconds": 0.000003027, - "downloadSeconds": 0.062162683 + "connectionEstablishedSeconds": 0.251417501, + "uploadSeconds": 0.000002544, + "downloadSeconds": 0.123507998 }, { - "connectionEstablishedSeconds": 0.249576434, - "uploadSeconds": 0.00000247, - "downloadSeconds": 0.061533785 + "connectionEstablishedSeconds": 0.255067874, + "uploadSeconds": 0.000004773, + "downloadSeconds": 0.124714757 }, { - "connectionEstablishedSeconds": 0.25301387, - "uploadSeconds": 0.000002702, - "downloadSeconds": 0.062807451 + "connectionEstablishedSeconds": 0.250682459, + "uploadSeconds": 0.000002462, + "downloadSeconds": 0.123496965 }, { - "connectionEstablishedSeconds": 0.247662665, - "uploadSeconds": 0.000002964, - "downloadSeconds": 0.122013051 + "connectionEstablishedSeconds": 0.252774065, + "uploadSeconds": 0.000003628, + "downloadSeconds": 0.12445596 }, { - "connectionEstablishedSeconds": 0.250252663, - "uploadSeconds": 0.000002914, - "downloadSeconds": 0.123407763 + "connectionEstablishedSeconds": 0.242569309, + "uploadSeconds": 0.00000305, + "downloadSeconds": 0.119429712 }, { - "connectionEstablishedSeconds": 0.262054694, - "uploadSeconds": 0.000002659, - "downloadSeconds": 0.06503719 + "connectionEstablishedSeconds": 0.25479327, + "uploadSeconds": 0.000002861, + "downloadSeconds": 0.124930819 }, { - "connectionEstablishedSeconds": 0.25894961, - "uploadSeconds": 0.000003183, - "downloadSeconds": 0.063781309 + "connectionEstablishedSeconds": 0.262770298, + "uploadSeconds": 0.000003423, + "downloadSeconds": 0.128763607 }, { - "connectionEstablishedSeconds": 0.253447479, - "uploadSeconds": 0.000005445, - "downloadSeconds": 0.125038249 + "connectionEstablishedSeconds": 0.25458649, + "uploadSeconds": 0.000002688, + "downloadSeconds": 0.062457767 }, { - "connectionEstablishedSeconds": 0.25890693, - "uploadSeconds": 0.000002949, - "downloadSeconds": 0.064290345 + "connectionEstablishedSeconds": 0.256087871, + "uploadSeconds": 0.000002748, + "downloadSeconds": 0.063382841 }, { - "connectionEstablishedSeconds": 0.238136713, - "uploadSeconds": 0.000002751, - "downloadSeconds": 0.058523439 + "connectionEstablishedSeconds": 0.256214858, + "uploadSeconds": 0.000002543, + "downloadSeconds": 0.125334307 }, { - "connectionEstablishedSeconds": 0.238031833, - "uploadSeconds": 0.00000201, - "downloadSeconds": 0.058612018 + "connectionEstablishedSeconds": 0.251170968, + "uploadSeconds": 0.000003289, + "downloadSeconds": 0.122626514 }, { - "connectionEstablishedSeconds": 0.243987405, - "uploadSeconds": 0.000002645, - "downloadSeconds": 0.120430154 + "connectionEstablishedSeconds": 0.248462896, + "uploadSeconds": 0.000003834, + "downloadSeconds": 0.121314707 }, { - "connectionEstablishedSeconds": 0.25092512, - "uploadSeconds": 0.000003203, - "downloadSeconds": 0.062239462 + "connectionEstablishedSeconds": 0.24983303, + "uploadSeconds": 0.000004495, + "downloadSeconds": 0.061233358 }, { - "connectionEstablishedSeconds": 0.241461478, - "uploadSeconds": 0.000002746, - "downloadSeconds": 0.05956789 + "connectionEstablishedSeconds": 0.252475751, + "uploadSeconds": 0.00000231, + "downloadSeconds": 0.0619883 }, { - "connectionEstablishedSeconds": 0.251482992, - "uploadSeconds": 0.00000234, - "downloadSeconds": 0.061933183 + "connectionEstablishedSeconds": 0.246931961, + "uploadSeconds": 0.000002906, + "downloadSeconds": 0.121586692 }, { - "connectionEstablishedSeconds": 0.247927088, - "uploadSeconds": 0.000002999, - "downloadSeconds": 0.061510988 + "connectionEstablishedSeconds": 0.256214885, + "uploadSeconds": 0.000003494, + "downloadSeconds": 0.063429564 }, { - "connectionEstablishedSeconds": 0.245592314, - "uploadSeconds": 0.000003012, - "downloadSeconds": 0.06085414 + "connectionEstablishedSeconds": 0.251583325, + "uploadSeconds": 0.000002817, + "downloadSeconds": 0.122880352 }, { - "connectionEstablishedSeconds": 0.249204108, - "uploadSeconds": 0.000002654, - "downloadSeconds": 0.06184334 + "connectionEstablishedSeconds": 0.250357669, + "uploadSeconds": 0.000003612, + "downloadSeconds": 0.122302384 }, { - "connectionEstablishedSeconds": 0.257982473, - "uploadSeconds": 0.000002161, - "downloadSeconds": 0.064057546 + "connectionEstablishedSeconds": 0.251177488, + "uploadSeconds": 0.000003209, + "downloadSeconds": 0.061720037 }, { - "connectionEstablishedSeconds": 0.253774449, - "uploadSeconds": 0.000002049, - "downloadSeconds": 0.062934467 + "connectionEstablishedSeconds": 0.247782307, + "uploadSeconds": 0.000003204, + "downloadSeconds": 0.060884679 }, { - "connectionEstablishedSeconds": 0.247291556, - "uploadSeconds": 0.000002676, - "downloadSeconds": 0.060877055 + "connectionEstablishedSeconds": 0.256522029, + "uploadSeconds": 0.000003026, + "downloadSeconds": 0.063025502 }, { - "connectionEstablishedSeconds": 0.255902439, - "uploadSeconds": 0.000002621, - "downloadSeconds": 0.063567814 + "connectionEstablishedSeconds": 0.2581133, + "uploadSeconds": 0.000003568, + "downloadSeconds": 0.063403142 }, { - "connectionEstablishedSeconds": 0.254482313, - "uploadSeconds": 0.000002629, - "downloadSeconds": 0.063151743 + "connectionEstablishedSeconds": 0.255397506, + "uploadSeconds": 0.000003247, + "downloadSeconds": 0.062614623 }, { - "connectionEstablishedSeconds": 0.240553161, - "uploadSeconds": 0.000002261, - "downloadSeconds": 0.059636037 + "connectionEstablishedSeconds": 0.250827674, + "uploadSeconds": 0.000002441, + "downloadSeconds": 0.062131295 }, { - "connectionEstablishedSeconds": 0.248356912, - "uploadSeconds": 0.000002729, - "downloadSeconds": 0.061578029 + "connectionEstablishedSeconds": 0.260419165, + "uploadSeconds": 0.000002946, + "downloadSeconds": 0.064479165 }, { - "connectionEstablishedSeconds": 0.242345309, - "uploadSeconds": 0.00000288, - "downloadSeconds": 0.060093916 + "connectionEstablishedSeconds": 0.254314157, + "uploadSeconds": 0.000002467, + "downloadSeconds": 0.062572004 }, { - "connectionEstablishedSeconds": 0.259227269, - "uploadSeconds": 0.000005216, - "downloadSeconds": 0.1279868 + "connectionEstablishedSeconds": 0.254128659, + "uploadSeconds": 0.000002564, + "downloadSeconds": 0.062426829 }, { - "connectionEstablishedSeconds": 0.259282408, - "uploadSeconds": 0.000002551, - "downloadSeconds": 0.063973717 + "connectionEstablishedSeconds": 0.245706256, + "uploadSeconds": 0.000002984, + "downloadSeconds": 0.120957054 }, { - "connectionEstablishedSeconds": 0.25319996, - "uploadSeconds": 0.000002716, - "downloadSeconds": 0.125036282 + "connectionEstablishedSeconds": 0.254524756, + "uploadSeconds": 0.000003012, + "downloadSeconds": 0.125632302 }, { - "connectionEstablishedSeconds": 0.262780483, - "uploadSeconds": 0.000002704, - "downloadSeconds": 0.064785965 + "connectionEstablishedSeconds": 0.253064463, + "uploadSeconds": 0.000003616, + "downloadSeconds": 0.062562906 }, { - "connectionEstablishedSeconds": 0.240429364, - "uploadSeconds": 0.000002006, - "downloadSeconds": 0.059475532 + "connectionEstablishedSeconds": 0.244652507, + "uploadSeconds": 0.000002662, + "downloadSeconds": 0.060147963 }, { - "connectionEstablishedSeconds": 0.252537049, - "uploadSeconds": 0.000002748, - "downloadSeconds": 0.06261609 + "connectionEstablishedSeconds": 0.239427924, + "uploadSeconds": 0.00000321, + "downloadSeconds": 0.059177905 }, { - "connectionEstablishedSeconds": 0.249712979, - "uploadSeconds": 0.000002727, - "downloadSeconds": 0.061898698 + "connectionEstablishedSeconds": 0.252719182, + "uploadSeconds": 0.000003279, + "downloadSeconds": 0.124140527 }, { - "connectionEstablishedSeconds": 0.248365572, - "uploadSeconds": 0.000003349, - "downloadSeconds": 0.061521647 + "connectionEstablishedSeconds": 0.257588139, + "uploadSeconds": 0.000002645, + "downloadSeconds": 0.125933391 }, { - "connectionEstablishedSeconds": 0.247755439, - "uploadSeconds": 0.000002551, - "downloadSeconds": 0.061002033 + "connectionEstablishedSeconds": 0.252102214, + "uploadSeconds": 0.000006192, + "downloadSeconds": 0.123975867 }, { - "connectionEstablishedSeconds": 0.246475735, - "uploadSeconds": 0.000002701, - "downloadSeconds": 0.061086692 + "connectionEstablishedSeconds": 0.253004302, + "uploadSeconds": 0.000003238, + "downloadSeconds": 0.124329359 }, { - "connectionEstablishedSeconds": 0.259489949, - "uploadSeconds": 0.000001757, - "downloadSeconds": 0.063943852 + "connectionEstablishedSeconds": 0.25355254, + "uploadSeconds": 0.000002346, + "downloadSeconds": 0.062167782 }, { - "connectionEstablishedSeconds": 0.258184785, - "uploadSeconds": 0.000001873, - "downloadSeconds": 0.063650594 + "connectionEstablishedSeconds": 0.25529043, + "uploadSeconds": 0.000002785, + "downloadSeconds": 0.125672486 }, { - "connectionEstablishedSeconds": 0.261070592, - "uploadSeconds": 0.000002752, - "downloadSeconds": 0.064366046 + "connectionEstablishedSeconds": 0.261358525, + "uploadSeconds": 0.000003169, + "downloadSeconds": 0.064202778 }, { - "connectionEstablishedSeconds": 0.250568312, - "uploadSeconds": 0.000002142, - "downloadSeconds": 0.123570903 + "connectionEstablishedSeconds": 0.252931623, + "uploadSeconds": 0.000002846, + "downloadSeconds": 0.062165412 }, { - "connectionEstablishedSeconds": 0.255666103, - "uploadSeconds": 0.000003077, - "downloadSeconds": 0.063432424 + "connectionEstablishedSeconds": 0.250908525, + "uploadSeconds": 0.00000366, + "downloadSeconds": 0.123585083 }, { - "connectionEstablishedSeconds": 0.248139992, - "uploadSeconds": 0.000002787, - "downloadSeconds": 0.122421755 + "connectionEstablishedSeconds": 0.239730221, + "uploadSeconds": 0.000004546, + "downloadSeconds": 0.059308537 }, { - "connectionEstablishedSeconds": 0.244705897, - "uploadSeconds": 0.000002085, - "downloadSeconds": 0.060794925 + "connectionEstablishedSeconds": 0.261532696, + "uploadSeconds": 0.000002939, + "downloadSeconds": 0.064289014 }, { - "connectionEstablishedSeconds": 0.257247483, - "uploadSeconds": 0.000002563, - "downloadSeconds": 0.12735091 + "connectionEstablishedSeconds": 0.262379988, + "uploadSeconds": 0.000003347, + "downloadSeconds": 0.128376121 }, { - "connectionEstablishedSeconds": 0.249235758, - "uploadSeconds": 0.00000251, - "downloadSeconds": 0.061837351 + "connectionEstablishedSeconds": 0.24577322, + "uploadSeconds": 0.000002674, + "downloadSeconds": 0.060370727 }, { - "connectionEstablishedSeconds": 0.255130828, - "uploadSeconds": 0.000002263, - "downloadSeconds": 0.063169157 + "connectionEstablishedSeconds": 0.256765835, + "uploadSeconds": 0.000002505, + "downloadSeconds": 0.062955219 }, { - "connectionEstablishedSeconds": 0.251280256, - "uploadSeconds": 0.000002482, - "downloadSeconds": 0.123259335 + "connectionEstablishedSeconds": 0.257241877, + "uploadSeconds": 0.000003493, + "downloadSeconds": 0.063194058 }, { - "connectionEstablishedSeconds": 0.251983159, - "uploadSeconds": 0.00000274, - "downloadSeconds": 0.124431896 + "connectionEstablishedSeconds": 0.248561426, + "uploadSeconds": 0.000003504, + "downloadSeconds": 0.122268394 }, { - "connectionEstablishedSeconds": 0.245704446, - "uploadSeconds": 0.000001875, - "downloadSeconds": 0.120470878 + "connectionEstablishedSeconds": 0.253010123, + "uploadSeconds": 0.000003472, + "downloadSeconds": 0.123747352 }, { - "connectionEstablishedSeconds": 0.250201435, - "uploadSeconds": 0.000002586, - "downloadSeconds": 0.061731154 + "connectionEstablishedSeconds": 0.253802696, + "uploadSeconds": 0.000002907, + "downloadSeconds": 0.124984447 }, { - "connectionEstablishedSeconds": 0.238093943, - "uploadSeconds": 0.00000245, - "downloadSeconds": 0.058674458 + "connectionEstablishedSeconds": 0.259985353, + "uploadSeconds": 0.00000264, + "downloadSeconds": 0.126950708 }, { - "connectionEstablishedSeconds": 0.250553571, - "uploadSeconds": 0.000002285, - "downloadSeconds": 0.061589498 + "connectionEstablishedSeconds": 0.253068745, + "uploadSeconds": 0.000003457, + "downloadSeconds": 0.123640609 }, { - "connectionEstablishedSeconds": 0.244439626, - "uploadSeconds": 0.000003027, - "downloadSeconds": 0.060154682 + "connectionEstablishedSeconds": 0.262131372, + "uploadSeconds": 0.000002891, + "downloadSeconds": 0.064446604 }, { - "connectionEstablishedSeconds": 0.242412471, - "uploadSeconds": 0.000002316, - "downloadSeconds": 0.059615017 + "connectionEstablishedSeconds": 0.249052514, + "uploadSeconds": 0.000002669, + "downloadSeconds": 0.06125365 }, { - "connectionEstablishedSeconds": 0.25048618, - "uploadSeconds": 0.000002677, - "downloadSeconds": 0.061737041 + "connectionEstablishedSeconds": 0.248160319, + "uploadSeconds": 0.000003478, + "downloadSeconds": 0.061321695 }, { - "connectionEstablishedSeconds": 0.258953892, - "uploadSeconds": 0.000002587, - "downloadSeconds": 0.063803021 + "connectionEstablishedSeconds": 0.245016941, + "uploadSeconds": 0.000002873, + "downloadSeconds": 0.120366382 }, { - "connectionEstablishedSeconds": 0.250412263, - "uploadSeconds": 0.0000034, - "downloadSeconds": 0.12281949 + "connectionEstablishedSeconds": 0.249254663, + "uploadSeconds": 0.000002424, + "downloadSeconds": 0.121647486 }, { - "connectionEstablishedSeconds": 0.254144016, - "uploadSeconds": 0.000002754, - "downloadSeconds": 0.06300859 + "connectionEstablishedSeconds": 0.258669135, + "uploadSeconds": 0.000002826, + "downloadSeconds": 0.063624543 }, { - "connectionEstablishedSeconds": 0.260298291, - "uploadSeconds": 0.000002975, - "downloadSeconds": 0.064623551 + "connectionEstablishedSeconds": 0.250078193, + "uploadSeconds": 0.000003163, + "downloadSeconds": 0.123107871 }, { - "connectionEstablishedSeconds": 0.243397209, - "uploadSeconds": 0.000002481, - "downloadSeconds": 0.059877624 + "connectionEstablishedSeconds": 0.252085442, + "uploadSeconds": 0.000003074, + "downloadSeconds": 0.123198762 }, { - "connectionEstablishedSeconds": 0.24772037, - "uploadSeconds": 0.000002941, - "downloadSeconds": 0.060984094 + "connectionEstablishedSeconds": 0.256262807, + "uploadSeconds": 0.000003253, + "downloadSeconds": 0.125268654 }, { - "connectionEstablishedSeconds": 0.253506036, - "uploadSeconds": 0.000002337, - "downloadSeconds": 0.062951461 + "connectionEstablishedSeconds": 0.249110627, + "uploadSeconds": 0.000003228, + "downloadSeconds": 0.061307267 }, { - "connectionEstablishedSeconds": 0.254973803, - "uploadSeconds": 0.000002862, - "downloadSeconds": 0.062826139 + "connectionEstablishedSeconds": 0.25866579, + "uploadSeconds": 0.000002871, + "downloadSeconds": 0.126626551 }, { - "connectionEstablishedSeconds": 0.255472034, - "uploadSeconds": 0.000002332, - "downloadSeconds": 0.063002547 + "connectionEstablishedSeconds": 0.258809684, + "uploadSeconds": 0.000003657, + "downloadSeconds": 0.126692366 }, { - "connectionEstablishedSeconds": 0.256008456, - "uploadSeconds": 0.000002753, - "downloadSeconds": 0.126330132 + "connectionEstablishedSeconds": 0.253232103, + "uploadSeconds": 0.000003714, + "downloadSeconds": 0.123766291 }, { - "connectionEstablishedSeconds": 0.258165071, - "uploadSeconds": 0.000002056, - "downloadSeconds": 0.063652588 + "connectionEstablishedSeconds": 0.252618679, + "uploadSeconds": 0.0000028, + "downloadSeconds": 0.123498014 }, { - "connectionEstablishedSeconds": 0.25799469, - "uploadSeconds": 0.000003118, - "downloadSeconds": 0.126573181 + "connectionEstablishedSeconds": 0.254677234, + "uploadSeconds": 0.000002662, + "downloadSeconds": 0.12447656 }, { - "connectionEstablishedSeconds": 0.235590117, - "uploadSeconds": 0.000002624, - "downloadSeconds": 0.057922146 + "connectionEstablishedSeconds": 0.262513097, + "uploadSeconds": 0.0000044, + "downloadSeconds": 0.128426478 }, { - "connectionEstablishedSeconds": 0.243184757, - "uploadSeconds": 0.000002738, - "downloadSeconds": 0.059965651 + "connectionEstablishedSeconds": 0.259310403, + "uploadSeconds": 0.00000267, + "downloadSeconds": 0.127596938 }, { - "connectionEstablishedSeconds": 0.248694484, - "uploadSeconds": 0.000002604, - "downloadSeconds": 0.061723598 + "connectionEstablishedSeconds": 0.253873333, + "uploadSeconds": 0.000003398, + "downloadSeconds": 0.124047259 }, { - "connectionEstablishedSeconds": 0.251370563, - "uploadSeconds": 0.000002583, - "downloadSeconds": 0.06197375 + "connectionEstablishedSeconds": 0.25501728, + "uploadSeconds": 0.000002983, + "downloadSeconds": 0.125714344 }, { - "connectionEstablishedSeconds": 0.242432428, - "uploadSeconds": 0.000002486, - "downloadSeconds": 0.060143536 + "connectionEstablishedSeconds": 0.255689264, + "uploadSeconds": 0.000005103, + "downloadSeconds": 0.06329916 }, { - "connectionEstablishedSeconds": 0.243723796, - "uploadSeconds": 0.000002083, - "downloadSeconds": 0.060037652 + "connectionEstablishedSeconds": 0.255763735, + "uploadSeconds": 0.000002883, + "downloadSeconds": 0.063039447 }, { - "connectionEstablishedSeconds": 0.246442851, - "uploadSeconds": 0.000002077, - "downloadSeconds": 0.060712241 + "connectionEstablishedSeconds": 0.263646145, + "uploadSeconds": 0.000003715, + "downloadSeconds": 0.064778216 }, { - "connectionEstablishedSeconds": 0.246539718, - "uploadSeconds": 0.000002761, - "downloadSeconds": 0.061199242 + "connectionEstablishedSeconds": 0.247384525, + "uploadSeconds": 0.000003402, + "downloadSeconds": 0.060685597 } ], "implementation": "go-libp2p", @@ -3517,504 +3517,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.132559832, - "uploadSeconds": 0.000001845, - "downloadSeconds": 0.064081759 + "connectionEstablishedSeconds": 0.126151651, + "uploadSeconds": 0.000002349, + "downloadSeconds": 0.060111794 }, { - "connectionEstablishedSeconds": 0.127538862, - "uploadSeconds": 0.000001708, - "downloadSeconds": 0.062170888 + "connectionEstablishedSeconds": 0.129204824, + "uploadSeconds": 0.000001809, + "downloadSeconds": 0.062814464 }, { - "connectionEstablishedSeconds": 0.130805692, - "uploadSeconds": 0.000001773, - "downloadSeconds": 0.062955061 + "connectionEstablishedSeconds": 0.12989484, + "uploadSeconds": 0.000001788, + "downloadSeconds": 0.062263664 }, { - "connectionEstablishedSeconds": 0.127036422, - "uploadSeconds": 0.000001649, - "downloadSeconds": 0.061978598 + "connectionEstablishedSeconds": 0.128827356, + "uploadSeconds": 0.000001937, + "downloadSeconds": 0.062755559 }, { - "connectionEstablishedSeconds": 0.127375116, - "uploadSeconds": 0.000001559, - "downloadSeconds": 0.061272425 + "connectionEstablishedSeconds": 0.128097527, + "uploadSeconds": 0.000002064, + "downloadSeconds": 0.061263379 }, { - "connectionEstablishedSeconds": 0.127377704, - "uploadSeconds": 0.000001414, - "downloadSeconds": 0.062145909 + "connectionEstablishedSeconds": 0.13534984, + "uploadSeconds": 0.000002196, + "downloadSeconds": 0.064960528 }, { - "connectionEstablishedSeconds": 0.125731216, - "uploadSeconds": 0.000001507, - "downloadSeconds": 0.06135568 + "connectionEstablishedSeconds": 0.121873491, + "uploadSeconds": 0.000002012, + "downloadSeconds": 0.058282537 }, { - "connectionEstablishedSeconds": 0.133088001, - "uploadSeconds": 0.000001788, - "downloadSeconds": 0.064553093 + "connectionEstablishedSeconds": 0.127685139, + "uploadSeconds": 0.000002091, + "downloadSeconds": 0.061119046 }, { - "connectionEstablishedSeconds": 0.129277284, - "uploadSeconds": 0.000001466, - "downloadSeconds": 0.062234834 + "connectionEstablishedSeconds": 0.122078139, + "uploadSeconds": 0.000002417, + "downloadSeconds": 0.059363629 }, { - "connectionEstablishedSeconds": 0.119158102, - "uploadSeconds": 0.000001566, - "downloadSeconds": 0.058061112 + "connectionEstablishedSeconds": 0.130700124, + "uploadSeconds": 0.000001939, + "downloadSeconds": 0.063635433 }, { - "connectionEstablishedSeconds": 0.130364186, - "uploadSeconds": 0.000001615, - "downloadSeconds": 0.062807167 + "connectionEstablishedSeconds": 0.132067528, + "uploadSeconds": 0.000002014, + "downloadSeconds": 0.063457557 }, { - "connectionEstablishedSeconds": 0.127736162, - "uploadSeconds": 0.000001415, - "downloadSeconds": 0.061511958 + "connectionEstablishedSeconds": 0.127849632, + "uploadSeconds": 0.000002033, + "downloadSeconds": 0.06217967 }, { - "connectionEstablishedSeconds": 0.1278484, - "uploadSeconds": 0.000001513, - "downloadSeconds": 0.061515556 + "connectionEstablishedSeconds": 0.12674816, + "uploadSeconds": 0.000002177, + "downloadSeconds": 0.06158331 }, { - "connectionEstablishedSeconds": 0.128970078, - "uploadSeconds": 0.000001392, - "downloadSeconds": 0.061986167 + "connectionEstablishedSeconds": 0.127379142, + "uploadSeconds": 0.000001916, + "downloadSeconds": 0.061885807 }, { - "connectionEstablishedSeconds": 0.128039225, - "uploadSeconds": 0.000001606, - "downloadSeconds": 0.06170743 + "connectionEstablishedSeconds": 0.133760878, + "uploadSeconds": 0.000001692, + "downloadSeconds": 0.064240901 }, { - "connectionEstablishedSeconds": 0.127508048, - "uploadSeconds": 0.000001458, - "downloadSeconds": 0.062212279 + "connectionEstablishedSeconds": 0.130580764, + "uploadSeconds": 0.000002045, + "downloadSeconds": 0.062521174 }, { - "connectionEstablishedSeconds": 0.133455738, - "uploadSeconds": 0.00000138, - "downloadSeconds": 0.064288489 + "connectionEstablishedSeconds": 0.132804107, + "uploadSeconds": 0.000001886, + "downloadSeconds": 0.063699769 }, { - "connectionEstablishedSeconds": 0.129520369, - "uploadSeconds": 0.000001526, - "downloadSeconds": 0.062379621 + "connectionEstablishedSeconds": 0.135148122, + "uploadSeconds": 0.000002012, + "downloadSeconds": 0.064907714 }, { - "connectionEstablishedSeconds": 0.126453297, - "uploadSeconds": 0.000001579, - "downloadSeconds": 0.061700191 + "connectionEstablishedSeconds": 0.127619559, + "uploadSeconds": 0.000002245, + "downloadSeconds": 0.062083015 }, { - "connectionEstablishedSeconds": 0.129627112, - "uploadSeconds": 0.000001465, - "downloadSeconds": 0.062720055 + "connectionEstablishedSeconds": 0.125278543, + "uploadSeconds": 0.000003326, + "downloadSeconds": 0.060073059 }, { - "connectionEstablishedSeconds": 0.134000827, - "uploadSeconds": 0.000001321, - "downloadSeconds": 0.064357089 + "connectionEstablishedSeconds": 0.12249927, + "uploadSeconds": 0.000002011, + "downloadSeconds": 0.058580595 }, { - "connectionEstablishedSeconds": 0.124745152, - "uploadSeconds": 0.000001493, - "downloadSeconds": 0.060808097 + "connectionEstablishedSeconds": 0.127263622, + "uploadSeconds": 0.00000272, + "downloadSeconds": 0.06196458 }, { - "connectionEstablishedSeconds": 0.127733997, - "uploadSeconds": 0.000002662, - "downloadSeconds": 0.060965292 + "connectionEstablishedSeconds": 0.130274289, + "uploadSeconds": 0.00000195, + "downloadSeconds": 0.06272686 }, { - "connectionEstablishedSeconds": 0.124760848, - "uploadSeconds": 0.000001412, - "downloadSeconds": 0.06091855 + "connectionEstablishedSeconds": 0.133296573, + "uploadSeconds": 0.000002144, + "downloadSeconds": 0.063984271 }, { - "connectionEstablishedSeconds": 0.133028696, - "uploadSeconds": 0.000001889, - "downloadSeconds": 0.064165736 + "connectionEstablishedSeconds": 0.129793246, + "uploadSeconds": 0.000002559, + "downloadSeconds": 0.062174156 }, { - "connectionEstablishedSeconds": 0.131580179, - "uploadSeconds": 0.000009386, - "downloadSeconds": 0.063439782 + "connectionEstablishedSeconds": 0.13073093, + "uploadSeconds": 0.000001964, + "downloadSeconds": 0.062727683 }, { - "connectionEstablishedSeconds": 0.13153408, - "uploadSeconds": 0.000001474, - "downloadSeconds": 0.063494493 + "connectionEstablishedSeconds": 0.125902941, + "uploadSeconds": 0.000002129, + "downloadSeconds": 0.060313342 }, { - "connectionEstablishedSeconds": 0.133677377, - "uploadSeconds": 0.00000147, - "downloadSeconds": 0.064309541 + "connectionEstablishedSeconds": 0.131097742, + "uploadSeconds": 0.000001799, + "downloadSeconds": 0.062803515 }, { - "connectionEstablishedSeconds": 0.129927372, - "uploadSeconds": 0.000001525, - "downloadSeconds": 0.063450867 + "connectionEstablishedSeconds": 0.133414071, + "uploadSeconds": 0.00000183, + "downloadSeconds": 0.063613039 }, { - "connectionEstablishedSeconds": 0.131694963, - "uploadSeconds": 0.000001381, - "downloadSeconds": 0.063434821 + "connectionEstablishedSeconds": 0.132653783, + "uploadSeconds": 0.000001957, + "downloadSeconds": 0.063574125 }, { - "connectionEstablishedSeconds": 0.127899617, - "uploadSeconds": 0.000001411, - "downloadSeconds": 0.061525214 + "connectionEstablishedSeconds": 0.129110969, + "uploadSeconds": 0.000002654, + "downloadSeconds": 0.061835123 }, { - "connectionEstablishedSeconds": 0.130203328, - "uploadSeconds": 0.000001495, - "downloadSeconds": 0.062757457 + "connectionEstablishedSeconds": 0.125059968, + "uploadSeconds": 0.000002038, + "downloadSeconds": 0.059879328 }, { - "connectionEstablishedSeconds": 0.128960662, - "uploadSeconds": 0.000001403, - "downloadSeconds": 0.062074948 + "connectionEstablishedSeconds": 0.132621136, + "uploadSeconds": 0.000002239, + "downloadSeconds": 0.0646004 }, { - "connectionEstablishedSeconds": 0.130867787, - "uploadSeconds": 0.000001446, - "downloadSeconds": 0.062989249 + "connectionEstablishedSeconds": 0.133595619, + "uploadSeconds": 0.000002438, + "downloadSeconds": 0.064052479 }, { - "connectionEstablishedSeconds": 0.127509261, - "uploadSeconds": 0.000001399, - "downloadSeconds": 0.061493018 + "connectionEstablishedSeconds": 0.133692962, + "uploadSeconds": 0.000002297, + "downloadSeconds": 0.064047711 }, { - "connectionEstablishedSeconds": 0.125964276, - "uploadSeconds": 0.000001522, - "downloadSeconds": 0.060573677 + "connectionEstablishedSeconds": 0.127442752, + "uploadSeconds": 0.000002134, + "downloadSeconds": 0.061065899 }, { - "connectionEstablishedSeconds": 0.127927289, - "uploadSeconds": 0.000001423, - "downloadSeconds": 0.06157576 + "connectionEstablishedSeconds": 0.133307312, + "uploadSeconds": 0.000001909, + "downloadSeconds": 0.063937153 }, { - "connectionEstablishedSeconds": 0.130932601, - "uploadSeconds": 0.000001443, - "downloadSeconds": 0.063025361 + "connectionEstablishedSeconds": 0.131376194, + "uploadSeconds": 0.000001892, + "downloadSeconds": 0.063022383 }, { - "connectionEstablishedSeconds": 0.131325237, - "uploadSeconds": 0.000001453, - "downloadSeconds": 0.063283316 + "connectionEstablishedSeconds": 0.126447659, + "uploadSeconds": 0.0000022, + "downloadSeconds": 0.060481942 }, { - "connectionEstablishedSeconds": 0.131567611, - "uploadSeconds": 0.000001482, - "downloadSeconds": 0.063480748 + "connectionEstablishedSeconds": 0.127975402, + "uploadSeconds": 0.000002544, + "downloadSeconds": 0.062116593 }, { - "connectionEstablishedSeconds": 0.127139527, - "uploadSeconds": 0.000001498, - "downloadSeconds": 0.062091433 + "connectionEstablishedSeconds": 0.126821499, + "uploadSeconds": 0.000002165, + "downloadSeconds": 0.06072908 }, { - "connectionEstablishedSeconds": 0.130935865, - "uploadSeconds": 0.000001494, - "downloadSeconds": 0.063252549 + "connectionEstablishedSeconds": 0.128799428, + "uploadSeconds": 0.000002131, + "downloadSeconds": 0.061693083 }, { - "connectionEstablishedSeconds": 0.126708782, - "uploadSeconds": 0.000001385, - "downloadSeconds": 0.061000908 + "connectionEstablishedSeconds": 0.132309618, + "uploadSeconds": 0.00000198, + "downloadSeconds": 0.063466891 }, { - "connectionEstablishedSeconds": 0.131170813, - "uploadSeconds": 0.000001618, - "downloadSeconds": 0.063156049 + "connectionEstablishedSeconds": 0.126743105, + "uploadSeconds": 0.000002233, + "downloadSeconds": 0.061620339 }, { - "connectionEstablishedSeconds": 0.127562236, - "uploadSeconds": 0.000001422, - "downloadSeconds": 0.061339877 + "connectionEstablishedSeconds": 0.130026805, + "uploadSeconds": 0.000002218, + "downloadSeconds": 0.063172074 }, { - "connectionEstablishedSeconds": 0.127373514, - "uploadSeconds": 0.000001411, - "downloadSeconds": 0.062119254 + "connectionEstablishedSeconds": 0.130640115, + "uploadSeconds": 0.000002176, + "downloadSeconds": 0.062559726 }, { - "connectionEstablishedSeconds": 0.124467553, - "uploadSeconds": 0.000001406, - "downloadSeconds": 0.060622762 + "connectionEstablishedSeconds": 0.129337234, + "uploadSeconds": 0.000002072, + "downloadSeconds": 0.062073933 }, { - "connectionEstablishedSeconds": 0.130264415, - "uploadSeconds": 0.000001423, - "downloadSeconds": 0.063243987 + "connectionEstablishedSeconds": 0.130782968, + "uploadSeconds": 0.00000207, + "downloadSeconds": 0.063519826 }, { - "connectionEstablishedSeconds": 0.129495604, - "uploadSeconds": 0.000001529, - "downloadSeconds": 0.062278168 + "connectionEstablishedSeconds": 0.128617654, + "uploadSeconds": 0.000002426, + "downloadSeconds": 0.061714502 }, { - "connectionEstablishedSeconds": 0.130634463, - "uploadSeconds": 0.000001486, - "downloadSeconds": 0.062895839 + "connectionEstablishedSeconds": 0.131507993, + "uploadSeconds": 0.00000296, + "downloadSeconds": 0.063716424 }, { - "connectionEstablishedSeconds": 0.130588454, - "uploadSeconds": 0.000001659, - "downloadSeconds": 0.062499732 + "connectionEstablishedSeconds": 0.127081302, + "uploadSeconds": 0.00000212, + "downloadSeconds": 0.06169652 }, { - "connectionEstablishedSeconds": 0.131876225, - "uploadSeconds": 0.000001316, - "downloadSeconds": 0.064669517 + "connectionEstablishedSeconds": 0.130389179, + "uploadSeconds": 0.000002081, + "downloadSeconds": 0.062127935 }, { - "connectionEstablishedSeconds": 0.1300481, - "uploadSeconds": 0.000001564, - "downloadSeconds": 0.062634327 + "connectionEstablishedSeconds": 0.131200468, + "uploadSeconds": 0.000002234, + "downloadSeconds": 0.063621168 }, { - "connectionEstablishedSeconds": 0.125223091, - "uploadSeconds": 0.000001481, - "downloadSeconds": 0.061157475 + "connectionEstablishedSeconds": 0.132291424, + "uploadSeconds": 0.000001924, + "downloadSeconds": 0.063446517 }, { - "connectionEstablishedSeconds": 0.129800235, - "uploadSeconds": 0.000001461, - "downloadSeconds": 0.062495938 + "connectionEstablishedSeconds": 0.131338395, + "uploadSeconds": 0.000001864, + "downloadSeconds": 0.062883127 }, { - "connectionEstablishedSeconds": 0.128935513, - "uploadSeconds": 0.000001289, - "downloadSeconds": 0.062087854 + "connectionEstablishedSeconds": 0.132832946, + "uploadSeconds": 0.000002178, + "downloadSeconds": 0.064120672 }, { - "connectionEstablishedSeconds": 0.131783337, - "uploadSeconds": 0.000001504, - "downloadSeconds": 0.063374993 + "connectionEstablishedSeconds": 0.125112863, + "uploadSeconds": 0.000002234, + "downloadSeconds": 0.060819545 }, { - "connectionEstablishedSeconds": 0.128899161, - "uploadSeconds": 0.000001482, - "downloadSeconds": 0.062178416 + "connectionEstablishedSeconds": 0.129229344, + "uploadSeconds": 0.000001914, + "downloadSeconds": 0.061822645 }, { - "connectionEstablishedSeconds": 0.131739113, - "uploadSeconds": 0.000001386, - "downloadSeconds": 0.063473909 + "connectionEstablishedSeconds": 0.127488566, + "uploadSeconds": 0.000001963, + "downloadSeconds": 0.061016129 }, { - "connectionEstablishedSeconds": 0.132251676, - "uploadSeconds": 0.000001453, - "downloadSeconds": 0.06368673 + "connectionEstablishedSeconds": 0.131944067, + "uploadSeconds": 0.00000283, + "downloadSeconds": 0.063271008 }, { - "connectionEstablishedSeconds": 0.131773613, - "uploadSeconds": 0.000001447, - "downloadSeconds": 0.063479142 + "connectionEstablishedSeconds": 0.135384772, + "uploadSeconds": 0.00000214, + "downloadSeconds": 0.064847672 }, { - "connectionEstablishedSeconds": 0.127176818, - "uploadSeconds": 0.0000014, - "downloadSeconds": 0.061173964 + "connectionEstablishedSeconds": 0.124667496, + "uploadSeconds": 0.000002069, + "downloadSeconds": 0.06055079 }, { - "connectionEstablishedSeconds": 0.128782265, - "uploadSeconds": 0.000001717, - "downloadSeconds": 0.06190894 + "connectionEstablishedSeconds": 0.132800576, + "uploadSeconds": 0.000002034, + "downloadSeconds": 0.063699868 }, { - "connectionEstablishedSeconds": 0.126829132, - "uploadSeconds": 0.00000196, - "downloadSeconds": 0.060960895 + "connectionEstablishedSeconds": 0.133475009, + "uploadSeconds": 0.000002195, + "downloadSeconds": 0.064008758 }, { - "connectionEstablishedSeconds": 0.130953162, - "uploadSeconds": 0.000001626, - "downloadSeconds": 0.062989085 + "connectionEstablishedSeconds": 0.13164217, + "uploadSeconds": 0.000004093, + "downloadSeconds": 0.063046896 }, { - "connectionEstablishedSeconds": 0.120174779, - "uploadSeconds": 0.000001516, - "downloadSeconds": 0.058639118 + "connectionEstablishedSeconds": 0.130395177, + "uploadSeconds": 0.000002377, + "downloadSeconds": 0.063420146 }, { - "connectionEstablishedSeconds": 0.12485797, - "uploadSeconds": 0.000001441, - "downloadSeconds": 0.061003542 + "connectionEstablishedSeconds": 0.130376451, + "uploadSeconds": 0.000001854, + "downloadSeconds": 0.062517149 }, { - "connectionEstablishedSeconds": 0.124848685, - "uploadSeconds": 0.000001469, - "downloadSeconds": 0.060034978 + "connectionEstablishedSeconds": 0.124174265, + "uploadSeconds": 0.000002013, + "downloadSeconds": 0.059630293 }, { - "connectionEstablishedSeconds": 0.131629743, - "uploadSeconds": 0.000001449, - "downloadSeconds": 0.063505673 + "connectionEstablishedSeconds": 0.131321918, + "uploadSeconds": 0.000002109, + "downloadSeconds": 0.063847882 }, { - "connectionEstablishedSeconds": 0.118768582, - "uploadSeconds": 0.000001448, - "downloadSeconds": 0.057896358 + "connectionEstablishedSeconds": 0.12651402, + "uploadSeconds": 0.000001959, + "downloadSeconds": 0.061277022 }, { - "connectionEstablishedSeconds": 0.132635801, - "uploadSeconds": 0.000001474, - "downloadSeconds": 0.063932235 + "connectionEstablishedSeconds": 0.129392271, + "uploadSeconds": 0.000006552, + "downloadSeconds": 0.062017563 }, { - "connectionEstablishedSeconds": 0.126282233, - "uploadSeconds": 0.000001428, - "downloadSeconds": 0.061655677 + "connectionEstablishedSeconds": 0.125820688, + "uploadSeconds": 0.000002294, + "downloadSeconds": 0.060293214 }, { - "connectionEstablishedSeconds": 0.130103183, - "uploadSeconds": 0.000001461, - "downloadSeconds": 0.063143473 + "connectionEstablishedSeconds": 0.123559055, + "uploadSeconds": 0.000002293, + "downloadSeconds": 0.059092023 }, { - "connectionEstablishedSeconds": 0.126639755, - "uploadSeconds": 0.000001414, - "downloadSeconds": 0.06089211 + "connectionEstablishedSeconds": 0.12768245, + "uploadSeconds": 0.000001919, + "downloadSeconds": 0.061216962 }, { - "connectionEstablishedSeconds": 0.130654578, - "uploadSeconds": 0.000001511, - "downloadSeconds": 0.062895361 + "connectionEstablishedSeconds": 0.132155614, + "uploadSeconds": 0.000002231, + "downloadSeconds": 0.063330694 }, { - "connectionEstablishedSeconds": 0.130549247, - "uploadSeconds": 0.000001451, - "downloadSeconds": 0.063388518 + "connectionEstablishedSeconds": 0.131687572, + "uploadSeconds": 0.000002588, + "downloadSeconds": 0.063173232 }, { - "connectionEstablishedSeconds": 0.121943873, - "uploadSeconds": 0.000001546, - "downloadSeconds": 0.05863414 + "connectionEstablishedSeconds": 0.126361402, + "uploadSeconds": 0.000002273, + "downloadSeconds": 0.061394606 }, { - "connectionEstablishedSeconds": 0.128689427, - "uploadSeconds": 0.000001541, - "downloadSeconds": 0.061924851 + "connectionEstablishedSeconds": 0.128864354, + "uploadSeconds": 0.000002128, + "downloadSeconds": 0.062303788 }, { - "connectionEstablishedSeconds": 0.125593774, - "uploadSeconds": 0.000001388, - "downloadSeconds": 0.061346375 + "connectionEstablishedSeconds": 0.133012264, + "uploadSeconds": 0.000002351, + "downloadSeconds": 0.064573179 }, { - "connectionEstablishedSeconds": 0.126114403, - "uploadSeconds": 0.000001478, - "downloadSeconds": 0.061483351 + "connectionEstablishedSeconds": 0.134211551, + "uploadSeconds": 0.00000863, + "downloadSeconds": 0.064424225 }, { - "connectionEstablishedSeconds": 0.124927605, - "uploadSeconds": 0.000001518, - "downloadSeconds": 0.060145482 + "connectionEstablishedSeconds": 0.131659114, + "uploadSeconds": 0.000001996, + "downloadSeconds": 0.063097905 }, { - "connectionEstablishedSeconds": 0.128973538, - "uploadSeconds": 0.00000153, - "downloadSeconds": 0.062205281 + "connectionEstablishedSeconds": 0.130566836, + "uploadSeconds": 0.000001883, + "downloadSeconds": 0.062666167 }, { - "connectionEstablishedSeconds": 0.128944333, - "uploadSeconds": 0.000001505, - "downloadSeconds": 0.062992906 + "connectionEstablishedSeconds": 0.12699178, + "uploadSeconds": 0.000001941, + "downloadSeconds": 0.061710595 }, { - "connectionEstablishedSeconds": 0.128396058, - "uploadSeconds": 0.000001591, - "downloadSeconds": 0.061744308 + "connectionEstablishedSeconds": 0.126258345, + "uploadSeconds": 0.00000231, + "downloadSeconds": 0.060492382 }, { - "connectionEstablishedSeconds": 0.123635078, - "uploadSeconds": 0.000001673, - "downloadSeconds": 0.059731873 + "connectionEstablishedSeconds": 0.126496115, + "uploadSeconds": 0.000002291, + "downloadSeconds": 0.060621943 }, { - "connectionEstablishedSeconds": 0.126869663, - "uploadSeconds": 0.000001602, - "downloadSeconds": 0.060971931 + "connectionEstablishedSeconds": 0.129833632, + "uploadSeconds": 0.000002205, + "downloadSeconds": 0.063074154 }, { - "connectionEstablishedSeconds": 0.129249375, - "uploadSeconds": 0.00000168, - "downloadSeconds": 0.062236365 + "connectionEstablishedSeconds": 0.125972604, + "uploadSeconds": 0.000002052, + "downloadSeconds": 0.061142547 }, { - "connectionEstablishedSeconds": 0.129164979, - "uploadSeconds": 0.000001724, - "downloadSeconds": 0.063029812 + "connectionEstablishedSeconds": 0.133147996, + "uploadSeconds": 0.00000204, + "downloadSeconds": 0.063961665 }, { - "connectionEstablishedSeconds": 0.133137747, - "uploadSeconds": 0.00000146, - "downloadSeconds": 0.064202058 + "connectionEstablishedSeconds": 0.128990543, + "uploadSeconds": 0.000002291, + "downloadSeconds": 0.061926222 }, { - "connectionEstablishedSeconds": 0.126919816, - "uploadSeconds": 0.000001559, - "downloadSeconds": 0.061051216 + "connectionEstablishedSeconds": 0.126666522, + "uploadSeconds": 0.00000186, + "downloadSeconds": 0.060657623 }, { - "connectionEstablishedSeconds": 0.129161057, - "uploadSeconds": 0.000001515, - "downloadSeconds": 0.062148438 + "connectionEstablishedSeconds": 0.131063138, + "uploadSeconds": 0.000002364, + "downloadSeconds": 0.063630534 }, { - "connectionEstablishedSeconds": 0.12643837, - "uploadSeconds": 0.000001527, - "downloadSeconds": 0.060876096 + "connectionEstablishedSeconds": 0.127691264, + "uploadSeconds": 0.000001737, + "downloadSeconds": 0.061989469 }, { - "connectionEstablishedSeconds": 0.12883837, - "uploadSeconds": 0.000001477, - "downloadSeconds": 0.062117541 + "connectionEstablishedSeconds": 0.132669306, + "uploadSeconds": 0.000002116, + "downloadSeconds": 0.063654787 }, { - "connectionEstablishedSeconds": 0.125180919, - "uploadSeconds": 0.00000138, - "downloadSeconds": 0.060162327 + "connectionEstablishedSeconds": 0.13097608, + "uploadSeconds": 0.000002228, + "downloadSeconds": 0.062813042 }, { - "connectionEstablishedSeconds": 0.128980365, - "uploadSeconds": 0.000001464, - "downloadSeconds": 0.062863695 + "connectionEstablishedSeconds": 0.127253247, + "uploadSeconds": 0.000002123, + "downloadSeconds": 0.061762543 }, { - "connectionEstablishedSeconds": 0.125982137, - "uploadSeconds": 0.000001546, - "downloadSeconds": 0.060601693 + "connectionEstablishedSeconds": 0.130387331, + "uploadSeconds": 0.000001931, + "downloadSeconds": 0.062535067 }, { - "connectionEstablishedSeconds": 0.122040921, - "uploadSeconds": 0.00000147, - "downloadSeconds": 0.05863226 + "connectionEstablishedSeconds": 0.123412861, + "uploadSeconds": 0.000002168, + "downloadSeconds": 0.059142108 }, { - "connectionEstablishedSeconds": 0.13145477, - "uploadSeconds": 0.000001542, - "downloadSeconds": 0.064228081 + "connectionEstablishedSeconds": 0.134738403, + "uploadSeconds": 0.00000203, + "downloadSeconds": 0.064797602 }, { - "connectionEstablishedSeconds": 0.128118009, - "uploadSeconds": 0.000001748, - "downloadSeconds": 0.062337372 + "connectionEstablishedSeconds": 0.129629586, + "uploadSeconds": 0.000001965, + "downloadSeconds": 0.062985231 }, { - "connectionEstablishedSeconds": 0.129970686, - "uploadSeconds": 0.000001924, - "downloadSeconds": 0.062586235 + "connectionEstablishedSeconds": 0.134042226, + "uploadSeconds": 0.000002526, + "downloadSeconds": 0.064318516 } ], "implementation": "go-libp2p", @@ -4031,106 +4031,106 @@ "pings": { "unit": "s", "results": [ - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061799999999999994, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061700000000000005, - 0.061, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.0624, - 0.0624, - 0.0624, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996 + 0.0628, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0627, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0627, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0629, + 0.0628, + 0.0627, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0627, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0627, + 0.0627, + 0.0628, + 0.0628, + 0.0628, + 0.0628 ] }, "iperf": { @@ -4139,65 +4139,65 @@ 3280000000, 3280000000, 3280000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, 3280000000, 3280000000, + 3270000000, + 3270000000, + 3260000000, + 3260000000, + 3270000000, + 3260000000, + 3260000000, + 3260000000, + 3260000000, + 3260000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, + 3230000000, + 3220000000, + 3220000000, + 3220000000, + 3220000000, + 3250000000, + 3270000000, 3280000000, + 3270000000, + 3270000000, + 3260000000, + 3260000000, + 3260000000, + 3270000000, + 3270000000, 3280000000, 3280000000, - 3290000000, - 3290000000, - 3280000000, - 3290000000, - 3290000000, - 3280000000, - 3290000000, - 3290000000, - 3290000000, - 3290000000, - 3290000000, - 3290000000, - 3300000000, - 3290000000, - 3290000000, - 3240000000, - 3230000000, - 3240000000, - 3230000000, - 3240000000, - 3290000000, - 3290000000, - 3290000000, - 3300000000, - 3290000000, 3280000000, - 3290000000, - 3290000000, - 3290000000, - 3290000000, - 3290000000, 3280000000, + 3270000000, 3280000000, + 3270000000, 3280000000, - 3300000000, - 3290000000, - 3290000000, + 3270000000, 3280000000, 3280000000, - 3290000000, - 3290000000, - 3290000000, + 3270000000, + 3270000000, + 3270000000, + 3270000000, 3280000000, - 3240000000, 3230000000, 3230000000, - 3240000000, - 3240000000, - 3280000000, - 3290000000, - 3290000000, - 3290000000, - 3280000000, - 2920000000 + 3230000000, + 3230000000, + 3260000000, + 3100000000 ] } -} +} \ No newline at end of file From 9ad921ec5a734bb7e9d7b642a51249f47ce60342 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 14:58:27 +0900 Subject: [PATCH 096/101] fix(go-libp2p): don't wait for identify when dialing --- perf/impl/go-libp2p/v0.27/main.go | 6 +- perf/runner/benchmark-results.json | 4708 ++++++++++++++-------------- 2 files changed, 2358 insertions(+), 2356 deletions(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index b07f9bff5..7d3553513 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -11,8 +11,9 @@ import ( "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/peer" - "github.com/multiformats/go-multiaddr" + "github.com/libp2p/go-libp2p/core/peerstore" tls "github.com/libp2p/go-libp2p/p2p/security/tls" + "github.com/multiformats/go-multiaddr" ) func main() { @@ -82,7 +83,8 @@ func main() { } start := time.Now() - err = h.Connect(context.Background(), *serverInfo) + h.Peerstore().AddAddrs(serverInfo.ID, serverInfo.Addrs, peerstore.TempAddrTTL) + _, err = h.Network().DialPeer(context.Background(), serverInfo.ID) if err != nil { panic(err) } diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index 139f9795e..e7370ad16 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -7,29 +7,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.073534389, - "uploadSeconds": 1.022966015, - "downloadSeconds": 6e-8 + "connectionEstablishedSeconds": 0.071717831, + "uploadSeconds": 1.108251356, + "downloadSeconds": 8.7e-8 }, { - "connectionEstablishedSeconds": 0.064356999, - "uploadSeconds": 0.998081542, - "downloadSeconds": 6.7e-8 + "connectionEstablishedSeconds": 0.06313201, + "uploadSeconds": 0.985241566, + "downloadSeconds": 1.05e-7 }, { - "connectionEstablishedSeconds": 0.063721734, - "uploadSeconds": 0.991826811, - "downloadSeconds": 1.2e-7 + "connectionEstablishedSeconds": 0.066539845, + "uploadSeconds": 1.032252996, + "downloadSeconds": 7.7e-8 }, { - "connectionEstablishedSeconds": 0.063634209, - "uploadSeconds": 0.989437537, - "downloadSeconds": 4.6e-8 + "connectionEstablishedSeconds": 0.06276987, + "uploadSeconds": 0.976620431, + "downloadSeconds": 8.2e-8 }, { - "connectionEstablishedSeconds": 0.06520362, - "uploadSeconds": 1.015414228, - "downloadSeconds": 7.9e-8 + "connectionEstablishedSeconds": 0.065300697, + "uploadSeconds": 1.018646835, + "downloadSeconds": 9.1e-8 } ], "implementation": "quic-go", @@ -39,29 +39,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.128835561, - "uploadSeconds": 35.737586498, - "downloadSeconds": 0.063590841 + "connectionEstablishedSeconds": 0.126148138, + "uploadSeconds": 35.39770708, + "downloadSeconds": 0.062901647 }, { - "connectionEstablishedSeconds": 0.127912166, - "uploadSeconds": 38.667856873, - "downloadSeconds": 0.064191392 + "connectionEstablishedSeconds": 0.12372451, + "uploadSeconds": 34.877587988, + "downloadSeconds": 0.061690616 }, { - "connectionEstablishedSeconds": 0.128037643, - "uploadSeconds": 39.031020329, - "downloadSeconds": 0.063663246 + "connectionEstablishedSeconds": 0.125053112, + "uploadSeconds": 35.098348121, + "downloadSeconds": 0.062292537 }, { - "connectionEstablishedSeconds": 0.125461392, - "uploadSeconds": 35.221011787, - "downloadSeconds": 0.062566617 + "connectionEstablishedSeconds": 0.123974689, + "uploadSeconds": 34.782441092, + "downloadSeconds": 0.061811206 }, { - "connectionEstablishedSeconds": 0.127881229, - "uploadSeconds": 35.830456386, - "downloadSeconds": 0.063730291 + "connectionEstablishedSeconds": 0.125870163, + "uploadSeconds": 35.341888119, + "downloadSeconds": 0.062707768 } ], "implementation": "rust-libp2p", @@ -71,29 +71,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.069181494, - "uploadSeconds": 8.663833631, - "downloadSeconds": 0.000052794 + "connectionEstablishedSeconds": 0.06387589, + "uploadSeconds": 14.897244537, + "downloadSeconds": 0.000086712 }, { - "connectionEstablishedSeconds": 0.066686168, - "uploadSeconds": 9.229412335, - "downloadSeconds": 0.000081701 + "connectionEstablishedSeconds": 0.064333418, + "uploadSeconds": 10.918767598, + "downloadSeconds": 0.000107009 }, { - "connectionEstablishedSeconds": 0.063637152, - "uploadSeconds": 10.140803841, - "downloadSeconds": 0.000111314 + "connectionEstablishedSeconds": 0.073568486, + "uploadSeconds": 9.286607313, + "downloadSeconds": 0.000220465 }, { - "connectionEstablishedSeconds": 0.064684463, - "uploadSeconds": 12.200936442, - "downloadSeconds": 0.000126945 + "connectionEstablishedSeconds": 0.064221808, + "uploadSeconds": 6.274033928, + "downloadSeconds": 0.000063738 }, { - "connectionEstablishedSeconds": 0.064385185, - "uploadSeconds": 5.834055514, - "downloadSeconds": 0.000197576 + "connectionEstablishedSeconds": 0.063970082, + "uploadSeconds": 13.355328015, + "downloadSeconds": 0.00011874 } ], "implementation": "rust-libp2p", @@ -103,29 +103,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.068037568, - "uploadSeconds": 1.449457077, - "downloadSeconds": 0.00013048 + "connectionEstablishedSeconds": 0.0656414, + "uploadSeconds": 1.441617759, + "downloadSeconds": 0.000192843 }, { - "connectionEstablishedSeconds": 0.062217728, - "uploadSeconds": 1.363903017, - "downloadSeconds": 0.000167691 + "connectionEstablishedSeconds": 0.063041674, + "uploadSeconds": 1.391953849, + "downloadSeconds": 0.000051184 }, { - "connectionEstablishedSeconds": 0.061760172, - "uploadSeconds": 1.351303046, - "downloadSeconds": 0.000046245 + "connectionEstablishedSeconds": 0.062063281, + "uploadSeconds": 1.384806358, + "downloadSeconds": 0.000057135 }, { - "connectionEstablishedSeconds": 0.066087113, - "uploadSeconds": 1.458958647, - "downloadSeconds": 0.000163002 + "connectionEstablishedSeconds": 0.064573601, + "uploadSeconds": 1.424646168, + "downloadSeconds": 0.000048773 }, { - "connectionEstablishedSeconds": 0.064387156, - "uploadSeconds": 1.421119262, - "downloadSeconds": 0.000038861 + "connectionEstablishedSeconds": 0.064452347, + "uploadSeconds": 1.41460567, + "downloadSeconds": 0.000047386 } ], "implementation": "rust-libp2p-quinn", @@ -136,28 +136,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.786165446, - "downloadSeconds": 0.000004741 + "uploadSeconds": 2.7907368139999997, + "downloadSeconds": 0.000004624 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.704157312, - "downloadSeconds": 0.000004241 + "uploadSeconds": 2.7706807060000003, + "downloadSeconds": 0.00000681 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.962081208, - "downloadSeconds": 0.00000479 + "uploadSeconds": 2.719605393, + "downloadSeconds": 0.000004626 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.7954418370000003, - "downloadSeconds": 0.000004374 + "uploadSeconds": 3.003131051, + "downloadSeconds": 0.000004275 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.661247369, - "downloadSeconds": 0.000006242 + "uploadSeconds": 3.074974594, + "downloadSeconds": 0.000004652 } ], "implementation": "https", @@ -167,29 +167,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.257242958, - "uploadSeconds": 2.898156996, - "downloadSeconds": 0.126289233 + "connectionEstablishedSeconds": 0.18356968, + "uploadSeconds": 2.845136064, + "downloadSeconds": 0.121465042 }, { - "connectionEstablishedSeconds": 0.24601548, - "uploadSeconds": 2.778560537, - "downloadSeconds": 0.120859979 + "connectionEstablishedSeconds": 0.194598603, + "uploadSeconds": 2.849080344, + "downloadSeconds": 0.126641813 }, { - "connectionEstablishedSeconds": 0.242625404, - "uploadSeconds": 2.746282241, - "downloadSeconds": 0.119425337 + "connectionEstablishedSeconds": 0.187702518, + "uploadSeconds": 2.859621042, + "downloadSeconds": 0.12183152 }, { - "connectionEstablishedSeconds": 0.248417743, - "uploadSeconds": 2.792082647, - "downloadSeconds": 0.122889467 + "connectionEstablishedSeconds": 0.191923365, + "uploadSeconds": 2.864386991, + "downloadSeconds": 0.124702355 }, { - "connectionEstablishedSeconds": 0.255177343, - "uploadSeconds": 2.881758737, - "downloadSeconds": 0.125591938 + "connectionEstablishedSeconds": 0.194006051, + "uploadSeconds": 2.887186679, + "downloadSeconds": 0.125618279 } ], "implementation": "go-libp2p", @@ -199,29 +199,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.127848229, - "uploadSeconds": 1.292611852, - "downloadSeconds": 0.061803216 + "connectionEstablishedSeconds": 0.063861006, + "uploadSeconds": 1.258915335, + "downloadSeconds": 0.060972729 }, { - "connectionEstablishedSeconds": 0.12811363, - "uploadSeconds": 1.284820075, - "downloadSeconds": 0.062122628 + "connectionEstablishedSeconds": 0.066730983, + "uploadSeconds": 1.283791855, + "downloadSeconds": 0.062247951 }, { - "connectionEstablishedSeconds": 0.127555659, - "uploadSeconds": 1.273436506, - "downloadSeconds": 0.060895745 + "connectionEstablishedSeconds": 0.063911766, + "uploadSeconds": 1.229570152, + "downloadSeconds": 0.059556412 }, { - "connectionEstablishedSeconds": 0.128008204, - "uploadSeconds": 1.264772788, - "downloadSeconds": 0.061220133 + "connectionEstablishedSeconds": 0.067878354, + "uploadSeconds": 1.310084448, + "downloadSeconds": 0.063338809 }, { - "connectionEstablishedSeconds": 0.132303698, - "uploadSeconds": 1.327344153, - "downloadSeconds": 0.064228251 + "connectionEstablishedSeconds": 0.065068424, + "uploadSeconds": 1.251689327, + "downloadSeconds": 0.060601996 } ], "implementation": "go-libp2p", @@ -241,29 +241,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.063943862, - "uploadSeconds": 6.3e-7, - "downloadSeconds": 1.9445675869999999 + "connectionEstablishedSeconds": 0.063035848, + "uploadSeconds": 5.57e-7, + "downloadSeconds": 1.031684635 }, { - "connectionEstablishedSeconds": 0.062428058, - "uploadSeconds": 5.91e-7, - "downloadSeconds": 1.02886241 + "connectionEstablishedSeconds": 0.062549491, + "uploadSeconds": 6.24e-7, + "downloadSeconds": 1.062655087 }, { - "connectionEstablishedSeconds": 0.065298762, - "uploadSeconds": 6.06e-7, - "downloadSeconds": 1.075758583 + "connectionEstablishedSeconds": 0.063882753, + "uploadSeconds": 6.15e-7, + "downloadSeconds": 1.365721807 }, { - "connectionEstablishedSeconds": 0.06440009, - "uploadSeconds": 6.24e-7, - "downloadSeconds": 1.062645745 + "connectionEstablishedSeconds": 0.068691444, + "uploadSeconds": 6.46e-7, + "downloadSeconds": 1.129898296 }, { - "connectionEstablishedSeconds": 0.060673776, - "uploadSeconds": 6.01e-7, - "downloadSeconds": 1.000647709 + "connectionEstablishedSeconds": 0.063877163, + "uploadSeconds": 5.54e-7, + "downloadSeconds": 1.049462851 } ], "implementation": "quic-go", @@ -273,29 +273,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.124610523, - "uploadSeconds": 0.062097943, - "downloadSeconds": 38.179314432 + "connectionEstablishedSeconds": 0.125497053, + "uploadSeconds": 0.062505884, + "downloadSeconds": 41.707398634 }, { - "connectionEstablishedSeconds": 0.129181421, - "uploadSeconds": 0.064326834, - "downloadSeconds": 36.613869855 + "connectionEstablishedSeconds": 0.121197039, + "uploadSeconds": 0.060202899, + "downloadSeconds": 34.43093803 }, { - "connectionEstablishedSeconds": 0.128061981, - "uploadSeconds": 0.06364587, - "downloadSeconds": 37.86262842 + "connectionEstablishedSeconds": 0.127645116, + "uploadSeconds": 0.063521098, + "downloadSeconds": 35.914196199 }, { - "connectionEstablishedSeconds": 0.12590699, - "uploadSeconds": 0.062548546, - "downloadSeconds": 39.484203053 + "connectionEstablishedSeconds": 0.129042543, + "uploadSeconds": 0.06410038, + "downloadSeconds": 36.30029051 }, { - "connectionEstablishedSeconds": 0.126808331, - "uploadSeconds": 0.063408568, - "downloadSeconds": 35.652751967 + "connectionEstablishedSeconds": 0.139024871, + "uploadSeconds": 0.069074608, + "downloadSeconds": 39.297212503 } ], "implementation": "rust-libp2p", @@ -305,29 +305,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.061041295, - "uploadSeconds": 0.11785278, - "downloadSeconds": 20.858156356 + "connectionEstablishedSeconds": 0.061232706, + "uploadSeconds": 0.118743292, + "downloadSeconds": 9.754380328 }, { - "connectionEstablishedSeconds": 0.064759436, - "uploadSeconds": 0.126188747, - "downloadSeconds": 25.139504889 + "connectionEstablishedSeconds": 0.066431038, + "uploadSeconds": 0.129401107, + "downloadSeconds": 27.496442621 }, { - "connectionEstablishedSeconds": 0.065386286, - "uploadSeconds": 0.127581631, - "downloadSeconds": 19.44089213 + "connectionEstablishedSeconds": 0.068765541, + "uploadSeconds": 0.134091062, + "downloadSeconds": 28.775083466 }, { - "connectionEstablishedSeconds": 0.064602725, - "uploadSeconds": 0.12600768, - "downloadSeconds": 29.363678817 + "connectionEstablishedSeconds": 0.062047614, + "uploadSeconds": 0.120672787, + "downloadSeconds": 8.824578368 }, { - "connectionEstablishedSeconds": 0.064424853, - "uploadSeconds": 0.125434375, - "downloadSeconds": 29.075442273 + "connectionEstablishedSeconds": 0.063827674, + "uploadSeconds": 0.124235372, + "downloadSeconds": 25.670433799 } ], "implementation": "rust-libp2p", @@ -337,29 +337,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.066426458, - "uploadSeconds": 0.128562102, - "downloadSeconds": 1.406269952 + "connectionEstablishedSeconds": 0.06307016, + "uploadSeconds": 0.121919556, + "downloadSeconds": 1.317938822 }, { - "connectionEstablishedSeconds": 0.062947594, - "uploadSeconds": 0.122508445, - "downloadSeconds": 1.326230859 + "connectionEstablishedSeconds": 0.063818881, + "uploadSeconds": 0.124205443, + "downloadSeconds": 1.348505136 }, { - "connectionEstablishedSeconds": 0.063135632, - "uploadSeconds": 0.12315273, - "downloadSeconds": 1.332490635 + "connectionEstablishedSeconds": 0.06458344, + "uploadSeconds": 0.125787226, + "downloadSeconds": 1.358472583 }, { - "connectionEstablishedSeconds": 0.065326068, - "uploadSeconds": 0.127387869, - "downloadSeconds": 1.376855747 + "connectionEstablishedSeconds": 0.062156734, + "uploadSeconds": 0.120884064, + "downloadSeconds": 1.306500379 }, { - "connectionEstablishedSeconds": 0.066076185, - "uploadSeconds": 0.128719025, - "downloadSeconds": 1.441012489 + "connectionEstablishedSeconds": 0.063961475, + "uploadSeconds": 0.124511573, + "downloadSeconds": 1.345313962 } ], "implementation": "rust-libp2p-quinn", @@ -370,28 +370,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189144939, - "downloadSeconds": 2.668715956 + "uploadSeconds": 0.187973696, + "downloadSeconds": 2.848235973 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188799167, - "downloadSeconds": 2.654331318 + "uploadSeconds": 0.179092659, + "downloadSeconds": 2.597372658 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184312243, - "downloadSeconds": 2.7782000289999997 + "uploadSeconds": 0.186427252, + "downloadSeconds": 2.6870848929999998 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186464761, - "downloadSeconds": 2.6601451430000003 + "uploadSeconds": 0.185136008, + "downloadSeconds": 2.752771338 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183973213, - "downloadSeconds": 2.936052888 + "uploadSeconds": 0.18952669, + "downloadSeconds": 2.80348634 } ], "implementation": "https", @@ -401,29 +401,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.241151468, - "uploadSeconds": 0.000001908, - "downloadSeconds": 2.842781712 + "connectionEstablishedSeconds": 0.179393572, + "uploadSeconds": 0.000002311, + "downloadSeconds": 2.832866447 }, { - "connectionEstablishedSeconds": 0.263596828, - "uploadSeconds": 0.000002181, - "downloadSeconds": 3.218761259 + "connectionEstablishedSeconds": 0.19359588, + "uploadSeconds": 0.000003047, + "downloadSeconds": 3.205773539 }, { - "connectionEstablishedSeconds": 0.246584644, - "uploadSeconds": 0.000002162, - "downloadSeconds": 2.977065663 + "connectionEstablishedSeconds": 0.182081015, + "uploadSeconds": 0.000002786, + "downloadSeconds": 2.847979808 }, { - "connectionEstablishedSeconds": 0.24640504, - "uploadSeconds": 0.000002292, - "downloadSeconds": 2.894210966 + "connectionEstablishedSeconds": 0.191907804, + "uploadSeconds": 0.000003374, + "downloadSeconds": 3.195657566 }, { - "connectionEstablishedSeconds": 0.253147228, - "uploadSeconds": 0.000002386, - "downloadSeconds": 3.114069692 + "connectionEstablishedSeconds": 0.190046212, + "uploadSeconds": 0.000002577, + "downloadSeconds": 2.9906799 } ], "implementation": "go-libp2p", @@ -433,29 +433,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.126388751, - "uploadSeconds": 0.000001452, - "downloadSeconds": 1.30453021 + "connectionEstablishedSeconds": 0.065825098, + "uploadSeconds": 0.000003218, + "downloadSeconds": 1.3629588369999999 }, { - "connectionEstablishedSeconds": 0.133952054, - "uploadSeconds": 0.00000173, - "downloadSeconds": 1.389168144 + "connectionEstablishedSeconds": 0.068266897, + "uploadSeconds": 0.000001669, + "downloadSeconds": 1.38042863 }, { - "connectionEstablishedSeconds": 0.126854789, - "uploadSeconds": 0.000001616, - "downloadSeconds": 1.335316416 + "connectionEstablishedSeconds": 0.063680453, + "uploadSeconds": 0.000001863, + "downloadSeconds": 1.328038099 }, { - "connectionEstablishedSeconds": 0.130872222, - "uploadSeconds": 0.000001434, - "downloadSeconds": 1.375239395 + "connectionEstablishedSeconds": 0.06607397, + "uploadSeconds": 0.000002147, + "downloadSeconds": 1.371688504 }, { - "connectionEstablishedSeconds": 0.126340413, - "uploadSeconds": 0.000001736, - "downloadSeconds": 1.326846424 + "connectionEstablishedSeconds": 0.067246739, + "uploadSeconds": 0.000002139, + "downloadSeconds": 1.359028703 } ], "implementation": "go-libp2p", @@ -475,504 +475,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.064760029, - "uploadSeconds": 0.000002237, - "downloadSeconds": 0.06281288 + "connectionEstablishedSeconds": 0.065165399, + "uploadSeconds": 0.00000205, + "downloadSeconds": 0.062984402 }, { - "connectionEstablishedSeconds": 0.062448685, - "uploadSeconds": 0.000001167, - "downloadSeconds": 0.060469641 + "connectionEstablishedSeconds": 0.062747394, + "uploadSeconds": 0.000001998, + "downloadSeconds": 0.060839292 }, { - "connectionEstablishedSeconds": 0.064932292, - "uploadSeconds": 0.000001928, - "downloadSeconds": 0.063148985 + "connectionEstablishedSeconds": 0.064625822, + "uploadSeconds": 0.000002479, + "downloadSeconds": 0.062788394 }, { - "connectionEstablishedSeconds": 0.066137949, - "uploadSeconds": 0.00000194, - "downloadSeconds": 0.064209464 + "connectionEstablishedSeconds": 0.063698972, + "uploadSeconds": 0.000001982, + "downloadSeconds": 0.06184015 }, { - "connectionEstablishedSeconds": 0.060545333, - "uploadSeconds": 9.07e-7, - "downloadSeconds": 0.058755662 + "connectionEstablishedSeconds": 0.062634644, + "uploadSeconds": 0.000001991, + "downloadSeconds": 0.060870242 }, { - "connectionEstablishedSeconds": 0.061730743, - "uploadSeconds": 8.63e-7, - "downloadSeconds": 0.0597931 + "connectionEstablishedSeconds": 0.064013275, + "uploadSeconds": 0.000001995, + "downloadSeconds": 0.062124273 }, { - "connectionEstablishedSeconds": 0.065625336, - "uploadSeconds": 0.000001947, - "downloadSeconds": 0.063831922 + "connectionEstablishedSeconds": 0.064267083, + "uploadSeconds": 9.64e-7, + "downloadSeconds": 0.062409567 }, { - "connectionEstablishedSeconds": 0.062263528, - "uploadSeconds": 0.00000198, - "downloadSeconds": 0.060449721 + "connectionEstablishedSeconds": 0.062738711, + "uploadSeconds": 0.000001009, + "downloadSeconds": 0.061048678 }, { - "connectionEstablishedSeconds": 0.065397138, - "uploadSeconds": 0.000002068, - "downloadSeconds": 0.063491222 + "connectionEstablishedSeconds": 0.064751569, + "uploadSeconds": 8.54e-7, + "downloadSeconds": 0.062899016 }, { - "connectionEstablishedSeconds": 0.06699556, - "uploadSeconds": 0.000001977, - "downloadSeconds": 0.065209392 + "connectionEstablishedSeconds": 0.065416862, + "uploadSeconds": 0.000002034, + "downloadSeconds": 0.06361402 }, { - "connectionEstablishedSeconds": 0.065975661, - "uploadSeconds": 0.000001905, - "downloadSeconds": 0.064126424 + "connectionEstablishedSeconds": 0.063444387, + "uploadSeconds": 8.11e-7, + "downloadSeconds": 0.061771271 }, { - "connectionEstablishedSeconds": 0.063061032, - "uploadSeconds": 9.21e-7, - "downloadSeconds": 0.061925001 + "connectionEstablishedSeconds": 0.063137822, + "uploadSeconds": 8.55e-7, + "downloadSeconds": 0.061375102 }, { - "connectionEstablishedSeconds": 0.064418665, - "uploadSeconds": 0.000002286, - "downloadSeconds": 0.062459007 + "connectionEstablishedSeconds": 0.065550564, + "uploadSeconds": 8.8e-7, + "downloadSeconds": 0.063849843 }, { - "connectionEstablishedSeconds": 0.064316085, + "connectionEstablishedSeconds": 0.064651059, "uploadSeconds": 8.99e-7, - "downloadSeconds": 0.062683664 + "downloadSeconds": 0.062754622 }, { - "connectionEstablishedSeconds": 0.064894229, - "uploadSeconds": 0.000002007, - "downloadSeconds": 0.061567794 + "connectionEstablishedSeconds": 0.065312324, + "uploadSeconds": 0.000001972, + "downloadSeconds": 0.063641094 }, { - "connectionEstablishedSeconds": 0.066622933, - "uploadSeconds": 0.000002061, - "downloadSeconds": 0.064526084 + "connectionEstablishedSeconds": 0.062753236, + "uploadSeconds": 8.91e-7, + "downloadSeconds": 0.06103999 }, { - "connectionEstablishedSeconds": 0.066025413, - "uploadSeconds": 0.000001985, - "downloadSeconds": 0.064214234 + "connectionEstablishedSeconds": 0.064600329, + "uploadSeconds": 0.000001966, + "downloadSeconds": 0.064458711 }, { - "connectionEstablishedSeconds": 0.065527168, - "uploadSeconds": 0.000001991, - "downloadSeconds": 0.063739535 + "connectionEstablishedSeconds": 0.065615952, + "uploadSeconds": 0.00000198, + "downloadSeconds": 0.063755344 }, { - "connectionEstablishedSeconds": 0.061806465, - "uploadSeconds": 0.000001847, - "downloadSeconds": 0.059981388 + "connectionEstablishedSeconds": 0.065301512, + "uploadSeconds": 0.000001254, + "downloadSeconds": 0.06361579 }, { - "connectionEstablishedSeconds": 0.064470062, - "uploadSeconds": 0.000001983, - "downloadSeconds": 0.062677313 + "connectionEstablishedSeconds": 0.065926556, + "uploadSeconds": 0.00000202, + "downloadSeconds": 0.064356162 }, { - "connectionEstablishedSeconds": 0.064385851, - "uploadSeconds": 0.000001936, - "downloadSeconds": 0.062727898 + "connectionEstablishedSeconds": 0.064776862, + "uploadSeconds": 0.000002286, + "downloadSeconds": 0.063039969 }, { - "connectionEstablishedSeconds": 0.065793443, - "uploadSeconds": 0.000001956, - "downloadSeconds": 0.063929008 + "connectionEstablishedSeconds": 0.0653571, + "uploadSeconds": 0.000002036, + "downloadSeconds": 0.063505042 }, { - "connectionEstablishedSeconds": 0.066344564, - "uploadSeconds": 0.00000192, - "downloadSeconds": 0.064569483 + "connectionEstablishedSeconds": 0.064668791, + "uploadSeconds": 8.23e-7, + "downloadSeconds": 0.062919029 }, { - "connectionEstablishedSeconds": 0.062830475, - "uploadSeconds": 8.33e-7, - "downloadSeconds": 0.061086429 + "connectionEstablishedSeconds": 0.062528538, + "uploadSeconds": 8.27e-7, + "downloadSeconds": 0.06084725 }, { - "connectionEstablishedSeconds": 0.065549432, - "uploadSeconds": 8.63e-7, - "downloadSeconds": 0.063729053 + "connectionEstablishedSeconds": 0.065401851, + "uploadSeconds": 0.000002032, + "downloadSeconds": 0.063516094 }, { - "connectionEstablishedSeconds": 0.065623979, - "uploadSeconds": 0.000001908, - "downloadSeconds": 0.063840254 + "connectionEstablishedSeconds": 0.067184136, + "uploadSeconds": 0.000001065, + "downloadSeconds": 0.065393404 }, { - "connectionEstablishedSeconds": 0.06697079, - "uploadSeconds": 0.000002078, - "downloadSeconds": 0.065105928 + "connectionEstablishedSeconds": 0.064649371, + "uploadSeconds": 8.6e-7, + "downloadSeconds": 0.062844864 }, { - "connectionEstablishedSeconds": 0.061487976, - "uploadSeconds": 0.00000194, - "downloadSeconds": 0.059726731 + "connectionEstablishedSeconds": 0.064501136, + "uploadSeconds": 0.000001924, + "downloadSeconds": 0.062687518 }, { - "connectionEstablishedSeconds": 0.066287254, - "uploadSeconds": 7.57e-7, - "downloadSeconds": 0.064530959 + "connectionEstablishedSeconds": 0.063678919, + "uploadSeconds": 0.000002086, + "downloadSeconds": 0.061926582 }, { - "connectionEstablishedSeconds": 0.061716118, - "uploadSeconds": 0.000001937, - "downloadSeconds": 0.060018561 + "connectionEstablishedSeconds": 0.064837881, + "uploadSeconds": 0.000001932, + "downloadSeconds": 0.063041324 }, { - "connectionEstablishedSeconds": 0.064844711, - "uploadSeconds": 8.28e-7, - "downloadSeconds": 0.063176451 + "connectionEstablishedSeconds": 0.065451424, + "uploadSeconds": 9.38e-7, + "downloadSeconds": 0.063633789 }, { - "connectionEstablishedSeconds": 0.063681467, - "uploadSeconds": 8.39e-7, - "downloadSeconds": 0.062491939 + "connectionEstablishedSeconds": 0.06614835, + "uploadSeconds": 0.000001994, + "downloadSeconds": 0.064388666 }, { - "connectionEstablishedSeconds": 0.066033579, - "uploadSeconds": 8.39e-7, - "downloadSeconds": 0.064329757 + "connectionEstablishedSeconds": 0.065818051, + "uploadSeconds": 0.00000108, + "downloadSeconds": 0.06417327 }, { - "connectionEstablishedSeconds": 0.064841555, - "uploadSeconds": 0.000002079, - "downloadSeconds": 0.063022891 + "connectionEstablishedSeconds": 0.064165866, + "uploadSeconds": 0.000001895, + "downloadSeconds": 0.061931799 }, { - "connectionEstablishedSeconds": 0.063232988, - "uploadSeconds": 0.000002007, - "downloadSeconds": 0.061574144 + "connectionEstablishedSeconds": 0.065610024, + "uploadSeconds": 7.56e-7, + "downloadSeconds": 0.063755582 }, { - "connectionEstablishedSeconds": 0.064933807, - "uploadSeconds": 7.77e-7, - "downloadSeconds": 0.063233226 + "connectionEstablishedSeconds": 0.064895944, + "uploadSeconds": 0.000001911, + "downloadSeconds": 0.062890372 }, { - "connectionEstablishedSeconds": 0.06560355, - "uploadSeconds": 0.000001879, - "downloadSeconds": 0.063885974 + "connectionEstablishedSeconds": 0.063400465, + "uploadSeconds": 9.37e-7, + "downloadSeconds": 0.061724983 }, { - "connectionEstablishedSeconds": 0.063048478, - "uploadSeconds": 0.000001966, - "downloadSeconds": 0.061247689 + "connectionEstablishedSeconds": 0.062550655, + "uploadSeconds": 0.00000184, + "downloadSeconds": 0.060743791 }, { - "connectionEstablishedSeconds": 0.065530419, - "uploadSeconds": 8.58e-7, - "downloadSeconds": 0.063799359 + "connectionEstablishedSeconds": 0.061837061, + "uploadSeconds": 7.97e-7, + "downloadSeconds": 0.060037219 }, { - "connectionEstablishedSeconds": 0.062577659, - "uploadSeconds": 0.00000197, - "downloadSeconds": 0.060871138 + "connectionEstablishedSeconds": 0.063318984, + "uploadSeconds": 9.51e-7, + "downloadSeconds": 0.061501912 }, { - "connectionEstablishedSeconds": 0.064430476, - "uploadSeconds": 0.000001943, - "downloadSeconds": 0.062624132 + "connectionEstablishedSeconds": 0.062755613, + "uploadSeconds": 0.000001847, + "downloadSeconds": 0.060933817 }, { - "connectionEstablishedSeconds": 0.065087049, - "uploadSeconds": 0.000001941, - "downloadSeconds": 0.063500727 + "connectionEstablishedSeconds": 0.064000301, + "uploadSeconds": 0.000001945, + "downloadSeconds": 0.062272194 }, { - "connectionEstablishedSeconds": 0.064993479, - "uploadSeconds": 8.5e-7, - "downloadSeconds": 0.063395202 + "connectionEstablishedSeconds": 0.063320814, + "uploadSeconds": 8.07e-7, + "downloadSeconds": 0.061480115 }, { - "connectionEstablishedSeconds": 0.065235155, - "uploadSeconds": 0.000002207, - "downloadSeconds": 0.063520117 + "connectionEstablishedSeconds": 0.063596796, + "uploadSeconds": 0.000002113, + "downloadSeconds": 0.061863084 }, { - "connectionEstablishedSeconds": 0.061144848, - "uploadSeconds": 0.000001996, - "downloadSeconds": 0.059348959 + "connectionEstablishedSeconds": 0.0626508, + "uploadSeconds": 7.9e-7, + "downloadSeconds": 0.060858716 }, { - "connectionEstablishedSeconds": 0.065986763, - "uploadSeconds": 0.000001828, - "downloadSeconds": 0.063752895 + "connectionEstablishedSeconds": 0.065164927, + "uploadSeconds": 8.62e-7, + "downloadSeconds": 0.06338737 }, { - "connectionEstablishedSeconds": 0.065123685, - "uploadSeconds": 0.000001874, - "downloadSeconds": 0.063437157 + "connectionEstablishedSeconds": 0.065109136, + "uploadSeconds": 0.00000193, + "downloadSeconds": 0.062728035 }, { - "connectionEstablishedSeconds": 0.065245189, - "uploadSeconds": 0.000001856, - "downloadSeconds": 0.063451093 + "connectionEstablishedSeconds": 0.064769405, + "uploadSeconds": 0.000001872, + "downloadSeconds": 0.062852259 }, { - "connectionEstablishedSeconds": 0.063450695, - "uploadSeconds": 8.74e-7, - "downloadSeconds": 0.06175543 + "connectionEstablishedSeconds": 0.061786286, + "uploadSeconds": 8.24e-7, + "downloadSeconds": 0.060027114 }, { - "connectionEstablishedSeconds": 0.06624405, - "uploadSeconds": 7.93e-7, - "downloadSeconds": 0.064463587 + "connectionEstablishedSeconds": 0.064935099, + "uploadSeconds": 0.000002051, + "downloadSeconds": 0.063098459 }, { - "connectionEstablishedSeconds": 0.06214795, - "uploadSeconds": 7.65e-7, - "downloadSeconds": 0.060482684 + "connectionEstablishedSeconds": 0.065655911, + "uploadSeconds": 8.36e-7, + "downloadSeconds": 0.063901518 }, { - "connectionEstablishedSeconds": 0.065562946, - "uploadSeconds": 0.000001159, - "downloadSeconds": 0.063926501 + "connectionEstablishedSeconds": 0.064747825, + "uploadSeconds": 7.87e-7, + "downloadSeconds": 0.063124483 }, { - "connectionEstablishedSeconds": 0.066338614, - "uploadSeconds": 8.64e-7, - "downloadSeconds": 0.064582208 + "connectionEstablishedSeconds": 0.063503289, + "uploadSeconds": 0.000001984, + "downloadSeconds": 0.061868251 }, { - "connectionEstablishedSeconds": 0.066080194, - "uploadSeconds": 0.000001938, - "downloadSeconds": 0.064387893 + "connectionEstablishedSeconds": 0.061415703, + "uploadSeconds": 0.000001962, + "downloadSeconds": 0.05970872 }, { - "connectionEstablishedSeconds": 0.062753116, - "uploadSeconds": 0.000001749, - "downloadSeconds": 0.060966769 + "connectionEstablishedSeconds": 0.064769602, + "uploadSeconds": 8.4e-7, + "downloadSeconds": 0.063023085 }, { - "connectionEstablishedSeconds": 0.06670096, - "uploadSeconds": 0.000002136, - "downloadSeconds": 0.065015137 + "connectionEstablishedSeconds": 0.065505636, + "uploadSeconds": 8.87e-7, + "downloadSeconds": 0.063739308 }, { - "connectionEstablishedSeconds": 0.065191127, - "uploadSeconds": 0.000001907, - "downloadSeconds": 0.063967922 + "connectionEstablishedSeconds": 0.06451846, + "uploadSeconds": 9.46e-7, + "downloadSeconds": 0.062635088 }, { - "connectionEstablishedSeconds": 0.062696817, - "uploadSeconds": 0.000001903, - "downloadSeconds": 0.060870225 + "connectionEstablishedSeconds": 0.066384201, + "uploadSeconds": 0.000002059, + "downloadSeconds": 0.063873253 }, { - "connectionEstablishedSeconds": 0.06248965, - "uploadSeconds": 0.000001821, - "downloadSeconds": 0.060678251 + "connectionEstablishedSeconds": 0.062558555, + "uploadSeconds": 0.000001889, + "downloadSeconds": 0.060869005 }, { - "connectionEstablishedSeconds": 0.062654457, - "uploadSeconds": 8.81e-7, - "downloadSeconds": 0.060962527 + "connectionEstablishedSeconds": 0.066144963, + "uploadSeconds": 0.000001031, + "downloadSeconds": 0.064446439 }, { - "connectionEstablishedSeconds": 0.064268986, - "uploadSeconds": 7.85e-7, - "downloadSeconds": 0.062495117 + "connectionEstablishedSeconds": 0.064371163, + "uploadSeconds": 0.000001844, + "downloadSeconds": 0.062515291 }, { - "connectionEstablishedSeconds": 0.063733813, - "uploadSeconds": 0.000001807, - "downloadSeconds": 0.062112064 + "connectionEstablishedSeconds": 0.064233048, + "uploadSeconds": 0.000001994, + "downloadSeconds": 0.0624386 }, { - "connectionEstablishedSeconds": 0.065260619, - "uploadSeconds": 0.000001884, - "downloadSeconds": 0.063585493 + "connectionEstablishedSeconds": 0.06191039, + "uploadSeconds": 0.00000197, + "downloadSeconds": 0.060132284 }, { - "connectionEstablishedSeconds": 0.065842262, - "uploadSeconds": 0.000001853, - "downloadSeconds": 0.064176502 + "connectionEstablishedSeconds": 0.064568576, + "uploadSeconds": 0.000002053, + "downloadSeconds": 0.062796254 }, { - "connectionEstablishedSeconds": 0.060294876, - "uploadSeconds": 0.000001912, - "downloadSeconds": 0.058585692 + "connectionEstablishedSeconds": 0.066758576, + "uploadSeconds": 8.63e-7, + "downloadSeconds": 0.064851693 }, { - "connectionEstablishedSeconds": 0.066388657, - "uploadSeconds": 0.000001224, - "downloadSeconds": 0.064721512 + "connectionEstablishedSeconds": 0.061160558, + "uploadSeconds": 0.000001989, + "downloadSeconds": 0.059307607 }, { - "connectionEstablishedSeconds": 0.064995086, - "uploadSeconds": 7.62e-7, - "downloadSeconds": 0.063261543 + "connectionEstablishedSeconds": 0.063013566, + "uploadSeconds": 0.000002047, + "downloadSeconds": 0.061166608 }, { - "connectionEstablishedSeconds": 0.065398433, - "uploadSeconds": 0.000001887, - "downloadSeconds": 0.062779168 + "connectionEstablishedSeconds": 0.062846489, + "uploadSeconds": 0.000001952, + "downloadSeconds": 0.0610489 }, { - "connectionEstablishedSeconds": 0.064685915, - "uploadSeconds": 8.09e-7, - "downloadSeconds": 0.062934946 + "connectionEstablishedSeconds": 0.063905027, + "uploadSeconds": 0.000001906, + "downloadSeconds": 0.062143314 }, { - "connectionEstablishedSeconds": 0.0652299, - "uploadSeconds": 0.000001814, - "downloadSeconds": 0.063376032 + "connectionEstablishedSeconds": 0.062881868, + "uploadSeconds": 0.000001966, + "downloadSeconds": 0.061308403 }, { - "connectionEstablishedSeconds": 0.06176216, - "uploadSeconds": 0.0000019, - "downloadSeconds": 0.059977637 + "connectionEstablishedSeconds": 0.064227255, + "uploadSeconds": 0.000001957, + "downloadSeconds": 0.06239708 }, { - "connectionEstablishedSeconds": 0.062917191, - "uploadSeconds": 7.77e-7, - "downloadSeconds": 0.061358745 + "connectionEstablishedSeconds": 0.064044998, + "uploadSeconds": 0.000001985, + "downloadSeconds": 0.062253102 }, { - "connectionEstablishedSeconds": 0.064894281, - "uploadSeconds": 0.000001035, - "downloadSeconds": 0.063349511 + "connectionEstablishedSeconds": 0.062412245, + "uploadSeconds": 0.000002063, + "downloadSeconds": 0.060736469 }, { - "connectionEstablishedSeconds": 0.066701458, - "uploadSeconds": 0.000001984, - "downloadSeconds": 0.064929288 + "connectionEstablishedSeconds": 0.063499965, + "uploadSeconds": 0.000001956, + "downloadSeconds": 0.061751684 }, { - "connectionEstablishedSeconds": 0.065497067, - "uploadSeconds": 0.000001976, - "downloadSeconds": 0.063766971 + "connectionEstablishedSeconds": 0.063699321, + "uploadSeconds": 0.000001905, + "downloadSeconds": 0.061931416 }, { - "connectionEstablishedSeconds": 0.065137242, - "uploadSeconds": 0.000001867, - "downloadSeconds": 0.063424394 + "connectionEstablishedSeconds": 0.066367568, + "uploadSeconds": 0.000001943, + "downloadSeconds": 0.064741811 }, { - "connectionEstablishedSeconds": 0.063138487, - "uploadSeconds": 0.000001986, - "downloadSeconds": 0.061429917 + "connectionEstablishedSeconds": 0.066423741, + "uploadSeconds": 8.75e-7, + "downloadSeconds": 0.064588142 }, { - "connectionEstablishedSeconds": 0.064407804, - "uploadSeconds": 0.000001982, - "downloadSeconds": 0.06268847 + "connectionEstablishedSeconds": 0.063184712, + "uploadSeconds": 0.000001091, + "downloadSeconds": 0.061426575 }, { - "connectionEstablishedSeconds": 0.065795651, - "uploadSeconds": 8.68e-7, - "downloadSeconds": 0.064334815 + "connectionEstablishedSeconds": 0.062697375, + "uploadSeconds": 0.000002063, + "downloadSeconds": 0.061594337 }, { - "connectionEstablishedSeconds": 0.064823516, - "uploadSeconds": 0.000001927, - "downloadSeconds": 0.06300212 + "connectionEstablishedSeconds": 0.065604173, + "uploadSeconds": 0.000001958, + "downloadSeconds": 0.063896418 }, { - "connectionEstablishedSeconds": 0.065963804, - "uploadSeconds": 7.9e-7, - "downloadSeconds": 0.064829289 + "connectionEstablishedSeconds": 0.063786339, + "uploadSeconds": 0.000001924, + "downloadSeconds": 0.061962591 }, { - "connectionEstablishedSeconds": 0.064067047, - "uploadSeconds": 0.000001943, - "downloadSeconds": 0.062424641 + "connectionEstablishedSeconds": 0.064901403, + "uploadSeconds": 8.44e-7, + "downloadSeconds": 0.063061015 }, { - "connectionEstablishedSeconds": 0.0659525, - "uploadSeconds": 0.000001998, - "downloadSeconds": 0.064430986 + "connectionEstablishedSeconds": 0.066902795, + "uploadSeconds": 0.000002142, + "downloadSeconds": 0.065148918 }, { - "connectionEstablishedSeconds": 0.062982117, - "uploadSeconds": 8.93e-7, - "downloadSeconds": 0.061279518 + "connectionEstablishedSeconds": 0.06681438, + "uploadSeconds": 9.44e-7, + "downloadSeconds": 0.06453611 }, { - "connectionEstablishedSeconds": 0.065117546, - "uploadSeconds": 8.01e-7, - "downloadSeconds": 0.063463914 + "connectionEstablishedSeconds": 0.06516872, + "uploadSeconds": 0.000001025, + "downloadSeconds": 0.063345599 }, { - "connectionEstablishedSeconds": 0.062436406, - "uploadSeconds": 0.000002008, - "downloadSeconds": 0.060670593 + "connectionEstablishedSeconds": 0.065608415, + "uploadSeconds": 8.83e-7, + "downloadSeconds": 0.063954477 }, { - "connectionEstablishedSeconds": 0.065396799, - "uploadSeconds": 0.000001992, - "downloadSeconds": 0.06381817 + "connectionEstablishedSeconds": 0.063050374, + "uploadSeconds": 0.0000019, + "downloadSeconds": 0.061264983 }, { - "connectionEstablishedSeconds": 0.065378427, - "uploadSeconds": 0.000001825, - "downloadSeconds": 0.063600177 + "connectionEstablishedSeconds": 0.06506769, + "uploadSeconds": 0.000001938, + "downloadSeconds": 0.06324869 }, { - "connectionEstablishedSeconds": 0.062197303, - "uploadSeconds": 0.000001965, - "downloadSeconds": 0.060437046 + "connectionEstablishedSeconds": 0.063733822, + "uploadSeconds": 8.25e-7, + "downloadSeconds": 0.06194249 }, { - "connectionEstablishedSeconds": 0.066848549, - "uploadSeconds": 9.25e-7, - "downloadSeconds": 0.065111064 + "connectionEstablishedSeconds": 0.06545029, + "uploadSeconds": 0.00000198, + "downloadSeconds": 0.063731531 }, { - "connectionEstablishedSeconds": 0.066892128, - "uploadSeconds": 8.49e-7, - "downloadSeconds": 0.065136432 + "connectionEstablishedSeconds": 0.063806752, + "uploadSeconds": 0.000001977, + "downloadSeconds": 0.062047961 }, { - "connectionEstablishedSeconds": 0.063533068, - "uploadSeconds": 0.000001934, - "downloadSeconds": 0.061806919 + "connectionEstablishedSeconds": 0.065782118, + "uploadSeconds": 7.98e-7, + "downloadSeconds": 0.063986379 }, { - "connectionEstablishedSeconds": 0.065851953, - "uploadSeconds": 0.000001829, - "downloadSeconds": 0.064120925 + "connectionEstablishedSeconds": 0.065587017, + "uploadSeconds": 0.000001947, + "downloadSeconds": 0.063807411 }, { - "connectionEstablishedSeconds": 0.06636729, - "uploadSeconds": 0.000001922, - "downloadSeconds": 0.064636105 + "connectionEstablishedSeconds": 0.064806976, + "uploadSeconds": 0.000001822, + "downloadSeconds": 0.063000614 }, { - "connectionEstablishedSeconds": 0.063609689, - "uploadSeconds": 9.22e-7, - "downloadSeconds": 0.061941316 + "connectionEstablishedSeconds": 0.063191426, + "uploadSeconds": 8.52e-7, + "downloadSeconds": 0.061417895 }, { - "connectionEstablishedSeconds": 0.066131632, - "uploadSeconds": 8.55e-7, - "downloadSeconds": 0.06437746 + "connectionEstablishedSeconds": 0.066138367, + "uploadSeconds": 0.000001897, + "downloadSeconds": 0.064314152 }, { - "connectionEstablishedSeconds": 0.064215882, - "uploadSeconds": 0.000001915, - "downloadSeconds": 0.062532476 + "connectionEstablishedSeconds": 0.06372295, + "uploadSeconds": 0.000001952, + "downloadSeconds": 0.061796685 }, { - "connectionEstablishedSeconds": 0.063644923, - "uploadSeconds": 0.000001938, - "downloadSeconds": 0.060830741 + "connectionEstablishedSeconds": 0.064172483, + "uploadSeconds": 0.00000199, + "downloadSeconds": 0.062531066 }, { - "connectionEstablishedSeconds": 0.063732836, - "uploadSeconds": 0.000001884, - "downloadSeconds": 0.061946688 + "connectionEstablishedSeconds": 0.069595187, + "uploadSeconds": 8.8e-7, + "downloadSeconds": 0.0677336 }, { - "connectionEstablishedSeconds": 0.066034355, - "uploadSeconds": 0.000001708, - "downloadSeconds": 0.0643128 + "connectionEstablishedSeconds": 0.065298142, + "uploadSeconds": 0.000002023, + "downloadSeconds": 0.063484516 } ], "implementation": "quic-go", @@ -982,504 +982,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.12890574, - "uploadSeconds": 0.064234944, - "downloadSeconds": 0.064077181 + "connectionEstablishedSeconds": 0.128782283, + "uploadSeconds": 0.064142782, + "downloadSeconds": 0.064041615 }, { - "connectionEstablishedSeconds": 0.123666368, - "uploadSeconds": 0.06144532, - "downloadSeconds": 0.061441703 + "connectionEstablishedSeconds": 0.122877358, + "uploadSeconds": 0.061015723, + "downloadSeconds": 0.061037874 }, { - "connectionEstablishedSeconds": 0.129268658, - "uploadSeconds": 0.064259392, - "downloadSeconds": 0.064232697 + "connectionEstablishedSeconds": 0.126806208, + "uploadSeconds": 0.063001184, + "downloadSeconds": 0.06303076 }, { - "connectionEstablishedSeconds": 0.127924895, - "uploadSeconds": 0.063625281, - "downloadSeconds": 0.063605948 + "connectionEstablishedSeconds": 0.127298349, + "uploadSeconds": 0.063292919, + "downloadSeconds": 0.063327184 }, { - "connectionEstablishedSeconds": 0.126165285, - "uploadSeconds": 0.062710021, - "downloadSeconds": 0.062744639 + "connectionEstablishedSeconds": 0.124117775, + "uploadSeconds": 0.061674621, + "downloadSeconds": 0.061733501 }, { - "connectionEstablishedSeconds": 0.125455033, - "uploadSeconds": 0.062406175, - "downloadSeconds": 0.06237357 + "connectionEstablishedSeconds": 0.11815247, + "uploadSeconds": 0.058715189, + "downloadSeconds": 0.058717916 }, { - "connectionEstablishedSeconds": 0.130679247, - "uploadSeconds": 0.064931164, - "downloadSeconds": 0.065014193 + "connectionEstablishedSeconds": 0.130421381, + "uploadSeconds": 0.064805873, + "downloadSeconds": 0.064916393 }, { - "connectionEstablishedSeconds": 0.118667532, - "uploadSeconds": 0.058958126, - "downloadSeconds": 0.058990372 + "connectionEstablishedSeconds": 0.120928897, + "uploadSeconds": 0.060078751, + "downloadSeconds": 0.060161814 }, { - "connectionEstablishedSeconds": 0.128856956, - "uploadSeconds": 0.064054102, - "downloadSeconds": 0.064101849 + "connectionEstablishedSeconds": 0.1208453, + "uploadSeconds": 0.059910829, + "downloadSeconds": 0.059957343 }, { - "connectionEstablishedSeconds": 0.127606227, - "uploadSeconds": 0.063461964, - "downloadSeconds": 0.063486288 + "connectionEstablishedSeconds": 0.129701024, + "uploadSeconds": 0.064453217, + "downloadSeconds": 0.064540534 }, { - "connectionEstablishedSeconds": 0.119437378, - "uploadSeconds": 0.059492119, - "downloadSeconds": 0.05941957 + "connectionEstablishedSeconds": 0.122099613, + "uploadSeconds": 0.060642482, + "downloadSeconds": 0.060735635 }, { - "connectionEstablishedSeconds": 0.124138498, - "uploadSeconds": 0.061714219, - "downloadSeconds": 0.061673285 + "connectionEstablishedSeconds": 0.125861895, + "uploadSeconds": 0.062546269, + "downloadSeconds": 0.062614625 }, { - "connectionEstablishedSeconds": 0.129222748, - "uploadSeconds": 0.064260759, - "downloadSeconds": 0.06430083 + "connectionEstablishedSeconds": 0.121033173, + "uploadSeconds": 0.060119234, + "downloadSeconds": 0.060325896 }, { - "connectionEstablishedSeconds": 0.125269156, - "uploadSeconds": 0.062145234, - "downloadSeconds": 0.062231168 + "connectionEstablishedSeconds": 0.12897512, + "uploadSeconds": 0.064099577, + "downloadSeconds": 0.064192461 }, { - "connectionEstablishedSeconds": 0.124394051, - "uploadSeconds": 0.061821911, - "downloadSeconds": 0.061863613 + "connectionEstablishedSeconds": 0.12537412, + "uploadSeconds": 0.062271465, + "downloadSeconds": 0.062348898 }, { - "connectionEstablishedSeconds": 0.126723226, - "uploadSeconds": 0.062997038, - "downloadSeconds": 0.063023762 + "connectionEstablishedSeconds": 0.122704549, + "uploadSeconds": 0.060939701, + "downloadSeconds": 0.061026676 }, { - "connectionEstablishedSeconds": 0.128021564, - "uploadSeconds": 0.063460744, - "downloadSeconds": 0.063511776 + "connectionEstablishedSeconds": 0.121299417, + "uploadSeconds": 0.060644079, + "downloadSeconds": 0.060340429 }, { - "connectionEstablishedSeconds": 0.12773778, - "uploadSeconds": 0.063448123, - "downloadSeconds": 0.06349057 + "connectionEstablishedSeconds": 0.129463275, + "uploadSeconds": 0.064330819, + "downloadSeconds": 0.064387025 }, { - "connectionEstablishedSeconds": 0.126872286, - "uploadSeconds": 0.063037982, - "downloadSeconds": 0.063093935 + "connectionEstablishedSeconds": 0.118009564, + "uploadSeconds": 0.058634205, + "downloadSeconds": 0.058707631 }, { - "connectionEstablishedSeconds": 0.123476483, - "uploadSeconds": 0.061382576, - "downloadSeconds": 0.061395165 + "connectionEstablishedSeconds": 0.126005819, + "uploadSeconds": 0.06262453, + "downloadSeconds": 0.062693139 }, { - "connectionEstablishedSeconds": 0.128140827, - "uploadSeconds": 0.063684825, - "downloadSeconds": 0.063828771 + "connectionEstablishedSeconds": 0.123951592, + "uploadSeconds": 0.061564866, + "downloadSeconds": 0.061667522 }, { - "connectionEstablishedSeconds": 0.123338245, - "uploadSeconds": 0.061279922, - "downloadSeconds": 0.061289205 + "connectionEstablishedSeconds": 0.130207645, + "uploadSeconds": 0.064686677, + "downloadSeconds": 0.064783184 }, { - "connectionEstablishedSeconds": 0.124056083, - "uploadSeconds": 0.061649497, - "downloadSeconds": 0.061711477 + "connectionEstablishedSeconds": 0.122590137, + "uploadSeconds": 0.060902271, + "downloadSeconds": 0.060967625 }, { - "connectionEstablishedSeconds": 0.127936406, - "uploadSeconds": 0.063595593, - "downloadSeconds": 0.063629585 + "connectionEstablishedSeconds": 0.121903049, + "uploadSeconds": 0.060545381, + "downloadSeconds": 0.060599883 }, { - "connectionEstablishedSeconds": 0.123247794, - "uploadSeconds": 0.061233624, - "downloadSeconds": 0.061263316 + "connectionEstablishedSeconds": 0.127654451, + "uploadSeconds": 0.063419366, + "downloadSeconds": 0.063509647 }, { - "connectionEstablishedSeconds": 0.121794273, - "uploadSeconds": 0.060511801, - "downloadSeconds": 0.060624242 + "connectionEstablishedSeconds": 0.123890299, + "uploadSeconds": 0.061515197, + "downloadSeconds": 0.061600551 }, { - "connectionEstablishedSeconds": 0.127386558, - "uploadSeconds": 0.063249047, - "downloadSeconds": 0.063317881 + "connectionEstablishedSeconds": 0.127159301, + "uploadSeconds": 0.063216999, + "downloadSeconds": 0.063270615 }, { - "connectionEstablishedSeconds": 0.129265951, - "uploadSeconds": 0.064265895, - "downloadSeconds": 0.064397965 + "connectionEstablishedSeconds": 0.11853953, + "uploadSeconds": 0.058840163, + "downloadSeconds": 0.058910879 }, { - "connectionEstablishedSeconds": 0.123841345, - "uploadSeconds": 0.061519427, - "downloadSeconds": 0.061568687 + "connectionEstablishedSeconds": 0.125482649, + "uploadSeconds": 0.062332114, + "downloadSeconds": 0.062400346 }, { - "connectionEstablishedSeconds": 0.129677907, - "uploadSeconds": 0.06445228, - "downloadSeconds": 0.064479643 + "connectionEstablishedSeconds": 0.122352409, + "uploadSeconds": 0.060781148, + "downloadSeconds": 0.060850876 }, { - "connectionEstablishedSeconds": 0.122579899, - "uploadSeconds": 0.060907635, - "downloadSeconds": 0.060942285 + "connectionEstablishedSeconds": 0.127330874, + "uploadSeconds": 0.063281691, + "downloadSeconds": 0.063333099 }, { - "connectionEstablishedSeconds": 0.124209834, - "uploadSeconds": 0.061721528, - "downloadSeconds": 0.061738801 + "connectionEstablishedSeconds": 0.125958156, + "uploadSeconds": 0.062593238, + "downloadSeconds": 0.062644244 }, { - "connectionEstablishedSeconds": 0.126179737, - "uploadSeconds": 0.062663006, - "downloadSeconds": 0.062718067 + "connectionEstablishedSeconds": 0.126108225, + "uploadSeconds": 0.062657803, + "downloadSeconds": 0.062761149 }, { - "connectionEstablishedSeconds": 0.120286079, - "uploadSeconds": 0.059710579, - "downloadSeconds": 0.059754437 + "connectionEstablishedSeconds": 0.120901849, + "uploadSeconds": 0.06002898, + "downloadSeconds": 0.060096329 }, { - "connectionEstablishedSeconds": 0.128902775, - "uploadSeconds": 0.064057795, - "downloadSeconds": 0.0641045 + "connectionEstablishedSeconds": 0.130562683, + "uploadSeconds": 0.064496581, + "downloadSeconds": 0.064553639 }, { - "connectionEstablishedSeconds": 0.12501096, - "uploadSeconds": 0.06211691, - "downloadSeconds": 0.062130498 + "connectionEstablishedSeconds": 0.126918076, + "uploadSeconds": 0.063321541, + "downloadSeconds": 0.063453397 }, { - "connectionEstablishedSeconds": 0.125588205, - "uploadSeconds": 0.062423772, - "downloadSeconds": 0.062548054 + "connectionEstablishedSeconds": 0.12198058, + "uploadSeconds": 0.06060065, + "downloadSeconds": 0.060660093 }, { - "connectionEstablishedSeconds": 0.127045386, - "uploadSeconds": 0.063157894, - "downloadSeconds": 0.06322661 + "connectionEstablishedSeconds": 0.1259285, + "uploadSeconds": 0.062543989, + "downloadSeconds": 0.062632145 }, { - "connectionEstablishedSeconds": 0.12536339, - "uploadSeconds": 0.062324403, - "downloadSeconds": 0.062349488 + "connectionEstablishedSeconds": 0.12017305, + "uploadSeconds": 0.059617034, + "downloadSeconds": 0.059714616 }, { - "connectionEstablishedSeconds": 0.124130694, - "uploadSeconds": 0.06169533, - "downloadSeconds": 0.061743995 + "connectionEstablishedSeconds": 0.120856119, + "uploadSeconds": 0.0600165, + "downloadSeconds": 0.060091443 }, { - "connectionEstablishedSeconds": 0.12162633, - "uploadSeconds": 0.060141065, - "downloadSeconds": 0.060204186 + "connectionEstablishedSeconds": 0.126045508, + "uploadSeconds": 0.06261744, + "downloadSeconds": 0.062673731 }, { - "connectionEstablishedSeconds": 0.125090977, - "uploadSeconds": 0.062147681, - "downloadSeconds": 0.062210098 + "connectionEstablishedSeconds": 0.124257681, + "uploadSeconds": 0.061677647, + "downloadSeconds": 0.061778575 }, { - "connectionEstablishedSeconds": 0.118105467, - "uploadSeconds": 0.058706731, - "downloadSeconds": 0.058756401 + "connectionEstablishedSeconds": 0.125857894, + "uploadSeconds": 0.062652721, + "downloadSeconds": 0.062597471 }, { - "connectionEstablishedSeconds": 0.123878404, - "uploadSeconds": 0.061560572, - "downloadSeconds": 0.061614152 + "connectionEstablishedSeconds": 0.122715896, + "uploadSeconds": 0.060923454, + "downloadSeconds": 0.06102335 }, { - "connectionEstablishedSeconds": 0.124496523, - "uploadSeconds": 0.061845435, - "downloadSeconds": 0.061903011 + "connectionEstablishedSeconds": 0.126295478, + "uploadSeconds": 0.062703852, + "downloadSeconds": 0.062786489 }, { - "connectionEstablishedSeconds": 0.12443545, - "uploadSeconds": 0.061831566, - "downloadSeconds": 0.061893016 + "connectionEstablishedSeconds": 0.130609852, + "uploadSeconds": 0.0648943, + "downloadSeconds": 0.064971453 }, { - "connectionEstablishedSeconds": 0.123151719, - "uploadSeconds": 0.061200232, - "downloadSeconds": 0.061242368 + "connectionEstablishedSeconds": 0.124722058, + "uploadSeconds": 0.061948955, + "downloadSeconds": 0.062011269 }, { - "connectionEstablishedSeconds": 0.128504905, - "uploadSeconds": 0.0639307, - "downloadSeconds": 0.063969831 + "connectionEstablishedSeconds": 0.128852791, + "uploadSeconds": 0.064004153, + "downloadSeconds": 0.064074731 }, { - "connectionEstablishedSeconds": 0.126148904, - "uploadSeconds": 0.062676269, - "downloadSeconds": 0.062754341 + "connectionEstablishedSeconds": 0.129624863, + "uploadSeconds": 0.064394522, + "downloadSeconds": 0.064471689 }, { - "connectionEstablishedSeconds": 0.123028749, - "uploadSeconds": 0.061168186, - "downloadSeconds": 0.061328432 + "connectionEstablishedSeconds": 0.129167269, + "uploadSeconds": 0.064227411, + "downloadSeconds": 0.064319623 }, { - "connectionEstablishedSeconds": 0.119122662, - "uploadSeconds": 0.059129282, - "downloadSeconds": 0.059176153 + "connectionEstablishedSeconds": 0.124525167, + "uploadSeconds": 0.061863103, + "downloadSeconds": 0.061928295 }, { - "connectionEstablishedSeconds": 0.127636204, - "uploadSeconds": 0.063429603, - "downloadSeconds": 0.063485914 + "connectionEstablishedSeconds": 0.127854544, + "uploadSeconds": 0.063500323, + "downloadSeconds": 0.063627182 }, { - "connectionEstablishedSeconds": 0.127539638, - "uploadSeconds": 0.0633655, - "downloadSeconds": 0.063407649 + "connectionEstablishedSeconds": 0.118824595, + "uploadSeconds": 0.059012971, + "downloadSeconds": 0.059077709 }, { - "connectionEstablishedSeconds": 0.124085235, - "uploadSeconds": 0.061666285, - "downloadSeconds": 0.061769771 + "connectionEstablishedSeconds": 0.12448396, + "uploadSeconds": 0.061848909, + "downloadSeconds": 0.061928463 }, { - "connectionEstablishedSeconds": 0.126051378, - "uploadSeconds": 0.06264114, - "downloadSeconds": 0.062682767 + "connectionEstablishedSeconds": 0.125085891, + "uploadSeconds": 0.062138362, + "downloadSeconds": 0.062185374 }, { - "connectionEstablishedSeconds": 0.121206208, - "uploadSeconds": 0.060259099, - "downloadSeconds": 0.060215874 + "connectionEstablishedSeconds": 0.120385765, + "uploadSeconds": 0.059740462, + "downloadSeconds": 0.059817489 }, { - "connectionEstablishedSeconds": 0.123315093, - "uploadSeconds": 0.061282075, - "downloadSeconds": 0.06129655 + "connectionEstablishedSeconds": 0.126787493, + "uploadSeconds": 0.063007284, + "downloadSeconds": 0.063050622 }, { - "connectionEstablishedSeconds": 0.124861246, - "uploadSeconds": 0.062037243, - "downloadSeconds": 0.062078911 + "connectionEstablishedSeconds": 0.127343774, + "uploadSeconds": 0.0632535, + "downloadSeconds": 0.06330645 }, { - "connectionEstablishedSeconds": 0.120254617, - "uploadSeconds": 0.059760296, - "downloadSeconds": 0.059818618 + "connectionEstablishedSeconds": 0.129443303, + "uploadSeconds": 0.064301956, + "downloadSeconds": 0.064416941 }, { - "connectionEstablishedSeconds": 0.126175648, - "uploadSeconds": 0.062650832, - "downloadSeconds": 0.06269929 + "connectionEstablishedSeconds": 0.12880829, + "uploadSeconds": 0.063989307, + "downloadSeconds": 0.064044952 }, { - "connectionEstablishedSeconds": 0.119165489, - "uploadSeconds": 0.059187281, - "downloadSeconds": 0.059384443 + "connectionEstablishedSeconds": 0.125715137, + "uploadSeconds": 0.062466058, + "downloadSeconds": 0.062509002 }, { - "connectionEstablishedSeconds": 0.127276105, - "uploadSeconds": 0.063267277, - "downloadSeconds": 0.063277402 + "connectionEstablishedSeconds": 0.130802753, + "uploadSeconds": 0.06499956, + "downloadSeconds": 0.065050477 }, { - "connectionEstablishedSeconds": 0.128078375, - "uploadSeconds": 0.063689218, - "downloadSeconds": 0.063717693 + "connectionEstablishedSeconds": 0.127359533, + "uploadSeconds": 0.06326897, + "downloadSeconds": 0.063325505 }, { - "connectionEstablishedSeconds": 0.130814074, - "uploadSeconds": 0.065013698, - "downloadSeconds": 0.065038194 + "connectionEstablishedSeconds": 0.125144649, + "uploadSeconds": 0.06215178, + "downloadSeconds": 0.062216615 }, { - "connectionEstablishedSeconds": 0.125699777, - "uploadSeconds": 0.062473144, - "downloadSeconds": 0.062501372 + "connectionEstablishedSeconds": 0.128044962, + "uploadSeconds": 0.063625884, + "downloadSeconds": 0.063674575 }, { - "connectionEstablishedSeconds": 0.127536867, - "uploadSeconds": 0.063443592, - "downloadSeconds": 0.063402855 + "connectionEstablishedSeconds": 0.12984098, + "uploadSeconds": 0.064508148, + "downloadSeconds": 0.064584498 }, { - "connectionEstablishedSeconds": 0.120001228, - "uploadSeconds": 0.059615536, - "downloadSeconds": 0.059700619 + "connectionEstablishedSeconds": 0.127962304, + "uploadSeconds": 0.063610496, + "downloadSeconds": 0.063675836 }, { - "connectionEstablishedSeconds": 0.124652579, - "uploadSeconds": 0.062025072, - "downloadSeconds": 0.061968964 + "connectionEstablishedSeconds": 0.120000642, + "uploadSeconds": 0.059590507, + "downloadSeconds": 0.059647934 }, { - "connectionEstablishedSeconds": 0.129308472, - "uploadSeconds": 0.064272732, - "downloadSeconds": 0.064343532 + "connectionEstablishedSeconds": 0.125749348, + "uploadSeconds": 0.062478223, + "downloadSeconds": 0.062530638 }, { - "connectionEstablishedSeconds": 0.121926007, - "uploadSeconds": 0.060601275, - "downloadSeconds": 0.060636989 + "connectionEstablishedSeconds": 0.127441701, + "uploadSeconds": 0.063300783, + "downloadSeconds": 0.063393374 }, { - "connectionEstablishedSeconds": 0.128084176, - "uploadSeconds": 0.063678326, - "downloadSeconds": 0.063726372 + "connectionEstablishedSeconds": 0.123424165, + "uploadSeconds": 0.061305335, + "downloadSeconds": 0.06136762 }, { - "connectionEstablishedSeconds": 0.127331445, - "uploadSeconds": 0.063229219, - "downloadSeconds": 0.063301032 + "connectionEstablishedSeconds": 0.12304951, + "uploadSeconds": 0.061146982, + "downloadSeconds": 0.06118203 }, { - "connectionEstablishedSeconds": 0.128604751, - "uploadSeconds": 0.063915006, - "downloadSeconds": 0.063960143 + "connectionEstablishedSeconds": 0.125308047, + "uploadSeconds": 0.062224494, + "downloadSeconds": 0.062323807 }, { - "connectionEstablishedSeconds": 0.12927236, - "uploadSeconds": 0.064247353, - "downloadSeconds": 0.064270362 + "connectionEstablishedSeconds": 0.12973905, + "uploadSeconds": 0.064472966, + "downloadSeconds": 0.064529546 }, { - "connectionEstablishedSeconds": 0.123154914, - "uploadSeconds": 0.06117626, - "downloadSeconds": 0.061225975 + "connectionEstablishedSeconds": 0.128102656, + "uploadSeconds": 0.063863468, + "downloadSeconds": 0.063635207 }, { - "connectionEstablishedSeconds": 0.1243586, - "uploadSeconds": 0.061846783, - "downloadSeconds": 0.061860297 + "connectionEstablishedSeconds": 0.125637036, + "uploadSeconds": 0.062420345, + "downloadSeconds": 0.062469283 }, { - "connectionEstablishedSeconds": 0.126006421, - "uploadSeconds": 0.062605494, - "downloadSeconds": 0.062678936 + "connectionEstablishedSeconds": 0.118981084, + "uploadSeconds": 0.059069735, + "downloadSeconds": 0.059129922 }, { - "connectionEstablishedSeconds": 0.122807399, - "uploadSeconds": 0.061034823, - "downloadSeconds": 0.061078398 + "connectionEstablishedSeconds": 0.120720618, + "uploadSeconds": 0.059951333, + "downloadSeconds": 0.060029474 }, { - "connectionEstablishedSeconds": 0.128105322, - "uploadSeconds": 0.063667657, - "downloadSeconds": 0.063743009 + "connectionEstablishedSeconds": 0.123367197, + "uploadSeconds": 0.061363585, + "downloadSeconds": 0.061318307 }, { - "connectionEstablishedSeconds": 0.123447944, - "uploadSeconds": 0.0614329, - "downloadSeconds": 0.061387349 + "connectionEstablishedSeconds": 0.125229133, + "uploadSeconds": 0.062206788, + "downloadSeconds": 0.062294396 }, { - "connectionEstablishedSeconds": 0.126163081, - "uploadSeconds": 0.062636708, - "downloadSeconds": 0.0626641 + "connectionEstablishedSeconds": 0.12312703, + "uploadSeconds": 0.061167752, + "downloadSeconds": 0.061232767 }, { - "connectionEstablishedSeconds": 0.124654643, - "uploadSeconds": 0.061948928, - "downloadSeconds": 0.061996041 + "connectionEstablishedSeconds": 0.125516511, + "uploadSeconds": 0.062366896, + "downloadSeconds": 0.062436136 }, { - "connectionEstablishedSeconds": 0.12803414, - "uploadSeconds": 0.063604036, - "downloadSeconds": 0.063647278 + "connectionEstablishedSeconds": 0.126220729, + "uploadSeconds": 0.062574059, + "downloadSeconds": 0.062642618 }, { - "connectionEstablishedSeconds": 0.131103982, - "uploadSeconds": 0.065187795, - "downloadSeconds": 0.065250979 + "connectionEstablishedSeconds": 0.125496394, + "uploadSeconds": 0.0623366, + "downloadSeconds": 0.062402276 }, { - "connectionEstablishedSeconds": 0.125471676, - "uploadSeconds": 0.062379177, - "downloadSeconds": 0.062390086 + "connectionEstablishedSeconds": 0.123646613, + "uploadSeconds": 0.061393611, + "downloadSeconds": 0.061439843 }, { - "connectionEstablishedSeconds": 0.125032401, - "uploadSeconds": 0.062132886, - "downloadSeconds": 0.0621851 + "connectionEstablishedSeconds": 0.128086877, + "uploadSeconds": 0.063653077, + "downloadSeconds": 0.063718554 }, { - "connectionEstablishedSeconds": 0.125146993, - "uploadSeconds": 0.062156848, - "downloadSeconds": 0.06219907 + "connectionEstablishedSeconds": 0.129262803, + "uploadSeconds": 0.064253408, + "downloadSeconds": 0.064303179 }, { - "connectionEstablishedSeconds": 0.125724129, - "uploadSeconds": 0.062447722, - "downloadSeconds": 0.062481181 + "connectionEstablishedSeconds": 0.127148072, + "uploadSeconds": 0.063193085, + "downloadSeconds": 0.063277279 }, { - "connectionEstablishedSeconds": 0.124786004, - "uploadSeconds": 0.062042945, - "downloadSeconds": 0.06264053 + "connectionEstablishedSeconds": 0.128584395, + "uploadSeconds": 0.063907041, + "downloadSeconds": 0.06396357 }, { - "connectionEstablishedSeconds": 0.122854895, - "uploadSeconds": 0.061029218, - "downloadSeconds": 0.061082874 + "connectionEstablishedSeconds": 0.124292227, + "uploadSeconds": 0.061732539, + "downloadSeconds": 0.061779283 }, { - "connectionEstablishedSeconds": 0.127816982, - "uploadSeconds": 0.063556758, - "downloadSeconds": 0.063570017 + "connectionEstablishedSeconds": 0.125535576, + "uploadSeconds": 0.062369058, + "downloadSeconds": 0.062449164 }, { - "connectionEstablishedSeconds": 0.128751465, - "uploadSeconds": 0.063987236, - "downloadSeconds": 0.064039094 + "connectionEstablishedSeconds": 0.130730147, + "uploadSeconds": 0.064963572, + "downloadSeconds": 0.065039169 }, { - "connectionEstablishedSeconds": 0.128139274, - "uploadSeconds": 0.063677502, - "downloadSeconds": 0.063743376 + "connectionEstablishedSeconds": 0.123208736, + "uploadSeconds": 0.061167329, + "downloadSeconds": 0.061260565 }, { - "connectionEstablishedSeconds": 0.12227394, - "uploadSeconds": 0.06069762, - "downloadSeconds": 0.060746496 + "connectionEstablishedSeconds": 0.127480441, + "uploadSeconds": 0.063313736, + "downloadSeconds": 0.063365761 }, { - "connectionEstablishedSeconds": 0.129220588, - "uploadSeconds": 0.064189879, - "downloadSeconds": 0.064285771 + "connectionEstablishedSeconds": 0.124865335, + "uploadSeconds": 0.062069213, + "downloadSeconds": 0.062112659 }, { - "connectionEstablishedSeconds": 0.124770957, - "uploadSeconds": 0.061999252, - "downloadSeconds": 0.062004879 + "connectionEstablishedSeconds": 0.127346962, + "uploadSeconds": 0.063268241, + "downloadSeconds": 0.063310113 }, { - "connectionEstablishedSeconds": 0.129240924, - "uploadSeconds": 0.064258811, - "downloadSeconds": 0.064342173 + "connectionEstablishedSeconds": 0.130435342, + "uploadSeconds": 0.064819538, + "downloadSeconds": 0.064874989 }, { - "connectionEstablishedSeconds": 0.125171561, - "uploadSeconds": 0.062195451, - "downloadSeconds": 0.062236192 + "connectionEstablishedSeconds": 0.122051259, + "uploadSeconds": 0.060598517, + "downloadSeconds": 0.060682717 }, { - "connectionEstablishedSeconds": 0.129305095, - "uploadSeconds": 0.064498854, - "downloadSeconds": 0.06432414 + "connectionEstablishedSeconds": 0.126631048, + "uploadSeconds": 0.062935626, + "downloadSeconds": 0.062977163 }, { - "connectionEstablishedSeconds": 0.130281646, - "uploadSeconds": 0.064774718, - "downloadSeconds": 0.064791614 + "connectionEstablishedSeconds": 0.125074157, + "uploadSeconds": 0.062137365, + "downloadSeconds": 0.06219817 } ], "implementation": "rust-libp2p", @@ -1489,504 +1489,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.062555178, - "uploadSeconds": 0.121464442, - "downloadSeconds": 0.000082901 + "connectionEstablishedSeconds": 0.065269712, + "uploadSeconds": 0.126687384, + "downloadSeconds": 0.000095155 }, { - "connectionEstablishedSeconds": 0.063369527, - "uploadSeconds": 0.123457052, - "downloadSeconds": 0.000085259 + "connectionEstablishedSeconds": 0.061772457, + "uploadSeconds": 0.119781377, + "downloadSeconds": 0.000088763 }, { - "connectionEstablishedSeconds": 0.063640605, - "uploadSeconds": 0.123966857, - "downloadSeconds": 0.000084324 + "connectionEstablishedSeconds": 0.063039581, + "uploadSeconds": 0.122439261, + "downloadSeconds": 0.000063515 }, { - "connectionEstablishedSeconds": 0.065154661, - "uploadSeconds": 0.126671499, - "downloadSeconds": 0.000130963 + "connectionEstablishedSeconds": 0.065332846, + "uploadSeconds": 0.126995051, + "downloadSeconds": 0.000086659 }, { - "connectionEstablishedSeconds": 0.064592418, - "uploadSeconds": 0.125392005, - "downloadSeconds": 0.000078974 + "connectionEstablishedSeconds": 0.064835466, + "uploadSeconds": 0.126084756, + "downloadSeconds": 0.000102772 }, { - "connectionEstablishedSeconds": 0.066054486, - "uploadSeconds": 0.128804493, - "downloadSeconds": 0.000100537 + "connectionEstablishedSeconds": 0.064252537, + "uploadSeconds": 0.125076452, + "downloadSeconds": 0.00008998 }, { - "connectionEstablishedSeconds": 0.060591598, - "uploadSeconds": 0.117682519, - "downloadSeconds": 0.000076024 + "connectionEstablishedSeconds": 0.062896955, + "uploadSeconds": 0.122347549, + "downloadSeconds": 0.000088885 }, { - "connectionEstablishedSeconds": 0.06327672, - "uploadSeconds": 0.12307991, - "downloadSeconds": 0.00008693 + "connectionEstablishedSeconds": 0.062537671, + "uploadSeconds": 0.121699801, + "downloadSeconds": 0.000105042 }, { - "connectionEstablishedSeconds": 0.066036308, - "uploadSeconds": 0.128649426, - "downloadSeconds": 0.000094116 + "connectionEstablishedSeconds": 0.062560666, + "uploadSeconds": 0.121530528, + "downloadSeconds": 0.000083081 }, { - "connectionEstablishedSeconds": 0.064443428, - "uploadSeconds": 0.125458301, - "downloadSeconds": 0.000085163 + "connectionEstablishedSeconds": 0.06503231, + "uploadSeconds": 0.12662378, + "downloadSeconds": 0.000076862 }, { - "connectionEstablishedSeconds": 0.060612667, - "uploadSeconds": 0.117629487, - "downloadSeconds": 0.00008556 + "connectionEstablishedSeconds": 0.064646935, + "uploadSeconds": 0.125940369, + "downloadSeconds": 0.000048777 }, { - "connectionEstablishedSeconds": 0.062749736, - "uploadSeconds": 0.122072668, - "downloadSeconds": 0.00008688 + "connectionEstablishedSeconds": 0.066467573, + "uploadSeconds": 0.129119886, + "downloadSeconds": 0.000109769 }, { - "connectionEstablishedSeconds": 0.063998842, - "uploadSeconds": 0.124482878, - "downloadSeconds": 0.0000873 + "connectionEstablishedSeconds": 0.066872165, + "uploadSeconds": 0.130419701, + "downloadSeconds": 0.000087987 }, { - "connectionEstablishedSeconds": 0.06467811, - "uploadSeconds": 0.126032702, - "downloadSeconds": 0.000117909 + "connectionEstablishedSeconds": 0.066463517, + "uploadSeconds": 0.129347194, + "downloadSeconds": 0.000088743 }, { - "connectionEstablishedSeconds": 0.064432402, - "uploadSeconds": 0.125746167, - "downloadSeconds": 0.000087769 + "connectionEstablishedSeconds": 0.062683614, + "uploadSeconds": 0.121793655, + "downloadSeconds": 0.000101821 }, { - "connectionEstablishedSeconds": 0.061048609, - "uploadSeconds": 0.118620331, - "downloadSeconds": 0.000084944 + "connectionEstablishedSeconds": 0.064007545, + "uploadSeconds": 0.124402074, + "downloadSeconds": 0.000051133 }, { - "connectionEstablishedSeconds": 0.063234156, - "uploadSeconds": 0.122973143, - "downloadSeconds": 0.000062995 + "connectionEstablishedSeconds": 0.066345827, + "uploadSeconds": 0.129196438, + "downloadSeconds": 0.000087874 }, { - "connectionEstablishedSeconds": 0.063368215, - "uploadSeconds": 0.123410879, - "downloadSeconds": 0.000081405 + "connectionEstablishedSeconds": 0.061959997, + "uploadSeconds": 0.120403148, + "downloadSeconds": 0.000099978 }, { - "connectionEstablishedSeconds": 0.065971913, - "uploadSeconds": 0.128409181, - "downloadSeconds": 0.000086581 + "connectionEstablishedSeconds": 0.064957415, + "uploadSeconds": 0.126484389, + "downloadSeconds": 0.000086646 }, { - "connectionEstablishedSeconds": 0.064192182, - "uploadSeconds": 0.124766215, - "downloadSeconds": 0.000085311 + "connectionEstablishedSeconds": 0.064050398, + "uploadSeconds": 0.124593436, + "downloadSeconds": 0.000093129 }, { - "connectionEstablishedSeconds": 0.065122346, - "uploadSeconds": 0.126924617, - "downloadSeconds": 0.000077339 + "connectionEstablishedSeconds": 0.065479175, + "uploadSeconds": 0.127563336, + "downloadSeconds": 0.000091752 }, { - "connectionEstablishedSeconds": 0.063140431, - "uploadSeconds": 0.122964453, - "downloadSeconds": 0.000088041 + "connectionEstablishedSeconds": 0.064459311, + "uploadSeconds": 0.125632443, + "downloadSeconds": 0.000088312 }, { - "connectionEstablishedSeconds": 0.063312335, - "uploadSeconds": 0.123131605, - "downloadSeconds": 0.000088513 + "connectionEstablishedSeconds": 0.065418506, + "uploadSeconds": 0.127318706, + "downloadSeconds": 0.000099893 }, { - "connectionEstablishedSeconds": 0.065980778, - "uploadSeconds": 0.128555153, - "downloadSeconds": 0.000086702 + "connectionEstablishedSeconds": 0.06115891, + "uploadSeconds": 0.118787732, + "downloadSeconds": 0.000072519 }, { - "connectionEstablishedSeconds": 0.063307699, - "uploadSeconds": 0.123217326, - "downloadSeconds": 0.000100773 + "connectionEstablishedSeconds": 0.063789728, + "uploadSeconds": 0.124151792, + "downloadSeconds": 0.000061331 }, { - "connectionEstablishedSeconds": 0.064792526, - "uploadSeconds": 0.12793851, - "downloadSeconds": 0.000077 + "connectionEstablishedSeconds": 0.063565335, + "uploadSeconds": 0.123800509, + "downloadSeconds": 0.000066504 }, { - "connectionEstablishedSeconds": 0.065063158, - "uploadSeconds": 0.126801106, - "downloadSeconds": 0.000092032 + "connectionEstablishedSeconds": 0.065340559, + "uploadSeconds": 0.127107457, + "downloadSeconds": 0.000082091 }, { - "connectionEstablishedSeconds": 0.061136292, - "uploadSeconds": 0.118917211, - "downloadSeconds": 0.000087618 + "connectionEstablishedSeconds": 0.065274161, + "uploadSeconds": 0.126985152, + "downloadSeconds": 0.000098832 }, { - "connectionEstablishedSeconds": 0.062526539, - "uploadSeconds": 0.12154554, - "downloadSeconds": 0.000076073 + "connectionEstablishedSeconds": 0.061532374, + "uploadSeconds": 0.119412761, + "downloadSeconds": 0.000087572 }, { - "connectionEstablishedSeconds": 0.064467535, - "uploadSeconds": 0.125464429, - "downloadSeconds": 0.000053374 + "connectionEstablishedSeconds": 0.066015107, + "uploadSeconds": 0.12895258, + "downloadSeconds": 0.000107437 }, { - "connectionEstablishedSeconds": 0.066230482, - "uploadSeconds": 0.128881524, - "downloadSeconds": 0.000087982 + "connectionEstablishedSeconds": 0.063298652, + "uploadSeconds": 0.123194972, + "downloadSeconds": 0.000074348 }, { - "connectionEstablishedSeconds": 0.06440969, - "uploadSeconds": 0.125494731, - "downloadSeconds": 0.000083717 + "connectionEstablishedSeconds": 0.064874404, + "uploadSeconds": 0.126240455, + "downloadSeconds": 0.000102661 }, { - "connectionEstablishedSeconds": 0.063325895, - "uploadSeconds": 0.123178386, - "downloadSeconds": 0.000102126 + "connectionEstablishedSeconds": 0.060850312, + "uploadSeconds": 0.11825899, + "downloadSeconds": 0.000074344 }, { - "connectionEstablishedSeconds": 0.06475516, - "uploadSeconds": 0.126263552, - "downloadSeconds": 0.000074456 + "connectionEstablishedSeconds": 0.063836571, + "uploadSeconds": 0.124325405, + "downloadSeconds": 0.000058374 }, { - "connectionEstablishedSeconds": 0.062523354, - "uploadSeconds": 0.121687039, - "downloadSeconds": 0.000088698 + "connectionEstablishedSeconds": 0.062482892, + "uploadSeconds": 0.12198127, + "downloadSeconds": 0.000066463 }, { - "connectionEstablishedSeconds": 0.066140374, - "uploadSeconds": 0.12882998, - "downloadSeconds": 0.000080221 + "connectionEstablishedSeconds": 0.066011166, + "uploadSeconds": 0.128493564, + "downloadSeconds": 0.000086812 }, { - "connectionEstablishedSeconds": 0.06367331, - "uploadSeconds": 0.123789185, - "downloadSeconds": 0.000084024 + "connectionEstablishedSeconds": 0.065877087, + "uploadSeconds": 0.128252352, + "downloadSeconds": 0.000087883 }, { - "connectionEstablishedSeconds": 0.065822443, - "uploadSeconds": 0.128522425, - "downloadSeconds": 0.00007626 + "connectionEstablishedSeconds": 0.06625631, + "uploadSeconds": 0.128871405, + "downloadSeconds": 0.000075303 }, { - "connectionEstablishedSeconds": 0.066161448, - "uploadSeconds": 0.128911001, - "downloadSeconds": 0.000075998 + "connectionEstablishedSeconds": 0.062467673, + "uploadSeconds": 0.121489929, + "downloadSeconds": 0.000093727 }, { - "connectionEstablishedSeconds": 0.062993283, - "uploadSeconds": 0.122537444, - "downloadSeconds": 0.000079189 + "connectionEstablishedSeconds": 0.064259174, + "uploadSeconds": 0.125116047, + "downloadSeconds": 0.000130588 }, { - "connectionEstablishedSeconds": 0.065840144, - "uploadSeconds": 0.128380241, - "downloadSeconds": 0.000098752 + "connectionEstablishedSeconds": 0.064881658, + "uploadSeconds": 0.12634141, + "downloadSeconds": 0.000096298 }, { - "connectionEstablishedSeconds": 0.065179651, - "uploadSeconds": 0.127048149, - "downloadSeconds": 0.000078663 + "connectionEstablishedSeconds": 0.062591642, + "uploadSeconds": 0.121615007, + "downloadSeconds": 0.000052845 }, { - "connectionEstablishedSeconds": 0.063577878, - "uploadSeconds": 0.123962103, - "downloadSeconds": 0.000050825 + "connectionEstablishedSeconds": 0.062009462, + "uploadSeconds": 0.120569713, + "downloadSeconds": 0.000059144 }, { - "connectionEstablishedSeconds": 0.065114994, - "uploadSeconds": 0.126840587, - "downloadSeconds": 0.000060604 + "connectionEstablishedSeconds": 0.065772964, + "uploadSeconds": 0.128015637, + "downloadSeconds": 0.00005976 }, { - "connectionEstablishedSeconds": 0.06212057, - "uploadSeconds": 0.120834495, - "downloadSeconds": 0.000087046 + "connectionEstablishedSeconds": 0.065244623, + "uploadSeconds": 0.127597754, + "downloadSeconds": 0.000101338 }, { - "connectionEstablishedSeconds": 0.065030609, - "uploadSeconds": 0.126546622, - "downloadSeconds": 0.000081112 + "connectionEstablishedSeconds": 0.064528531, + "uploadSeconds": 0.125431869, + "downloadSeconds": 0.000102549 }, { - "connectionEstablishedSeconds": 0.06283852, - "uploadSeconds": 0.122414091, - "downloadSeconds": 0.000053942 + "connectionEstablishedSeconds": 0.064060708, + "uploadSeconds": 0.124861387, + "downloadSeconds": 0.000089563 }, { - "connectionEstablishedSeconds": 0.065302421, - "uploadSeconds": 0.127077082, - "downloadSeconds": 0.000081628 + "connectionEstablishedSeconds": 0.065100315, + "uploadSeconds": 0.126407417, + "downloadSeconds": 0.00009769 }, { - "connectionEstablishedSeconds": 0.066722523, - "uploadSeconds": 0.129948955, - "downloadSeconds": 0.000107012 + "connectionEstablishedSeconds": 0.063827269, + "uploadSeconds": 0.12418934, + "downloadSeconds": 0.000059017 }, { - "connectionEstablishedSeconds": 0.063075872, - "uploadSeconds": 0.122902967, - "downloadSeconds": 0.000128587 + "connectionEstablishedSeconds": 0.063091443, + "uploadSeconds": 0.122694617, + "downloadSeconds": 0.000088479 }, { - "connectionEstablishedSeconds": 0.06241058, - "uploadSeconds": 0.121339306, - "downloadSeconds": 0.000078697 + "connectionEstablishedSeconds": 0.063035134, + "uploadSeconds": 0.122636708, + "downloadSeconds": 0.000090614 }, { - "connectionEstablishedSeconds": 0.063973005, - "uploadSeconds": 0.124662567, - "downloadSeconds": 0.000076339 + "connectionEstablishedSeconds": 0.063237351, + "uploadSeconds": 0.123009684, + "downloadSeconds": 0.000085346 }, { - "connectionEstablishedSeconds": 0.064128175, - "uploadSeconds": 0.124891473, - "downloadSeconds": 0.000086363 + "connectionEstablishedSeconds": 0.065321546, + "uploadSeconds": 0.127202042, + "downloadSeconds": 0.0000863 }, { - "connectionEstablishedSeconds": 0.065478882, - "uploadSeconds": 0.127407412, - "downloadSeconds": 0.000063738 + "connectionEstablishedSeconds": 0.062293646, + "uploadSeconds": 0.121197102, + "downloadSeconds": 0.00008741 }, { - "connectionEstablishedSeconds": 0.066621562, - "uploadSeconds": 0.128820191, - "downloadSeconds": 0.000084262 + "connectionEstablishedSeconds": 0.06499849, + "uploadSeconds": 0.12637115, + "downloadSeconds": 0.000075902 }, { - "connectionEstablishedSeconds": 0.064804123, - "uploadSeconds": 0.125901878, - "downloadSeconds": 0.00008048 + "connectionEstablishedSeconds": 0.064614152, + "uploadSeconds": 0.125767329, + "downloadSeconds": 0.000102428 }, { - "connectionEstablishedSeconds": 0.067100174, - "uploadSeconds": 0.130916696, - "downloadSeconds": 0.000087192 + "connectionEstablishedSeconds": 0.064867917, + "uploadSeconds": 0.126189822, + "downloadSeconds": 0.000049127 }, { - "connectionEstablishedSeconds": 0.065284109, - "uploadSeconds": 0.127163699, - "downloadSeconds": 0.000062674 + "connectionEstablishedSeconds": 0.066343616, + "uploadSeconds": 0.129171678, + "downloadSeconds": 0.000109185 }, { - "connectionEstablishedSeconds": 0.06473319, - "uploadSeconds": 0.126026119, - "downloadSeconds": 0.000091165 + "connectionEstablishedSeconds": 0.063594419, + "uploadSeconds": 0.123729252, + "downloadSeconds": 0.000046197 }, { - "connectionEstablishedSeconds": 0.065570038, - "uploadSeconds": 0.127822192, - "downloadSeconds": 0.000060558 + "connectionEstablishedSeconds": 0.062504828, + "uploadSeconds": 0.121566267, + "downloadSeconds": 0.000054981 }, { - "connectionEstablishedSeconds": 0.065484686, - "uploadSeconds": 0.127695353, - "downloadSeconds": 0.000085598 + "connectionEstablishedSeconds": 0.064002572, + "uploadSeconds": 0.12462905, + "downloadSeconds": 0.000100446 }, { - "connectionEstablishedSeconds": 0.061210531, - "uploadSeconds": 0.118908659, - "downloadSeconds": 0.000078286 + "connectionEstablishedSeconds": 0.063602089, + "uploadSeconds": 0.123874281, + "downloadSeconds": 0.000048411 }, { - "connectionEstablishedSeconds": 0.063481257, - "uploadSeconds": 0.123340897, - "downloadSeconds": 0.000112374 + "connectionEstablishedSeconds": 0.062719554, + "uploadSeconds": 0.121941194, + "downloadSeconds": 0.000089545 }, { - "connectionEstablishedSeconds": 0.06411204, - "uploadSeconds": 0.124634666, - "downloadSeconds": 0.000082322 + "connectionEstablishedSeconds": 0.063417018, + "uploadSeconds": 0.123306077, + "downloadSeconds": 0.000098731 }, { - "connectionEstablishedSeconds": 0.062239547, - "uploadSeconds": 0.121146964, - "downloadSeconds": 0.000081609 + "connectionEstablishedSeconds": 0.064107384, + "uploadSeconds": 0.124691877, + "downloadSeconds": 0.000051022 }, { - "connectionEstablishedSeconds": 0.06241652, - "uploadSeconds": 0.121505384, - "downloadSeconds": 0.000084119 + "connectionEstablishedSeconds": 0.063100152, + "uploadSeconds": 0.122616935, + "downloadSeconds": 0.000099 }, { - "connectionEstablishedSeconds": 0.064479432, - "uploadSeconds": 0.125733454, - "downloadSeconds": 0.000068474 + "connectionEstablishedSeconds": 0.062746556, + "uploadSeconds": 0.121948401, + "downloadSeconds": 0.000095793 }, { - "connectionEstablishedSeconds": 0.066331924, - "uploadSeconds": 0.129337226, - "downloadSeconds": 0.000131293 + "connectionEstablishedSeconds": 0.06261075, + "uploadSeconds": 0.121898582, + "downloadSeconds": 0.000094156 }, { - "connectionEstablishedSeconds": 0.065104036, - "uploadSeconds": 0.126754178, - "downloadSeconds": 0.000091442 + "connectionEstablishedSeconds": 0.062358096, + "uploadSeconds": 0.121059397, + "downloadSeconds": 0.000085366 }, { - "connectionEstablishedSeconds": 0.0637304, - "uploadSeconds": 0.124140772, - "downloadSeconds": 0.000079004 + "connectionEstablishedSeconds": 0.063956063, + "uploadSeconds": 0.12442619, + "downloadSeconds": 0.000084146 }, { - "connectionEstablishedSeconds": 0.06541628, - "uploadSeconds": 0.127396082, - "downloadSeconds": 0.000058255 + "connectionEstablishedSeconds": 0.06177277, + "uploadSeconds": 0.11993679, + "downloadSeconds": 0.000051577 }, { - "connectionEstablishedSeconds": 0.064089724, - "uploadSeconds": 0.124570267, - "downloadSeconds": 0.000090973 + "connectionEstablishedSeconds": 0.065472055, + "uploadSeconds": 0.128132439, + "downloadSeconds": 0.000099309 }, { - "connectionEstablishedSeconds": 0.062512896, - "uploadSeconds": 0.121609734, - "downloadSeconds": 0.000085923 + "connectionEstablishedSeconds": 0.064005678, + "uploadSeconds": 0.124557276, + "downloadSeconds": 0.000071229 }, { - "connectionEstablishedSeconds": 0.067080325, - "uploadSeconds": 0.13072748, - "downloadSeconds": 0.000079027 + "connectionEstablishedSeconds": 0.06607158, + "uploadSeconds": 0.128709658, + "downloadSeconds": 0.000041673 }, { - "connectionEstablishedSeconds": 0.066950497, - "uploadSeconds": 0.130311531, - "downloadSeconds": 0.000118296 + "connectionEstablishedSeconds": 0.06447987, + "uploadSeconds": 0.125384308, + "downloadSeconds": 0.000068772 }, { - "connectionEstablishedSeconds": 0.063424248, - "uploadSeconds": 0.123647825, - "downloadSeconds": 0.000066672 + "connectionEstablishedSeconds": 0.063884104, + "uploadSeconds": 0.124527706, + "downloadSeconds": 0.000111449 }, { - "connectionEstablishedSeconds": 0.060437534, - "uploadSeconds": 0.117455929, - "downloadSeconds": 0.000091736 + "connectionEstablishedSeconds": 0.06461319, + "uploadSeconds": 0.125775606, + "downloadSeconds": 0.000085327 }, { - "connectionEstablishedSeconds": 0.063662903, - "uploadSeconds": 0.123920495, - "downloadSeconds": 0.000078148 + "connectionEstablishedSeconds": 0.064890847, + "uploadSeconds": 0.126204848, + "downloadSeconds": 0.000082451 }, { - "connectionEstablishedSeconds": 0.065905467, - "uploadSeconds": 0.128413462, - "downloadSeconds": 0.00005148 + "connectionEstablishedSeconds": 0.063228089, + "uploadSeconds": 0.122949404, + "downloadSeconds": 0.000146099 }, { - "connectionEstablishedSeconds": 0.062669667, - "uploadSeconds": 0.121915854, - "downloadSeconds": 0.000079754 + "connectionEstablishedSeconds": 0.061495799, + "uploadSeconds": 0.11947625, + "downloadSeconds": 0.000048393 }, { - "connectionEstablishedSeconds": 0.061357263, - "uploadSeconds": 0.11931048, - "downloadSeconds": 0.000117476 + "connectionEstablishedSeconds": 0.065020492, + "uploadSeconds": 0.12666505, + "downloadSeconds": 0.000089146 }, { - "connectionEstablishedSeconds": 0.064901746, - "uploadSeconds": 0.126331826, - "downloadSeconds": 0.000094664 + "connectionEstablishedSeconds": 0.065945204, + "uploadSeconds": 0.128484838, + "downloadSeconds": 0.000106159 }, { - "connectionEstablishedSeconds": 0.064194337, - "uploadSeconds": 0.125086379, - "downloadSeconds": 0.000082276 + "connectionEstablishedSeconds": 0.067762673, + "uploadSeconds": 0.132168213, + "downloadSeconds": 0.000107903 }, { - "connectionEstablishedSeconds": 0.065560723, - "uploadSeconds": 0.127569475, - "downloadSeconds": 0.000089714 + "connectionEstablishedSeconds": 0.065572532, + "uploadSeconds": 0.127516638, + "downloadSeconds": 0.000089004 }, { - "connectionEstablishedSeconds": 0.067019224, - "uploadSeconds": 0.130436691, - "downloadSeconds": 0.000090948 + "connectionEstablishedSeconds": 0.064566376, + "uploadSeconds": 0.125582624, + "downloadSeconds": 0.000092355 }, { - "connectionEstablishedSeconds": 0.06532367, - "uploadSeconds": 0.127207457, - "downloadSeconds": 0.000086598 + "connectionEstablishedSeconds": 0.065893006, + "uploadSeconds": 0.128263391, + "downloadSeconds": 0.000093783 }, { - "connectionEstablishedSeconds": 0.062311329, - "uploadSeconds": 0.11996796, - "downloadSeconds": 0.000085597 + "connectionEstablishedSeconds": 0.062806285, + "uploadSeconds": 0.122113968, + "downloadSeconds": 0.000065137 }, { - "connectionEstablishedSeconds": 0.064293896, - "uploadSeconds": 0.125071759, - "downloadSeconds": 0.000084569 + "connectionEstablishedSeconds": 0.06517263, + "uploadSeconds": 0.12702264, + "downloadSeconds": 0.000102609 }, { - "connectionEstablishedSeconds": 0.064947935, - "uploadSeconds": 0.126388251, - "downloadSeconds": 0.000062561 + "connectionEstablishedSeconds": 0.063970953, + "uploadSeconds": 0.12447171, + "downloadSeconds": 0.000084464 }, { - "connectionEstablishedSeconds": 0.062403254, - "uploadSeconds": 0.121419997, - "downloadSeconds": 0.000085121 + "connectionEstablishedSeconds": 0.063519187, + "uploadSeconds": 0.123752611, + "downloadSeconds": 0.000092866 }, { - "connectionEstablishedSeconds": 0.064554434, - "uploadSeconds": 0.125555427, - "downloadSeconds": 0.000084835 + "connectionEstablishedSeconds": 0.065027565, + "uploadSeconds": 0.126622237, + "downloadSeconds": 0.000106011 }, { - "connectionEstablishedSeconds": 0.065129867, - "uploadSeconds": 0.126757758, - "downloadSeconds": 0.000076839 + "connectionEstablishedSeconds": 0.065309519, + "uploadSeconds": 0.127363373, + "downloadSeconds": 0.000068864 }, { - "connectionEstablishedSeconds": 0.062349026, - "uploadSeconds": 0.121155662, - "downloadSeconds": 0.000101132 + "connectionEstablishedSeconds": 0.060630725, + "uploadSeconds": 0.117690014, + "downloadSeconds": 0.000111107 }, { - "connectionEstablishedSeconds": 0.06535092, - "uploadSeconds": 0.1273273, - "downloadSeconds": 0.000089002 + "connectionEstablishedSeconds": 0.065486703, + "uploadSeconds": 0.127455826, + "downloadSeconds": 0.000090808 }, { - "connectionEstablishedSeconds": 0.066094518, - "uploadSeconds": 0.128518422, - "downloadSeconds": 0.000126889 + "connectionEstablishedSeconds": 0.063195899, + "uploadSeconds": 0.123090512, + "downloadSeconds": 0.000056723 }, { - "connectionEstablishedSeconds": 0.064563922, - "uploadSeconds": 0.125643408, - "downloadSeconds": 0.000087266 + "connectionEstablishedSeconds": 0.06505979, + "uploadSeconds": 0.126614753, + "downloadSeconds": 0.000089765 }, { - "connectionEstablishedSeconds": 0.063078447, - "uploadSeconds": 0.122793638, - "downloadSeconds": 0.00005627 + "connectionEstablishedSeconds": 0.062354526, + "uploadSeconds": 0.12156822, + "downloadSeconds": 0.000086259 }, { - "connectionEstablishedSeconds": 0.063925994, - "uploadSeconds": 0.124353016, - "downloadSeconds": 0.000088933 + "connectionEstablishedSeconds": 0.062418939, + "uploadSeconds": 0.121418247, + "downloadSeconds": 0.000087486 }, { - "connectionEstablishedSeconds": 0.064054259, - "uploadSeconds": 0.124578191, - "downloadSeconds": 0.000083031 + "connectionEstablishedSeconds": 0.065193432, + "uploadSeconds": 0.126871858, + "downloadSeconds": 0.000092619 }, { - "connectionEstablishedSeconds": 0.060656395, - "uploadSeconds": 0.117757039, - "downloadSeconds": 0.000082353 + "connectionEstablishedSeconds": 0.063621014, + "uploadSeconds": 0.123766947, + "downloadSeconds": 0.000062353 } ], "implementation": "rust-libp2p", @@ -1996,504 +1996,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.063519078, - "uploadSeconds": 0.122990612, - "downloadSeconds": 0.000077929 + "connectionEstablishedSeconds": 0.06295453, + "uploadSeconds": 0.121854033, + "downloadSeconds": 0.000077444 }, { - "connectionEstablishedSeconds": 0.063665886, - "uploadSeconds": 0.123635194, - "downloadSeconds": 0.000071066 + "connectionEstablishedSeconds": 0.065123301, + "uploadSeconds": 0.126731822, + "downloadSeconds": 0.000083647 }, { - "connectionEstablishedSeconds": 0.062310276, - "uploadSeconds": 0.121258041, - "downloadSeconds": 0.000050745 + "connectionEstablishedSeconds": 0.064473496, + "uploadSeconds": 0.125295297, + "downloadSeconds": 0.000093787 }, { - "connectionEstablishedSeconds": 0.064168618, - "uploadSeconds": 0.124698939, - "downloadSeconds": 0.000062075 + "connectionEstablishedSeconds": 0.063632156, + "uploadSeconds": 0.123478645, + "downloadSeconds": 0.000072658 }, { - "connectionEstablishedSeconds": 0.061712537, - "uploadSeconds": 0.119761987, - "downloadSeconds": 0.000083662 + "connectionEstablishedSeconds": 0.062453992, + "uploadSeconds": 0.121532257, + "downloadSeconds": 0.000080757 }, { - "connectionEstablishedSeconds": 0.066369464, - "uploadSeconds": 0.12928018, - "downloadSeconds": 0.00007292 + "connectionEstablishedSeconds": 0.06282161, + "uploadSeconds": 0.122050909, + "downloadSeconds": 0.000062642 }, { - "connectionEstablishedSeconds": 0.06597437, - "uploadSeconds": 0.128489863, - "downloadSeconds": 0.000095037 + "connectionEstablishedSeconds": 0.064755094, + "uploadSeconds": 0.125864073, + "downloadSeconds": 0.000105545 }, { - "connectionEstablishedSeconds": 0.066852308, - "uploadSeconds": 0.130111008, - "downloadSeconds": 0.000050861 + "connectionEstablishedSeconds": 0.064105606, + "uploadSeconds": 0.124738407, + "downloadSeconds": 0.000045231 }, { - "connectionEstablishedSeconds": 0.065107393, - "uploadSeconds": 0.126825077, - "downloadSeconds": 0.000073899 + "connectionEstablishedSeconds": 0.064166122, + "uploadSeconds": 0.124608084, + "downloadSeconds": 0.000084333 }, { - "connectionEstablishedSeconds": 0.064804187, - "uploadSeconds": 0.126203664, - "downloadSeconds": 0.000094286 + "connectionEstablishedSeconds": 0.062669409, + "uploadSeconds": 0.121852983, + "downloadSeconds": 0.000086386 }, { - "connectionEstablishedSeconds": 0.062656878, - "uploadSeconds": 0.121770066, - "downloadSeconds": 0.000077609 + "connectionEstablishedSeconds": 0.064950734, + "uploadSeconds": 0.126331357, + "downloadSeconds": 0.000155847 }, { - "connectionEstablishedSeconds": 0.064139385, - "uploadSeconds": 0.125054034, - "downloadSeconds": 0.000063282 + "connectionEstablishedSeconds": 0.062348759, + "uploadSeconds": 0.121223049, + "downloadSeconds": 0.000101475 }, { - "connectionEstablishedSeconds": 0.065992239, - "uploadSeconds": 0.128643708, - "downloadSeconds": 0.000085683 + "connectionEstablishedSeconds": 0.061410545, + "uploadSeconds": 0.119357751, + "downloadSeconds": 0.00013631 }, { - "connectionEstablishedSeconds": 0.066444011, - "uploadSeconds": 0.129491444, - "downloadSeconds": 0.000053422 + "connectionEstablishedSeconds": 0.06538073, + "uploadSeconds": 0.127286516, + "downloadSeconds": 0.000084163 }, { - "connectionEstablishedSeconds": 0.065541288, - "uploadSeconds": 0.127670473, - "downloadSeconds": 0.000051367 + "connectionEstablishedSeconds": 0.065267895, + "uploadSeconds": 0.127053901, + "downloadSeconds": 0.00006416 }, { - "connectionEstablishedSeconds": 0.065511296, - "uploadSeconds": 0.127685358, - "downloadSeconds": 0.000081536 + "connectionEstablishedSeconds": 0.064411294, + "uploadSeconds": 0.124778899, + "downloadSeconds": 0.000074301 }, { - "connectionEstablishedSeconds": 0.0655056, - "uploadSeconds": 0.127548821, - "downloadSeconds": 0.000070778 + "connectionEstablishedSeconds": 0.063916077, + "uploadSeconds": 0.124393312, + "downloadSeconds": 0.000085843 }, { - "connectionEstablishedSeconds": 0.06506113, - "uploadSeconds": 0.126577011, - "downloadSeconds": 0.000049992 + "connectionEstablishedSeconds": 0.062081196, + "uploadSeconds": 0.120463049, + "downloadSeconds": 0.000081798 }, { - "connectionEstablishedSeconds": 0.065260381, - "uploadSeconds": 0.127215303, - "downloadSeconds": 0.00004709 + "connectionEstablishedSeconds": 0.064835647, + "uploadSeconds": 0.126418203, + "downloadSeconds": 0.000073351 }, { - "connectionEstablishedSeconds": 0.066048768, - "uploadSeconds": 0.128658866, - "downloadSeconds": 0.000049508 + "connectionEstablishedSeconds": 0.065654051, + "uploadSeconds": 0.127722734, + "downloadSeconds": 0.000105934 }, { - "connectionEstablishedSeconds": 0.063479391, - "uploadSeconds": 0.123462859, - "downloadSeconds": 0.000072927 + "connectionEstablishedSeconds": 0.063670175, + "uploadSeconds": 0.123943916, + "downloadSeconds": 0.000077717 }, { - "connectionEstablishedSeconds": 0.063377289, - "uploadSeconds": 0.123550736, - "downloadSeconds": 0.000084836 + "connectionEstablishedSeconds": 0.065474963, + "uploadSeconds": 0.127595228, + "downloadSeconds": 0.000055289 }, { - "connectionEstablishedSeconds": 0.065219667, - "uploadSeconds": 0.127035888, - "downloadSeconds": 0.000077057 + "connectionEstablishedSeconds": 0.064085463, + "uploadSeconds": 0.124794593, + "downloadSeconds": 0.00009378 }, { - "connectionEstablishedSeconds": 0.065376484, - "uploadSeconds": 0.127416787, - "downloadSeconds": 0.000080627 + "connectionEstablishedSeconds": 0.063967591, + "uploadSeconds": 0.124510889, + "downloadSeconds": 0.000077411 }, { - "connectionEstablishedSeconds": 0.060574272, - "uploadSeconds": 0.117808539, - "downloadSeconds": 0.00006683 + "connectionEstablishedSeconds": 0.062634672, + "uploadSeconds": 0.121821183, + "downloadSeconds": 0.000063691 }, { - "connectionEstablishedSeconds": 0.063172525, - "uploadSeconds": 0.1229846, - "downloadSeconds": 0.0000842 + "connectionEstablishedSeconds": 0.066294521, + "uploadSeconds": 0.129160959, + "downloadSeconds": 0.000054596 }, { - "connectionEstablishedSeconds": 0.063844106, - "uploadSeconds": 0.124200646, - "downloadSeconds": 0.000104537 + "connectionEstablishedSeconds": 0.064455007, + "uploadSeconds": 0.125418313, + "downloadSeconds": 0.00007373 }, { - "connectionEstablishedSeconds": 0.06151384, - "uploadSeconds": 0.119567831, - "downloadSeconds": 0.000050586 + "connectionEstablishedSeconds": 0.063959842, + "uploadSeconds": 0.1244949, + "downloadSeconds": 0.000073275 }, { - "connectionEstablishedSeconds": 0.065960291, - "uploadSeconds": 0.128569634, - "downloadSeconds": 0.000069633 + "connectionEstablishedSeconds": 0.066070252, + "uploadSeconds": 0.128792037, + "downloadSeconds": 0.00004618 }, { - "connectionEstablishedSeconds": 0.066044813, - "uploadSeconds": 0.128689496, - "downloadSeconds": 0.000055203 + "connectionEstablishedSeconds": 0.065236645, + "uploadSeconds": 0.127059524, + "downloadSeconds": 0.000050571 }, { - "connectionEstablishedSeconds": 0.064051288, - "uploadSeconds": 0.124576427, - "downloadSeconds": 0.000078675 + "connectionEstablishedSeconds": 0.06094768, + "uploadSeconds": 0.118601577, + "downloadSeconds": 0.000093052 }, { - "connectionEstablishedSeconds": 0.06467373, - "uploadSeconds": 0.125604057, - "downloadSeconds": 0.000051035 + "connectionEstablishedSeconds": 0.064582742, + "uploadSeconds": 0.12575478, + "downloadSeconds": 0.000082067 }, { - "connectionEstablishedSeconds": 0.064637567, - "uploadSeconds": 0.125751746, - "downloadSeconds": 0.000071124 + "connectionEstablishedSeconds": 0.065072501, + "uploadSeconds": 0.12662061, + "downloadSeconds": 0.000098341 }, { - "connectionEstablishedSeconds": 0.062621301, - "uploadSeconds": 0.121779078, - "downloadSeconds": 0.000046352 + "connectionEstablishedSeconds": 0.066624862, + "uploadSeconds": 0.129815026, + "downloadSeconds": 0.000081843 }, { - "connectionEstablishedSeconds": 0.065625727, - "uploadSeconds": 0.127832477, - "downloadSeconds": 0.000058497 + "connectionEstablishedSeconds": 0.065496903, + "uploadSeconds": 0.12779438, + "downloadSeconds": 0.000105756 }, { - "connectionEstablishedSeconds": 0.061680041, - "uploadSeconds": 0.119933855, - "downloadSeconds": 0.000048531 + "connectionEstablishedSeconds": 0.063587012, + "uploadSeconds": 0.123648704, + "downloadSeconds": 0.000073976 }, { - "connectionEstablishedSeconds": 0.066777416, - "uploadSeconds": 0.130039376, - "downloadSeconds": 0.000053951 + "connectionEstablishedSeconds": 0.065166457, + "uploadSeconds": 0.126912988, + "downloadSeconds": 0.000109828 }, { - "connectionEstablishedSeconds": 0.065635455, - "uploadSeconds": 0.127942878, - "downloadSeconds": 0.000067954 + "connectionEstablishedSeconds": 0.06025493, + "uploadSeconds": 0.117031953, + "downloadSeconds": 0.00008765 }, { - "connectionEstablishedSeconds": 0.064511421, - "uploadSeconds": 0.125934908, - "downloadSeconds": 0.000064877 + "connectionEstablishedSeconds": 0.065858394, + "uploadSeconds": 0.128498961, + "downloadSeconds": 0.000117106 }, { - "connectionEstablishedSeconds": 0.066366217, - "uploadSeconds": 0.129128895, - "downloadSeconds": 0.000048741 + "connectionEstablishedSeconds": 0.065079865, + "uploadSeconds": 0.126656494, + "downloadSeconds": 0.00007727 }, { - "connectionEstablishedSeconds": 0.064343476, - "uploadSeconds": 0.125404508, - "downloadSeconds": 0.000051655 + "connectionEstablishedSeconds": 0.0635718, + "uploadSeconds": 0.123726091, + "downloadSeconds": 0.000074642 }, { - "connectionEstablishedSeconds": 0.06482128, - "uploadSeconds": 0.126211526, - "downloadSeconds": 0.000069293 + "connectionEstablishedSeconds": 0.063487759, + "uploadSeconds": 0.123542277, + "downloadSeconds": 0.000057058 }, { - "connectionEstablishedSeconds": 0.064502871, - "uploadSeconds": 0.125611693, - "downloadSeconds": 0.000074536 + "connectionEstablishedSeconds": 0.061036628, + "uploadSeconds": 0.118754325, + "downloadSeconds": 0.000087272 }, { - "connectionEstablishedSeconds": 0.064757256, - "uploadSeconds": 0.126138884, - "downloadSeconds": 0.000095554 + "connectionEstablishedSeconds": 0.064088629, + "uploadSeconds": 0.124607971, + "downloadSeconds": 0.00005193 }, { - "connectionEstablishedSeconds": 0.062325722, - "uploadSeconds": 0.121371296, - "downloadSeconds": 0.000070108 + "connectionEstablishedSeconds": 0.063898205, + "uploadSeconds": 0.12449889, + "downloadSeconds": 0.00007393 }, { - "connectionEstablishedSeconds": 0.06502706, - "uploadSeconds": 0.126730306, - "downloadSeconds": 0.000097587 + "connectionEstablishedSeconds": 0.063112121, + "uploadSeconds": 0.122876487, + "downloadSeconds": 0.000082174 }, { - "connectionEstablishedSeconds": 0.063551583, - "uploadSeconds": 0.12373032, - "downloadSeconds": 0.000070006 + "connectionEstablishedSeconds": 0.061838182, + "uploadSeconds": 0.119878674, + "downloadSeconds": 0.000089398 }, { - "connectionEstablishedSeconds": 0.063523662, - "uploadSeconds": 0.123407521, - "downloadSeconds": 0.000095457 + "connectionEstablishedSeconds": 0.062248433, + "uploadSeconds": 0.121379219, + "downloadSeconds": 0.000044327 }, { - "connectionEstablishedSeconds": 0.062619221, - "uploadSeconds": 0.121918325, - "downloadSeconds": 0.000076268 + "connectionEstablishedSeconds": 0.064517291, + "uploadSeconds": 0.125572328, + "downloadSeconds": 0.000050306 }, { - "connectionEstablishedSeconds": 0.065951366, - "uploadSeconds": 0.128622794, - "downloadSeconds": 0.000081698 + "connectionEstablishedSeconds": 0.064898676, + "uploadSeconds": 0.126133518, + "downloadSeconds": 0.000068667 }, { - "connectionEstablishedSeconds": 0.064698136, - "uploadSeconds": 0.125988787, - "downloadSeconds": 0.000092626 + "connectionEstablishedSeconds": 0.062271554, + "uploadSeconds": 0.121187727, + "downloadSeconds": 0.00004803 }, { - "connectionEstablishedSeconds": 0.061843308, - "uploadSeconds": 0.119684107, - "downloadSeconds": 0.00008365 + "connectionEstablishedSeconds": 0.062338208, + "uploadSeconds": 0.120937059, + "downloadSeconds": 0.000050162 }, { - "connectionEstablishedSeconds": 0.063300197, - "uploadSeconds": 0.123280677, - "downloadSeconds": 0.000092735 + "connectionEstablishedSeconds": 0.06516715, + "uploadSeconds": 0.12658971, + "downloadSeconds": 0.000054901 }, { - "connectionEstablishedSeconds": 0.063834879, - "uploadSeconds": 0.124240871, - "downloadSeconds": 0.000085256 + "connectionEstablishedSeconds": 0.065651049, + "uploadSeconds": 0.127730491, + "downloadSeconds": 0.000072302 }, { - "connectionEstablishedSeconds": 0.062236693, - "uploadSeconds": 0.121076369, - "downloadSeconds": 0.000085015 + "connectionEstablishedSeconds": 0.065052451, + "uploadSeconds": 0.126855008, + "downloadSeconds": 0.000069138 }, { - "connectionEstablishedSeconds": 0.066130838, - "uploadSeconds": 0.12887493, - "downloadSeconds": 0.000086221 + "connectionEstablishedSeconds": 0.066387803, + "uploadSeconds": 0.129441088, + "downloadSeconds": 0.000046108 }, { - "connectionEstablishedSeconds": 0.06279212, - "uploadSeconds": 0.122060554, - "downloadSeconds": 0.000094097 + "connectionEstablishedSeconds": 0.064914776, + "uploadSeconds": 0.126462724, + "downloadSeconds": 0.000060604 }, { - "connectionEstablishedSeconds": 0.066620106, - "uploadSeconds": 0.129906214, - "downloadSeconds": 0.000074539 + "connectionEstablishedSeconds": 0.066325354, + "uploadSeconds": 0.128622135, + "downloadSeconds": 0.000089472 }, { - "connectionEstablishedSeconds": 0.065449705, - "uploadSeconds": 0.127120498, - "downloadSeconds": 0.000070276 + "connectionEstablishedSeconds": 0.064877193, + "uploadSeconds": 0.126410536, + "downloadSeconds": 0.000083253 }, { - "connectionEstablishedSeconds": 0.064987889, - "uploadSeconds": 0.126646536, - "downloadSeconds": 0.000097892 + "connectionEstablishedSeconds": 0.061518459, + "uploadSeconds": 0.11970554, + "downloadSeconds": 0.000098102 }, { - "connectionEstablishedSeconds": 0.065076398, - "uploadSeconds": 0.126771911, - "downloadSeconds": 0.000105138 + "connectionEstablishedSeconds": 0.066446584, + "uploadSeconds": 0.129426228, + "downloadSeconds": 0.000052881 }, { - "connectionEstablishedSeconds": 0.064257919, - "uploadSeconds": 0.124723095, - "downloadSeconds": 0.00009047 + "connectionEstablishedSeconds": 0.063347672, + "uploadSeconds": 0.123333115, + "downloadSeconds": 0.000051834 }, { - "connectionEstablishedSeconds": 0.060898769, - "uploadSeconds": 0.118227532, - "downloadSeconds": 0.000084797 + "connectionEstablishedSeconds": 0.062311469, + "uploadSeconds": 0.121232877, + "downloadSeconds": 0.000067479 }, { - "connectionEstablishedSeconds": 0.063728016, - "uploadSeconds": 0.123884811, - "downloadSeconds": 0.000080106 + "connectionEstablishedSeconds": 0.065580823, + "uploadSeconds": 0.127383534, + "downloadSeconds": 0.00008774 }, { - "connectionEstablishedSeconds": 0.064262811, - "uploadSeconds": 0.124954518, - "downloadSeconds": 0.000090781 + "connectionEstablishedSeconds": 0.062602698, + "uploadSeconds": 0.12176476, + "downloadSeconds": 0.000084162 }, { - "connectionEstablishedSeconds": 0.066008012, - "uploadSeconds": 0.128710865, - "downloadSeconds": 0.000055674 + "connectionEstablishedSeconds": 0.064679694, + "uploadSeconds": 0.125792176, + "downloadSeconds": 0.000049092 }, { - "connectionEstablishedSeconds": 0.065924989, - "uploadSeconds": 0.128442804, - "downloadSeconds": 0.0000892 + "connectionEstablishedSeconds": 0.066119217, + "uploadSeconds": 0.128911034, + "downloadSeconds": 0.000052582 }, { - "connectionEstablishedSeconds": 0.064246623, - "uploadSeconds": 0.125166351, - "downloadSeconds": 0.000045633 + "connectionEstablishedSeconds": 0.064028513, + "uploadSeconds": 0.12462816, + "downloadSeconds": 0.000062379 }, { - "connectionEstablishedSeconds": 0.065089089, - "uploadSeconds": 0.126801117, - "downloadSeconds": 0.000051485 + "connectionEstablishedSeconds": 0.066205814, + "uploadSeconds": 0.128883233, + "downloadSeconds": 0.000052233 }, { - "connectionEstablishedSeconds": 0.064307456, - "uploadSeconds": 0.125302103, - "downloadSeconds": 0.000052845 + "connectionEstablishedSeconds": 0.062012424, + "uploadSeconds": 0.120882738, + "downloadSeconds": 0.00005704 }, { - "connectionEstablishedSeconds": 0.064868441, - "uploadSeconds": 0.126266168, - "downloadSeconds": 0.000126958 + "connectionEstablishedSeconds": 0.064255919, + "uploadSeconds": 0.124959707, + "downloadSeconds": 0.000091863 }, { - "connectionEstablishedSeconds": 0.066007201, - "uploadSeconds": 0.128569868, - "downloadSeconds": 0.000095506 + "connectionEstablishedSeconds": 0.063693044, + "uploadSeconds": 0.123805374, + "downloadSeconds": 0.000094304 }, { - "connectionEstablishedSeconds": 0.063274614, - "uploadSeconds": 0.122752513, - "downloadSeconds": 0.00005209 + "connectionEstablishedSeconds": 0.064984709, + "uploadSeconds": 0.126642484, + "downloadSeconds": 0.000047402 }, { - "connectionEstablishedSeconds": 0.064596218, - "uploadSeconds": 0.125676799, - "downloadSeconds": 0.000055948 + "connectionEstablishedSeconds": 0.061120801, + "uploadSeconds": 0.11917866, + "downloadSeconds": 0.000070103 }, { - "connectionEstablishedSeconds": 0.066233576, - "uploadSeconds": 0.129240386, - "downloadSeconds": 0.000069711 + "connectionEstablishedSeconds": 0.063592651, + "uploadSeconds": 0.123675225, + "downloadSeconds": 0.000061204 }, { - "connectionEstablishedSeconds": 0.062692077, - "uploadSeconds": 0.121887906, - "downloadSeconds": 0.000096332 + "connectionEstablishedSeconds": 0.062592166, + "uploadSeconds": 0.121571849, + "downloadSeconds": 0.000071449 }, { - "connectionEstablishedSeconds": 0.066084061, - "uploadSeconds": 0.128741924, - "downloadSeconds": 0.000060631 + "connectionEstablishedSeconds": 0.065114172, + "uploadSeconds": 0.126766224, + "downloadSeconds": 0.000060301 }, { - "connectionEstablishedSeconds": 0.063618972, - "uploadSeconds": 0.123940924, - "downloadSeconds": 0.000079125 + "connectionEstablishedSeconds": 0.063331652, + "uploadSeconds": 0.122993699, + "downloadSeconds": 0.000085199 }, { - "connectionEstablishedSeconds": 0.064626859, - "uploadSeconds": 0.125812036, - "downloadSeconds": 0.00006151 + "connectionEstablishedSeconds": 0.064596237, + "uploadSeconds": 0.125709824, + "downloadSeconds": 0.000080473 }, { - "connectionEstablishedSeconds": 0.064685468, - "uploadSeconds": 0.125981711, - "downloadSeconds": 0.000079766 + "connectionEstablishedSeconds": 0.066972879, + "uploadSeconds": 0.130634142, + "downloadSeconds": 0.00004697 }, { - "connectionEstablishedSeconds": 0.066351685, - "uploadSeconds": 0.129293632, - "downloadSeconds": 0.000057879 + "connectionEstablishedSeconds": 0.062545682, + "uploadSeconds": 0.121463022, + "downloadSeconds": 0.000060858 }, { - "connectionEstablishedSeconds": 0.066941968, - "uploadSeconds": 0.13060837, - "downloadSeconds": 0.000091937 + "connectionEstablishedSeconds": 0.065678017, + "uploadSeconds": 0.128114478, + "downloadSeconds": 0.000054247 }, { - "connectionEstablishedSeconds": 0.063342774, - "uploadSeconds": 0.123086611, - "downloadSeconds": 0.000090204 + "connectionEstablishedSeconds": 0.066031352, + "uploadSeconds": 0.128668745, + "downloadSeconds": 0.000046151 }, { - "connectionEstablishedSeconds": 0.061606028, - "uploadSeconds": 0.11983355, - "downloadSeconds": 0.000098157 + "connectionEstablishedSeconds": 0.065528277, + "uploadSeconds": 0.127732124, + "downloadSeconds": 0.000050967 }, { - "connectionEstablishedSeconds": 0.06640212, - "uploadSeconds": 0.129430666, - "downloadSeconds": 0.000103247 + "connectionEstablishedSeconds": 0.061144288, + "uploadSeconds": 0.118864606, + "downloadSeconds": 0.000055298 }, { - "connectionEstablishedSeconds": 0.061717249, - "uploadSeconds": 0.120163634, - "downloadSeconds": 0.000067477 + "connectionEstablishedSeconds": 0.065305185, + "uploadSeconds": 0.127158917, + "downloadSeconds": 0.000050949 }, { - "connectionEstablishedSeconds": 0.062332833, - "uploadSeconds": 0.121309199, - "downloadSeconds": 0.000067077 + "connectionEstablishedSeconds": 0.065225217, + "uploadSeconds": 0.126952291, + "downloadSeconds": 0.000044136 }, { - "connectionEstablishedSeconds": 0.066746587, - "uploadSeconds": 0.130068658, - "downloadSeconds": 0.000142669 + "connectionEstablishedSeconds": 0.064853145, + "uploadSeconds": 0.126412428, + "downloadSeconds": 0.000097659 }, { - "connectionEstablishedSeconds": 0.065263106, - "uploadSeconds": 0.127183749, - "downloadSeconds": 0.000086632 + "connectionEstablishedSeconds": 0.065478193, + "uploadSeconds": 0.127374565, + "downloadSeconds": 0.000062365 }, { - "connectionEstablishedSeconds": 0.064773722, - "uploadSeconds": 0.126194066, - "downloadSeconds": 0.000082269 + "connectionEstablishedSeconds": 0.05995481, + "uploadSeconds": 0.116531334, + "downloadSeconds": 0.000078307 }, { - "connectionEstablishedSeconds": 0.063074204, - "uploadSeconds": 0.122612869, - "downloadSeconds": 0.000050804 + "connectionEstablishedSeconds": 0.066140712, + "uploadSeconds": 0.128805388, + "downloadSeconds": 0.000049685 }, { - "connectionEstablishedSeconds": 0.065106436, - "uploadSeconds": 0.126604141, - "downloadSeconds": 0.00004978 + "connectionEstablishedSeconds": 0.064286525, + "uploadSeconds": 0.125063487, + "downloadSeconds": 0.000092709 }, { - "connectionEstablishedSeconds": 0.061870206, - "uploadSeconds": 0.120408102, - "downloadSeconds": 0.000076583 + "connectionEstablishedSeconds": 0.065156327, + "uploadSeconds": 0.127035923, + "downloadSeconds": 0.00005645 }, { - "connectionEstablishedSeconds": 0.065547347, - "uploadSeconds": 0.127744669, - "downloadSeconds": 0.000083739 + "connectionEstablishedSeconds": 0.062462454, + "uploadSeconds": 0.121519512, + "downloadSeconds": 0.000090082 }, { - "connectionEstablishedSeconds": 0.062585839, - "uploadSeconds": 0.121799329, - "downloadSeconds": 0.000049104 + "connectionEstablishedSeconds": 0.063023488, + "uploadSeconds": 0.122460757, + "downloadSeconds": 0.000049759 }, { - "connectionEstablishedSeconds": 0.065295289, - "uploadSeconds": 0.127162027, - "downloadSeconds": 0.000100753 + "connectionEstablishedSeconds": 0.065384733, + "uploadSeconds": 0.127145941, + "downloadSeconds": 0.000078884 }, { - "connectionEstablishedSeconds": 0.064643425, - "uploadSeconds": 0.125866769, - "downloadSeconds": 0.000128764 + "connectionEstablishedSeconds": 0.064855409, + "uploadSeconds": 0.12630613, + "downloadSeconds": 0.0000832 }, { - "connectionEstablishedSeconds": 0.065628334, - "uploadSeconds": 0.127949056, - "downloadSeconds": 0.000085941 + "connectionEstablishedSeconds": 0.065364575, + "uploadSeconds": 0.127268953, + "downloadSeconds": 0.000079745 }, { - "connectionEstablishedSeconds": 0.063687324, - "uploadSeconds": 0.124031975, - "downloadSeconds": 0.000053998 + "connectionEstablishedSeconds": 0.066317931, + "uploadSeconds": 0.129352868, + "downloadSeconds": 0.000089251 }, { - "connectionEstablishedSeconds": 0.065033196, - "uploadSeconds": 0.126591394, - "downloadSeconds": 0.000090445 + "connectionEstablishedSeconds": 0.061175776, + "uploadSeconds": 0.118754982, + "downloadSeconds": 0.00005179 } ], "implementation": "rust-libp2p-quinn", @@ -2504,503 +2504,503 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182526996, - "downloadSeconds": 0.000028081 + "uploadSeconds": 0.191286116, + "downloadSeconds": 0.000030153 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190504604, - "downloadSeconds": 0.000030004 + "uploadSeconds": 0.183529055, + "downloadSeconds": 0.000025756 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193522642, - "downloadSeconds": 0.000033063 + "uploadSeconds": 0.184410375, + "downloadSeconds": 0.000040311 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188083933, - "downloadSeconds": 0.000022961 + "uploadSeconds": 0.190450232, + "downloadSeconds": 0.000028102 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188448323, - "downloadSeconds": 0.00002412 + "uploadSeconds": 0.187048479, + "downloadSeconds": 0.000020757 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.196740918, - "downloadSeconds": 0.000026258 + "uploadSeconds": 0.190285011, + "downloadSeconds": 0.000024856 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18308572, - "downloadSeconds": 0.000028927 + "uploadSeconds": 0.178674815, + "downloadSeconds": 0.000024766 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185745296, - "downloadSeconds": 0.000024131 + "uploadSeconds": 0.189727631, + "downloadSeconds": 0.000021712 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18907954, - "downloadSeconds": 0.00001991 + "uploadSeconds": 0.18619776, + "downloadSeconds": 0.000034857 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185833055, - "downloadSeconds": 0.000023142 + "uploadSeconds": 0.193181301, + "downloadSeconds": 0.000024575 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189649454, - "downloadSeconds": 0.000024058 + "uploadSeconds": 0.189751793, + "downloadSeconds": 0.000025637 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191497443, - "downloadSeconds": 0.000021405 + "uploadSeconds": 0.183150367, + "downloadSeconds": 0.000024492 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189316359, - "downloadSeconds": 0.000023068 + "uploadSeconds": 0.188043639, + "downloadSeconds": 0.000024447 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190140897, - "downloadSeconds": 0.000022992 + "uploadSeconds": 0.189577218, + "downloadSeconds": 0.000018189 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195869519, - "downloadSeconds": 0.000029358 + "uploadSeconds": 0.188882264, + "downloadSeconds": 0.000021261 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189150223, - "downloadSeconds": 0.000024037 + "uploadSeconds": 0.186325009, + "downloadSeconds": 0.000024389 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192729951, - "downloadSeconds": 0.000022296 + "uploadSeconds": 0.181536797, + "downloadSeconds": 0.000033015 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193891543, - "downloadSeconds": 0.000024125 + "uploadSeconds": 0.193188111, + "downloadSeconds": 0.000025382 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188204969, - "downloadSeconds": 0.000027787 + "uploadSeconds": 0.185746185, + "downloadSeconds": 0.000023011 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180378732, - "downloadSeconds": 0.000022672 + "uploadSeconds": 0.182559536, + "downloadSeconds": 0.000025647 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.177582096, - "downloadSeconds": 0.000022659 + "uploadSeconds": 0.186054822, + "downloadSeconds": 0.000021982 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193350469, - "downloadSeconds": 0.000020163 + "uploadSeconds": 0.187466153, + "downloadSeconds": 0.000024312 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185767481, - "downloadSeconds": 0.000026842 + "uploadSeconds": 0.184809142, + "downloadSeconds": 0.000022947 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193804953, - "downloadSeconds": 0.000020949 + "uploadSeconds": 0.191330569, + "downloadSeconds": 0.000028027 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18438266, - "downloadSeconds": 0.000023656 + "uploadSeconds": 0.189069566, + "downloadSeconds": 0.000024548 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183008634, - "downloadSeconds": 0.000023277 + "uploadSeconds": 0.18767281, + "downloadSeconds": 0.000021507 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191210666, - "downloadSeconds": 0.000024137 + "uploadSeconds": 0.18593129, + "downloadSeconds": 0.000023896 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186482695, - "downloadSeconds": 0.000022633 + "uploadSeconds": 0.181014203, + "downloadSeconds": 0.000023811 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189309966, - "downloadSeconds": 0.000023136 + "uploadSeconds": 0.188932328, + "downloadSeconds": 0.000025813 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191818133, - "downloadSeconds": 0.000021278 + "uploadSeconds": 0.184957641, + "downloadSeconds": 0.000023322 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189251616, - "downloadSeconds": 0.000021964 + "uploadSeconds": 0.180815006, + "downloadSeconds": 0.00003453 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181809604, - "downloadSeconds": 0.000028936 + "uploadSeconds": 0.190052471, + "downloadSeconds": 0.00002195 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18660164, - "downloadSeconds": 0.000024492 + "uploadSeconds": 0.193640405, + "downloadSeconds": 0.000020421 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189789357, - "downloadSeconds": 0.000021157 + "uploadSeconds": 0.190830146, + "downloadSeconds": 0.000022273 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184932541, - "downloadSeconds": 0.000023631 + "uploadSeconds": 0.188083369, + "downloadSeconds": 0.00002138 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186822751, - "downloadSeconds": 0.000020386 + "uploadSeconds": 0.185840961, + "downloadSeconds": 0.000021979 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.1918446, - "downloadSeconds": 0.000025974 + "uploadSeconds": 0.193488566, + "downloadSeconds": 0.000024822 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193359663, - "downloadSeconds": 0.000023906 + "uploadSeconds": 0.178135133, + "downloadSeconds": 0.000024564 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180623778, - "downloadSeconds": 0.000022066 + "uploadSeconds": 0.187243776, + "downloadSeconds": 0.00002429 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194065624, - "downloadSeconds": 0.000024338 + "uploadSeconds": 0.186128, + "downloadSeconds": 0.00002176 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186297434, - "downloadSeconds": 0.000024067 + "uploadSeconds": 0.187437127, + "downloadSeconds": 0.000024223 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193217938, - "downloadSeconds": 0.00003172 + "uploadSeconds": 0.193260755, + "downloadSeconds": 0.000021753 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189385811, - "downloadSeconds": 0.000030405 + "uploadSeconds": 0.17961362, + "downloadSeconds": 0.000030347 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187927176, - "downloadSeconds": 0.000029698 + "uploadSeconds": 0.185389065, + "downloadSeconds": 0.00002451 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188805384, - "downloadSeconds": 0.000034208 + "uploadSeconds": 0.189083595, + "downloadSeconds": 0.000023793 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189654743, - "downloadSeconds": 0.000024488 + "uploadSeconds": 0.188867791, + "downloadSeconds": 0.000024162 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191317788, - "downloadSeconds": 0.000030165 + "uploadSeconds": 0.182410744, + "downloadSeconds": 0.000021144 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.177344546, - "downloadSeconds": 0.000022917 + "uploadSeconds": 0.19338541, + "downloadSeconds": 0.000024628 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185253469, - "downloadSeconds": 0.000021784 + "uploadSeconds": 0.180148621, + "downloadSeconds": 0.000023234 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194740613, - "downloadSeconds": 0.000024717 + "uploadSeconds": 0.183482025, + "downloadSeconds": 0.00002359 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189147404, - "downloadSeconds": 0.000030423 + "uploadSeconds": 0.192011607, + "downloadSeconds": 0.000019914 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194014909, - "downloadSeconds": 0.000020974 + "uploadSeconds": 0.193289196, + "downloadSeconds": 0.000024513 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181861578, - "downloadSeconds": 0.00002424 + "uploadSeconds": 0.185263194, + "downloadSeconds": 0.000028503 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192169323, - "downloadSeconds": 0.000024615 + "uploadSeconds": 0.186621738, + "downloadSeconds": 0.000024194 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188696576, - "downloadSeconds": 0.000021796 + "uploadSeconds": 0.192898111, + "downloadSeconds": 0.000024166 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179715562, - "downloadSeconds": 0.000024024 + "uploadSeconds": 0.187423423, + "downloadSeconds": 0.000023964 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187766484, - "downloadSeconds": 0.000020671 + "uploadSeconds": 0.191429869, + "downloadSeconds": 0.000021317 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191328207, - "downloadSeconds": 0.000021573 + "uploadSeconds": 0.187678237, + "downloadSeconds": 0.000021642 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190159105, - "downloadSeconds": 0.000025215 + "uploadSeconds": 0.187827296, + "downloadSeconds": 0.000021888 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.196031344, - "downloadSeconds": 0.000021368 + "uploadSeconds": 0.186599878, + "downloadSeconds": 0.00002446 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188587152, - "downloadSeconds": 0.000029023 + "uploadSeconds": 0.190005609, + "downloadSeconds": 0.000022756 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182829839, - "downloadSeconds": 0.000021626 + "uploadSeconds": 0.189002327, + "downloadSeconds": 0.000028052 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183022527, - "downloadSeconds": 0.000029741 + "uploadSeconds": 0.191248774, + "downloadSeconds": 0.000021291 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191183223, - "downloadSeconds": 0.000023445 + "uploadSeconds": 0.182345961, + "downloadSeconds": 0.000018505 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195757349, - "downloadSeconds": 0.000030259 + "uploadSeconds": 0.178343946, + "downloadSeconds": 0.000024258 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188233925, - "downloadSeconds": 0.000032255 + "uploadSeconds": 0.1796409, + "downloadSeconds": 0.000020622 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184361716, - "downloadSeconds": 0.000028005 + "uploadSeconds": 0.191527728, + "downloadSeconds": 0.000023144 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186432378, - "downloadSeconds": 0.000019995 + "uploadSeconds": 0.187086772, + "downloadSeconds": 0.000024889 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188335389, - "downloadSeconds": 0.000024858 + "uploadSeconds": 0.18110695, + "downloadSeconds": 0.000023585 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191171584, - "downloadSeconds": 0.000021449 + "uploadSeconds": 0.187533438, + "downloadSeconds": 0.000022629 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193595616, - "downloadSeconds": 0.000024224 + "uploadSeconds": 0.187532688, + "downloadSeconds": 0.000029573 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183355964, - "downloadSeconds": 0.000020573 + "uploadSeconds": 0.191096905, + "downloadSeconds": 0.000025604 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193506624, - "downloadSeconds": 0.000024937 + "uploadSeconds": 0.194325541, + "downloadSeconds": 0.000021101 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184619421, - "downloadSeconds": 0.000021662 + "uploadSeconds": 0.189083303, + "downloadSeconds": 0.000021147 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182013165, - "downloadSeconds": 0.000023987 + "uploadSeconds": 0.193745985, + "downloadSeconds": 0.000024439 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179699999, - "downloadSeconds": 0.000020907 + "uploadSeconds": 0.190582174, + "downloadSeconds": 0.000017468 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191663979, - "downloadSeconds": 0.000024939 + "uploadSeconds": 0.192054523, + "downloadSeconds": 0.0000221 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186674829, - "downloadSeconds": 0.000024025 + "uploadSeconds": 0.183943085, + "downloadSeconds": 0.000024812 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18304345, - "downloadSeconds": 0.000021069 + "uploadSeconds": 0.17475635, + "downloadSeconds": 0.000024018 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194300055, - "downloadSeconds": 0.000026738 + "uploadSeconds": 0.184440358, + "downloadSeconds": 0.000021449 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184448741, - "downloadSeconds": 0.000032237 + "uploadSeconds": 0.18631819, + "downloadSeconds": 0.000028734 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193911983, - "downloadSeconds": 0.000022306 + "uploadSeconds": 0.181409699, + "downloadSeconds": 0.00002564 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187826647, - "downloadSeconds": 0.000024787 + "uploadSeconds": 0.179933668, + "downloadSeconds": 0.000024125 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188415711, - "downloadSeconds": 0.000022936 + "uploadSeconds": 0.185195736, + "downloadSeconds": 0.000022891 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189168992, - "downloadSeconds": 0.000023928 + "uploadSeconds": 0.188159214, + "downloadSeconds": 0.00002612 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193147287, - "downloadSeconds": 0.000028749 + "uploadSeconds": 0.191314415, + "downloadSeconds": 0.000021095 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187182336, - "downloadSeconds": 0.000021227 + "uploadSeconds": 0.183011343, + "downloadSeconds": 0.000024533 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190808467, - "downloadSeconds": 0.000021406 + "uploadSeconds": 0.188848175, + "downloadSeconds": 0.0000209 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186257853, - "downloadSeconds": 0.000029142 + "uploadSeconds": 0.195977983, + "downloadSeconds": 0.000024503 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192046336, - "downloadSeconds": 0.000020604 + "uploadSeconds": 0.18291316, + "downloadSeconds": 0.000020749 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189009156, - "downloadSeconds": 0.000024835 + "uploadSeconds": 0.185713857, + "downloadSeconds": 0.000023253 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188875391, - "downloadSeconds": 0.000021557 + "uploadSeconds": 0.189154788, + "downloadSeconds": 0.000024316 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187455696, - "downloadSeconds": 0.000032943 + "uploadSeconds": 0.185723779, + "downloadSeconds": 0.000022027 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188796385, - "downloadSeconds": 0.00002132 + "uploadSeconds": 0.186181575, + "downloadSeconds": 0.000020345 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189167855, - "downloadSeconds": 0.000023001 + "uploadSeconds": 0.183142393, + "downloadSeconds": 0.000021052 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192158684, - "downloadSeconds": 0.000023581 + "uploadSeconds": 0.184955497, + "downloadSeconds": 0.000020846 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182266809, - "downloadSeconds": 0.00002149 + "uploadSeconds": 0.189237981, + "downloadSeconds": 0.000027586 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184985228, - "downloadSeconds": 0.000020968 + "uploadSeconds": 0.19088234, + "downloadSeconds": 0.000023083 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191639946, - "downloadSeconds": 0.000031242 + "uploadSeconds": 0.181319211, + "downloadSeconds": 0.000023255 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181595298, - "downloadSeconds": 0.000022569 + "uploadSeconds": 0.184472225, + "downloadSeconds": 0.000034077 } ], "implementation": "https", @@ -3010,504 +3010,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.249245346, - "uploadSeconds": 0.00000296, - "downloadSeconds": 0.121561847 + "connectionEstablishedSeconds": 0.187265924, + "uploadSeconds": 0.000003363, + "downloadSeconds": 0.062154144 }, { - "connectionEstablishedSeconds": 0.255001237, - "uploadSeconds": 0.000003556, - "downloadSeconds": 0.125212686 + "connectionEstablishedSeconds": 0.189557176, + "uploadSeconds": 0.000006487, + "downloadSeconds": 0.062203288 }, { - "connectionEstablishedSeconds": 0.255493913, - "uploadSeconds": 0.000003514, - "downloadSeconds": 0.063117853 + "connectionEstablishedSeconds": 0.183024286, + "uploadSeconds": 0.000003387, + "downloadSeconds": 0.060029314 }, { - "connectionEstablishedSeconds": 0.262519463, - "uploadSeconds": 0.000003092, - "downloadSeconds": 0.129294372 + "connectionEstablishedSeconds": 0.196939115, + "uploadSeconds": 0.000003342, + "downloadSeconds": 0.064670246 }, { - "connectionEstablishedSeconds": 0.239658021, - "uploadSeconds": 0.000003293, - "downloadSeconds": 0.11715543 + "connectionEstablishedSeconds": 0.187845645, + "uploadSeconds": 0.000003119, + "downloadSeconds": 0.061806415 }, { - "connectionEstablishedSeconds": 0.263939584, - "uploadSeconds": 0.000003054, - "downloadSeconds": 0.064954231 + "connectionEstablishedSeconds": 0.183480618, + "uploadSeconds": 0.000004217, + "downloadSeconds": 0.060140849 }, { - "connectionEstablishedSeconds": 0.251204172, - "uploadSeconds": 0.000003244, - "downloadSeconds": 0.062123993 + "connectionEstablishedSeconds": 0.194091737, + "uploadSeconds": 0.000003398, + "downloadSeconds": 0.063641913 }, { - "connectionEstablishedSeconds": 0.259751512, - "uploadSeconds": 0.000004006, - "downloadSeconds": 0.127990905 + "connectionEstablishedSeconds": 0.192041679, + "uploadSeconds": 0.000003277, + "downloadSeconds": 0.063566373 }, { - "connectionEstablishedSeconds": 0.237142565, - "uploadSeconds": 0.000003207, - "downloadSeconds": 0.058597937 + "connectionEstablishedSeconds": 0.191750568, + "uploadSeconds": 0.000004094, + "downloadSeconds": 0.06306795 }, { - "connectionEstablishedSeconds": 0.248714979, - "uploadSeconds": 0.000003286, - "downloadSeconds": 0.06106676 + "connectionEstablishedSeconds": 0.196661034, + "uploadSeconds": 0.000003638, + "downloadSeconds": 0.064597793 }, { - "connectionEstablishedSeconds": 0.252705849, - "uploadSeconds": 0.00000327, - "downloadSeconds": 0.124599556 + "connectionEstablishedSeconds": 0.192399151, + "uploadSeconds": 0.000003287, + "downloadSeconds": 0.063717409 }, { - "connectionEstablishedSeconds": 0.246962278, - "uploadSeconds": 0.000003538, - "downloadSeconds": 0.121470347 + "connectionEstablishedSeconds": 0.194512523, + "uploadSeconds": 0.000003305, + "downloadSeconds": 0.063794327 }, { - "connectionEstablishedSeconds": 0.253085008, - "uploadSeconds": 0.000003344, - "downloadSeconds": 0.062264437 + "connectionEstablishedSeconds": 0.190643887, + "uploadSeconds": 0.000003297, + "downloadSeconds": 0.063321458 }, { - "connectionEstablishedSeconds": 0.245111484, - "uploadSeconds": 0.000002724, - "downloadSeconds": 0.120523806 + "connectionEstablishedSeconds": 0.191925632, + "uploadSeconds": 0.000003153, + "downloadSeconds": 0.062927302 }, { - "connectionEstablishedSeconds": 0.242808553, - "uploadSeconds": 0.00000674, - "downloadSeconds": 0.061028522 + "connectionEstablishedSeconds": 0.193221353, + "uploadSeconds": 0.000003628, + "downloadSeconds": 0.063378233 }, { - "connectionEstablishedSeconds": 0.247597565, - "uploadSeconds": 0.000003013, - "downloadSeconds": 0.121020036 + "connectionEstablishedSeconds": 0.191420507, + "uploadSeconds": 0.000003297, + "downloadSeconds": 0.062854803 }, { - "connectionEstablishedSeconds": 0.250210602, - "uploadSeconds": 0.000003549, - "downloadSeconds": 0.123252958 + "connectionEstablishedSeconds": 0.177621185, + "uploadSeconds": 0.000004143, + "downloadSeconds": 0.058236693 }, { - "connectionEstablishedSeconds": 0.26000532, - "uploadSeconds": 0.000002986, - "downloadSeconds": 0.127196999 + "connectionEstablishedSeconds": 0.186026405, + "uploadSeconds": 0.00000371, + "downloadSeconds": 0.061038859 }, { - "connectionEstablishedSeconds": 0.255290376, - "uploadSeconds": 0.000003333, - "downloadSeconds": 0.062675862 + "connectionEstablishedSeconds": 0.187867362, + "uploadSeconds": 0.000003418, + "downloadSeconds": 0.062196985 }, { - "connectionEstablishedSeconds": 0.253008209, - "uploadSeconds": 0.000002933, - "downloadSeconds": 0.062583056 + "connectionEstablishedSeconds": 0.195457825, + "uploadSeconds": 0.000003426, + "downloadSeconds": 0.063899168 }, { - "connectionEstablishedSeconds": 0.247708643, - "uploadSeconds": 0.000003901, - "downloadSeconds": 0.061294321 + "connectionEstablishedSeconds": 0.188626728, + "uploadSeconds": 0.00000324, + "downloadSeconds": 0.06187622 }, { - "connectionEstablishedSeconds": 0.244514103, - "uploadSeconds": 0.0000027, - "downloadSeconds": 0.120299674 + "connectionEstablishedSeconds": 0.190810988, + "uploadSeconds": 0.000003275, + "downloadSeconds": 0.063101919 }, { - "connectionEstablishedSeconds": 0.25041742, - "uploadSeconds": 0.000002909, - "downloadSeconds": 0.061566587 + "connectionEstablishedSeconds": 0.192989026, + "uploadSeconds": 0.000002992, + "downloadSeconds": 0.063853567 }, { - "connectionEstablishedSeconds": 0.257779055, - "uploadSeconds": 0.000003455, - "downloadSeconds": 0.063430914 + "connectionEstablishedSeconds": 0.189992784, + "uploadSeconds": 0.000003782, + "downloadSeconds": 0.062369201 }, { - "connectionEstablishedSeconds": 0.255153072, - "uploadSeconds": 0.000002986, - "downloadSeconds": 0.124803856 + "connectionEstablishedSeconds": 0.194293407, + "uploadSeconds": 0.000003116, + "downloadSeconds": 0.063669453 }, { - "connectionEstablishedSeconds": 0.251417501, - "uploadSeconds": 0.000002544, - "downloadSeconds": 0.123507998 + "connectionEstablishedSeconds": 0.190904301, + "uploadSeconds": 0.000004374, + "downloadSeconds": 0.062676162 }, { - "connectionEstablishedSeconds": 0.255067874, - "uploadSeconds": 0.000004773, - "downloadSeconds": 0.124714757 + "connectionEstablishedSeconds": 0.195879226, + "uploadSeconds": 0.000004131, + "downloadSeconds": 0.064389181 }, { - "connectionEstablishedSeconds": 0.250682459, - "uploadSeconds": 0.000002462, - "downloadSeconds": 0.123496965 + "connectionEstablishedSeconds": 0.193824536, + "uploadSeconds": 0.000004093, + "downloadSeconds": 0.063465764 }, { - "connectionEstablishedSeconds": 0.252774065, - "uploadSeconds": 0.000003628, - "downloadSeconds": 0.12445596 + "connectionEstablishedSeconds": 0.188027247, + "uploadSeconds": 0.000002917, + "downloadSeconds": 0.062328405 }, { - "connectionEstablishedSeconds": 0.242569309, - "uploadSeconds": 0.00000305, - "downloadSeconds": 0.119429712 + "connectionEstablishedSeconds": 0.195207956, + "uploadSeconds": 0.000003012, + "downloadSeconds": 0.064754265 }, { - "connectionEstablishedSeconds": 0.25479327, - "uploadSeconds": 0.000002861, - "downloadSeconds": 0.124930819 + "connectionEstablishedSeconds": 0.190079317, + "uploadSeconds": 0.000004124, + "downloadSeconds": 0.062940938 }, { - "connectionEstablishedSeconds": 0.262770298, - "uploadSeconds": 0.000003423, - "downloadSeconds": 0.128763607 + "connectionEstablishedSeconds": 0.19125065, + "uploadSeconds": 0.000003096, + "downloadSeconds": 0.063017625 }, { - "connectionEstablishedSeconds": 0.25458649, - "uploadSeconds": 0.000002688, - "downloadSeconds": 0.062457767 + "connectionEstablishedSeconds": 0.189269514, + "uploadSeconds": 0.000003286, + "downloadSeconds": 0.062708315 }, { - "connectionEstablishedSeconds": 0.256087871, - "uploadSeconds": 0.000002748, - "downloadSeconds": 0.063382841 + "connectionEstablishedSeconds": 0.190415547, + "uploadSeconds": 0.000003906, + "downloadSeconds": 0.063148976 }, { - "connectionEstablishedSeconds": 0.256214858, - "uploadSeconds": 0.000002543, - "downloadSeconds": 0.125334307 + "connectionEstablishedSeconds": 0.187764982, + "uploadSeconds": 0.000003329, + "downloadSeconds": 0.061561417 }, { - "connectionEstablishedSeconds": 0.251170968, - "uploadSeconds": 0.000003289, - "downloadSeconds": 0.122626514 + "connectionEstablishedSeconds": 0.184668878, + "uploadSeconds": 0.000003093, + "downloadSeconds": 0.060799904 }, { - "connectionEstablishedSeconds": 0.248462896, - "uploadSeconds": 0.000003834, - "downloadSeconds": 0.121314707 + "connectionEstablishedSeconds": 0.178886012, + "uploadSeconds": 0.000003475, + "downloadSeconds": 0.058630013 }, { - "connectionEstablishedSeconds": 0.24983303, - "uploadSeconds": 0.000004495, - "downloadSeconds": 0.061233358 + "connectionEstablishedSeconds": 0.187124831, + "uploadSeconds": 0.000003911, + "downloadSeconds": 0.061490874 }, { - "connectionEstablishedSeconds": 0.252475751, - "uploadSeconds": 0.00000231, - "downloadSeconds": 0.0619883 + "connectionEstablishedSeconds": 0.191519886, + "uploadSeconds": 0.000003354, + "downloadSeconds": 0.06284 }, { - "connectionEstablishedSeconds": 0.246931961, - "uploadSeconds": 0.000002906, - "downloadSeconds": 0.121586692 + "connectionEstablishedSeconds": 0.183677331, + "uploadSeconds": 0.000003329, + "downloadSeconds": 0.060895723 }, { - "connectionEstablishedSeconds": 0.256214885, - "uploadSeconds": 0.000003494, - "downloadSeconds": 0.063429564 + "connectionEstablishedSeconds": 0.193609607, + "uploadSeconds": 0.000003424, + "downloadSeconds": 0.063463555 }, { - "connectionEstablishedSeconds": 0.251583325, - "uploadSeconds": 0.000002817, - "downloadSeconds": 0.122880352 + "connectionEstablishedSeconds": 0.190345657, + "uploadSeconds": 0.000004193, + "downloadSeconds": 0.062501922 }, { - "connectionEstablishedSeconds": 0.250357669, - "uploadSeconds": 0.000003612, - "downloadSeconds": 0.122302384 + "connectionEstablishedSeconds": 0.189962975, + "uploadSeconds": 0.000003208, + "downloadSeconds": 0.06288207 }, { - "connectionEstablishedSeconds": 0.251177488, - "uploadSeconds": 0.000003209, - "downloadSeconds": 0.061720037 + "connectionEstablishedSeconds": 0.187529507, + "uploadSeconds": 0.000003354, + "downloadSeconds": 0.061472793 }, { - "connectionEstablishedSeconds": 0.247782307, - "uploadSeconds": 0.000003204, - "downloadSeconds": 0.060884679 + "connectionEstablishedSeconds": 0.187134544, + "uploadSeconds": 0.000006123, + "downloadSeconds": 0.061314985 }, { - "connectionEstablishedSeconds": 0.256522029, - "uploadSeconds": 0.000003026, - "downloadSeconds": 0.063025502 + "connectionEstablishedSeconds": 0.197905948, + "uploadSeconds": 0.000003685, + "downloadSeconds": 0.065034712 }, { - "connectionEstablishedSeconds": 0.2581133, - "uploadSeconds": 0.000003568, - "downloadSeconds": 0.063403142 + "connectionEstablishedSeconds": 0.177555793, + "uploadSeconds": 0.000003361, + "downloadSeconds": 0.058861411 }, { - "connectionEstablishedSeconds": 0.255397506, - "uploadSeconds": 0.000003247, - "downloadSeconds": 0.062614623 + "connectionEstablishedSeconds": 0.191306735, + "uploadSeconds": 0.000017854, + "downloadSeconds": 0.064192984 }, { - "connectionEstablishedSeconds": 0.250827674, - "uploadSeconds": 0.000002441, - "downloadSeconds": 0.062131295 + "connectionEstablishedSeconds": 0.196022343, + "uploadSeconds": 0.000003263, + "downloadSeconds": 0.065029693 }, { - "connectionEstablishedSeconds": 0.260419165, - "uploadSeconds": 0.000002946, - "downloadSeconds": 0.064479165 + "connectionEstablishedSeconds": 0.193764388, + "uploadSeconds": 0.000003303, + "downloadSeconds": 0.063631364 }, { - "connectionEstablishedSeconds": 0.254314157, - "uploadSeconds": 0.000002467, - "downloadSeconds": 0.062572004 + "connectionEstablishedSeconds": 0.196818543, + "uploadSeconds": 0.0000033, + "downloadSeconds": 0.064576233 }, { - "connectionEstablishedSeconds": 0.254128659, - "uploadSeconds": 0.000002564, - "downloadSeconds": 0.062426829 + "connectionEstablishedSeconds": 0.176810816, + "uploadSeconds": 0.000002908, + "downloadSeconds": 0.058414157 }, { - "connectionEstablishedSeconds": 0.245706256, - "uploadSeconds": 0.000002984, - "downloadSeconds": 0.120957054 + "connectionEstablishedSeconds": 0.192276585, + "uploadSeconds": 0.000003158, + "downloadSeconds": 0.06325269 }, { - "connectionEstablishedSeconds": 0.254524756, - "uploadSeconds": 0.000003012, - "downloadSeconds": 0.125632302 + "connectionEstablishedSeconds": 0.194074023, + "uploadSeconds": 0.000028356, + "downloadSeconds": 0.063717898 }, { - "connectionEstablishedSeconds": 0.253064463, - "uploadSeconds": 0.000003616, - "downloadSeconds": 0.062562906 + "connectionEstablishedSeconds": 0.193206952, + "uploadSeconds": 0.000003765, + "downloadSeconds": 0.0635352 }, { - "connectionEstablishedSeconds": 0.244652507, - "uploadSeconds": 0.000002662, - "downloadSeconds": 0.060147963 + "connectionEstablishedSeconds": 0.190057792, + "uploadSeconds": 0.000003348, + "downloadSeconds": 0.062436626 }, { - "connectionEstablishedSeconds": 0.239427924, - "uploadSeconds": 0.00000321, - "downloadSeconds": 0.059177905 + "connectionEstablishedSeconds": 0.18784935, + "uploadSeconds": 0.000003782, + "downloadSeconds": 0.061669523 }, { - "connectionEstablishedSeconds": 0.252719182, - "uploadSeconds": 0.000003279, - "downloadSeconds": 0.124140527 + "connectionEstablishedSeconds": 0.198006008, + "uploadSeconds": 0.000003444, + "downloadSeconds": 0.065708426 }, { - "connectionEstablishedSeconds": 0.257588139, - "uploadSeconds": 0.000002645, - "downloadSeconds": 0.125933391 + "connectionEstablishedSeconds": 0.188476641, + "uploadSeconds": 0.0000039, + "downloadSeconds": 0.062462671 }, { - "connectionEstablishedSeconds": 0.252102214, - "uploadSeconds": 0.000006192, - "downloadSeconds": 0.123975867 + "connectionEstablishedSeconds": 0.182203575, + "uploadSeconds": 0.000003323, + "downloadSeconds": 0.060250246 }, { - "connectionEstablishedSeconds": 0.253004302, - "uploadSeconds": 0.000003238, - "downloadSeconds": 0.124329359 + "connectionEstablishedSeconds": 0.19490573, + "uploadSeconds": 0.000003738, + "downloadSeconds": 0.064006097 }, { - "connectionEstablishedSeconds": 0.25355254, - "uploadSeconds": 0.000002346, - "downloadSeconds": 0.062167782 + "connectionEstablishedSeconds": 0.185335964, + "uploadSeconds": 0.000003142, + "downloadSeconds": 0.06146971 }, { - "connectionEstablishedSeconds": 0.25529043, - "uploadSeconds": 0.000002785, - "downloadSeconds": 0.125672486 + "connectionEstablishedSeconds": 0.183792864, + "uploadSeconds": 0.000003206, + "downloadSeconds": 0.060305569 }, { - "connectionEstablishedSeconds": 0.261358525, + "connectionEstablishedSeconds": 0.19713591, "uploadSeconds": 0.000003169, - "downloadSeconds": 0.064202778 + "downloadSeconds": 0.065241664 }, { - "connectionEstablishedSeconds": 0.252931623, - "uploadSeconds": 0.000002846, - "downloadSeconds": 0.062165412 + "connectionEstablishedSeconds": 0.184555929, + "uploadSeconds": 0.000003789, + "downloadSeconds": 0.060342486 }, { - "connectionEstablishedSeconds": 0.250908525, - "uploadSeconds": 0.00000366, - "downloadSeconds": 0.123585083 + "connectionEstablishedSeconds": 0.191511875, + "uploadSeconds": 0.000002978, + "downloadSeconds": 0.063331886 }, { - "connectionEstablishedSeconds": 0.239730221, - "uploadSeconds": 0.000004546, - "downloadSeconds": 0.059308537 + "connectionEstablishedSeconds": 0.190624737, + "uploadSeconds": 0.000004287, + "downloadSeconds": 0.063210077 }, { - "connectionEstablishedSeconds": 0.261532696, - "uploadSeconds": 0.000002939, - "downloadSeconds": 0.064289014 + "connectionEstablishedSeconds": 0.194129578, + "uploadSeconds": 0.000004907, + "downloadSeconds": 0.064407992 }, { - "connectionEstablishedSeconds": 0.262379988, - "uploadSeconds": 0.000003347, - "downloadSeconds": 0.128376121 + "connectionEstablishedSeconds": 0.195752646, + "uploadSeconds": 0.000003319, + "downloadSeconds": 0.064317242 }, { - "connectionEstablishedSeconds": 0.24577322, - "uploadSeconds": 0.000002674, - "downloadSeconds": 0.060370727 + "connectionEstablishedSeconds": 0.19257992, + "uploadSeconds": 0.000003625, + "downloadSeconds": 0.063064308 }, { - "connectionEstablishedSeconds": 0.256765835, - "uploadSeconds": 0.000002505, - "downloadSeconds": 0.062955219 + "connectionEstablishedSeconds": 0.189536779, + "uploadSeconds": 0.000004356, + "downloadSeconds": 0.062742188 }, { - "connectionEstablishedSeconds": 0.257241877, - "uploadSeconds": 0.000003493, - "downloadSeconds": 0.063194058 + "connectionEstablishedSeconds": 0.188275419, + "uploadSeconds": 0.000003002, + "downloadSeconds": 0.062369722 }, { - "connectionEstablishedSeconds": 0.248561426, - "uploadSeconds": 0.000003504, - "downloadSeconds": 0.122268394 + "connectionEstablishedSeconds": 0.186185139, + "uploadSeconds": 0.000003817, + "downloadSeconds": 0.06109316 }, { - "connectionEstablishedSeconds": 0.253010123, - "uploadSeconds": 0.000003472, - "downloadSeconds": 0.123747352 + "connectionEstablishedSeconds": 0.184696604, + "uploadSeconds": 0.000003261, + "downloadSeconds": 0.060609072 }, { - "connectionEstablishedSeconds": 0.253802696, - "uploadSeconds": 0.000002907, - "downloadSeconds": 0.124984447 + "connectionEstablishedSeconds": 0.196722355, + "uploadSeconds": 0.000003351, + "downloadSeconds": 0.064479896 }, { - "connectionEstablishedSeconds": 0.259985353, - "uploadSeconds": 0.00000264, - "downloadSeconds": 0.126950708 + "connectionEstablishedSeconds": 0.191478022, + "uploadSeconds": 0.000003218, + "downloadSeconds": 0.063413269 }, { - "connectionEstablishedSeconds": 0.253068745, - "uploadSeconds": 0.000003457, - "downloadSeconds": 0.123640609 + "connectionEstablishedSeconds": 0.187673152, + "uploadSeconds": 0.000004551, + "downloadSeconds": 0.062067971 }, { - "connectionEstablishedSeconds": 0.262131372, - "uploadSeconds": 0.000002891, - "downloadSeconds": 0.064446604 + "connectionEstablishedSeconds": 0.193827421, + "uploadSeconds": 0.000003475, + "downloadSeconds": 0.06433508 }, { - "connectionEstablishedSeconds": 0.249052514, - "uploadSeconds": 0.000002669, - "downloadSeconds": 0.06125365 + "connectionEstablishedSeconds": 0.192151163, + "uploadSeconds": 0.000003606, + "downloadSeconds": 0.06354583 }, { - "connectionEstablishedSeconds": 0.248160319, - "uploadSeconds": 0.000003478, - "downloadSeconds": 0.061321695 + "connectionEstablishedSeconds": 0.191935843, + "uploadSeconds": 0.000008481, + "downloadSeconds": 0.06291483 }, { - "connectionEstablishedSeconds": 0.245016941, - "uploadSeconds": 0.000002873, - "downloadSeconds": 0.120366382 + "connectionEstablishedSeconds": 0.185985133, + "uploadSeconds": 0.00000336, + "downloadSeconds": 0.060967739 }, { - "connectionEstablishedSeconds": 0.249254663, - "uploadSeconds": 0.000002424, - "downloadSeconds": 0.121647486 + "connectionEstablishedSeconds": 0.195609673, + "uploadSeconds": 0.000003403, + "downloadSeconds": 0.064748252 }, { - "connectionEstablishedSeconds": 0.258669135, - "uploadSeconds": 0.000002826, - "downloadSeconds": 0.063624543 + "connectionEstablishedSeconds": 0.188223984, + "uploadSeconds": 0.000003478, + "downloadSeconds": 0.061775663 }, { - "connectionEstablishedSeconds": 0.250078193, - "uploadSeconds": 0.000003163, - "downloadSeconds": 0.123107871 + "connectionEstablishedSeconds": 0.194433271, + "uploadSeconds": 0.000003335, + "downloadSeconds": 0.06381819 }, { - "connectionEstablishedSeconds": 0.252085442, - "uploadSeconds": 0.000003074, - "downloadSeconds": 0.123198762 + "connectionEstablishedSeconds": 0.192984602, + "uploadSeconds": 0.000009887, + "downloadSeconds": 0.06334622 }, { - "connectionEstablishedSeconds": 0.256262807, - "uploadSeconds": 0.000003253, - "downloadSeconds": 0.125268654 + "connectionEstablishedSeconds": 0.192388961, + "uploadSeconds": 0.00000345, + "downloadSeconds": 0.063253286 }, { - "connectionEstablishedSeconds": 0.249110627, - "uploadSeconds": 0.000003228, - "downloadSeconds": 0.061307267 + "connectionEstablishedSeconds": 0.191417727, + "uploadSeconds": 0.000004113, + "downloadSeconds": 0.063491585 }, { - "connectionEstablishedSeconds": 0.25866579, - "uploadSeconds": 0.000002871, - "downloadSeconds": 0.126626551 + "connectionEstablishedSeconds": 0.189679397, + "uploadSeconds": 0.000003253, + "downloadSeconds": 0.062184388 }, { - "connectionEstablishedSeconds": 0.258809684, - "uploadSeconds": 0.000003657, - "downloadSeconds": 0.126692366 + "connectionEstablishedSeconds": 0.193117883, + "uploadSeconds": 0.000003131, + "downloadSeconds": 0.063380846 }, { - "connectionEstablishedSeconds": 0.253232103, - "uploadSeconds": 0.000003714, - "downloadSeconds": 0.123766291 + "connectionEstablishedSeconds": 0.198822172, + "uploadSeconds": 0.000003281, + "downloadSeconds": 0.06583434 }, { - "connectionEstablishedSeconds": 0.252618679, - "uploadSeconds": 0.0000028, - "downloadSeconds": 0.123498014 + "connectionEstablishedSeconds": 0.194338454, + "uploadSeconds": 0.000003423, + "downloadSeconds": 0.063830621 }, { - "connectionEstablishedSeconds": 0.254677234, - "uploadSeconds": 0.000002662, - "downloadSeconds": 0.12447656 + "connectionEstablishedSeconds": 0.183162377, + "uploadSeconds": 0.00000359, + "downloadSeconds": 0.06064044 }, { - "connectionEstablishedSeconds": 0.262513097, - "uploadSeconds": 0.0000044, - "downloadSeconds": 0.128426478 + "connectionEstablishedSeconds": 0.185396487, + "uploadSeconds": 0.000003061, + "downloadSeconds": 0.060731449 }, { - "connectionEstablishedSeconds": 0.259310403, - "uploadSeconds": 0.00000267, - "downloadSeconds": 0.127596938 + "connectionEstablishedSeconds": 0.191415236, + "uploadSeconds": 0.000003353, + "downloadSeconds": 0.063384523 }, { - "connectionEstablishedSeconds": 0.253873333, - "uploadSeconds": 0.000003398, - "downloadSeconds": 0.124047259 + "connectionEstablishedSeconds": 0.190619261, + "uploadSeconds": 0.000003132, + "downloadSeconds": 0.063068455 }, { - "connectionEstablishedSeconds": 0.25501728, - "uploadSeconds": 0.000002983, - "downloadSeconds": 0.125714344 + "connectionEstablishedSeconds": 0.194471485, + "uploadSeconds": 0.000002969, + "downloadSeconds": 0.064423235 }, { - "connectionEstablishedSeconds": 0.255689264, - "uploadSeconds": 0.000005103, - "downloadSeconds": 0.06329916 + "connectionEstablishedSeconds": 0.188817858, + "uploadSeconds": 0.000003669, + "downloadSeconds": 0.061856513 }, { - "connectionEstablishedSeconds": 0.255763735, - "uploadSeconds": 0.000002883, - "downloadSeconds": 0.063039447 + "connectionEstablishedSeconds": 0.183555378, + "uploadSeconds": 0.000005259, + "downloadSeconds": 0.060761592 }, { - "connectionEstablishedSeconds": 0.263646145, - "uploadSeconds": 0.000003715, - "downloadSeconds": 0.064778216 + "connectionEstablishedSeconds": 0.188950417, + "uploadSeconds": 0.000003292, + "downloadSeconds": 0.062089214 }, { - "connectionEstablishedSeconds": 0.247384525, - "uploadSeconds": 0.000003402, - "downloadSeconds": 0.060685597 + "connectionEstablishedSeconds": 0.186506121, + "uploadSeconds": 0.000004426, + "downloadSeconds": 0.061217405 } ], "implementation": "go-libp2p", @@ -3517,504 +3517,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.126151651, - "uploadSeconds": 0.000002349, - "downloadSeconds": 0.060111794 + "connectionEstablishedSeconds": 0.063853531, + "uploadSeconds": 0.000002147, + "downloadSeconds": 0.061903846 }, { - "connectionEstablishedSeconds": 0.129204824, - "uploadSeconds": 0.000001809, - "downloadSeconds": 0.062814464 + "connectionEstablishedSeconds": 0.064982901, + "uploadSeconds": 0.000002321, + "downloadSeconds": 0.061408073 }, { - "connectionEstablishedSeconds": 0.12989484, - "uploadSeconds": 0.000001788, - "downloadSeconds": 0.062263664 + "connectionEstablishedSeconds": 0.065961812, + "uploadSeconds": 0.000001949, + "downloadSeconds": 0.063958454 }, { - "connectionEstablishedSeconds": 0.128827356, - "uploadSeconds": 0.000001937, - "downloadSeconds": 0.062755559 + "connectionEstablishedSeconds": 0.070058086, + "uploadSeconds": 0.000002079, + "downloadSeconds": 0.067094922 }, { - "connectionEstablishedSeconds": 0.128097527, - "uploadSeconds": 0.000002064, - "downloadSeconds": 0.061263379 + "connectionEstablishedSeconds": 0.065052069, + "uploadSeconds": 0.000002384, + "downloadSeconds": 0.061295116 }, { - "connectionEstablishedSeconds": 0.13534984, - "uploadSeconds": 0.000002196, - "downloadSeconds": 0.064960528 + "connectionEstablishedSeconds": 0.065195841, + "uploadSeconds": 0.000002264, + "downloadSeconds": 0.063325662 }, { - "connectionEstablishedSeconds": 0.121873491, - "uploadSeconds": 0.000002012, - "downloadSeconds": 0.058282537 + "connectionEstablishedSeconds": 0.066803352, + "uploadSeconds": 0.000002064, + "downloadSeconds": 0.063079582 }, { - "connectionEstablishedSeconds": 0.127685139, - "uploadSeconds": 0.000002091, - "downloadSeconds": 0.061119046 + "connectionEstablishedSeconds": 0.067422036, + "uploadSeconds": 0.000002035, + "downloadSeconds": 0.0636488 }, { - "connectionEstablishedSeconds": 0.122078139, - "uploadSeconds": 0.000002417, - "downloadSeconds": 0.059363629 + "connectionEstablishedSeconds": 0.066899127, + "uploadSeconds": 0.000002832, + "downloadSeconds": 0.063135269 }, { - "connectionEstablishedSeconds": 0.130700124, - "uploadSeconds": 0.000001939, - "downloadSeconds": 0.063635433 + "connectionEstablishedSeconds": 0.065792178, + "uploadSeconds": 0.000002077, + "downloadSeconds": 0.062246279 }, { - "connectionEstablishedSeconds": 0.132067528, - "uploadSeconds": 0.000002014, - "downloadSeconds": 0.063457557 + "connectionEstablishedSeconds": 0.063350798, + "uploadSeconds": 0.000002209, + "downloadSeconds": 0.061342022 }, { - "connectionEstablishedSeconds": 0.127849632, - "uploadSeconds": 0.000002033, - "downloadSeconds": 0.06217967 + "connectionEstablishedSeconds": 0.067943277, + "uploadSeconds": 0.000001636, + "downloadSeconds": 0.064165736 }, { - "connectionEstablishedSeconds": 0.12674816, - "uploadSeconds": 0.000002177, - "downloadSeconds": 0.06158331 + "connectionEstablishedSeconds": 0.065498156, + "uploadSeconds": 0.000001983, + "downloadSeconds": 0.063615849 }, { - "connectionEstablishedSeconds": 0.127379142, - "uploadSeconds": 0.000001916, - "downloadSeconds": 0.061885807 + "connectionEstablishedSeconds": 0.063746753, + "uploadSeconds": 0.000003141, + "downloadSeconds": 0.061706192 }, { - "connectionEstablishedSeconds": 0.133760878, - "uploadSeconds": 0.000001692, - "downloadSeconds": 0.064240901 + "connectionEstablishedSeconds": 0.064723996, + "uploadSeconds": 0.00000233, + "downloadSeconds": 0.062873571 }, { - "connectionEstablishedSeconds": 0.130580764, - "uploadSeconds": 0.000002045, - "downloadSeconds": 0.062521174 + "connectionEstablishedSeconds": 0.064921098, + "uploadSeconds": 0.000020849, + "downloadSeconds": 0.063130592 }, { - "connectionEstablishedSeconds": 0.132804107, - "uploadSeconds": 0.000001886, - "downloadSeconds": 0.063699769 + "connectionEstablishedSeconds": 0.067853394, + "uploadSeconds": 0.000002141, + "downloadSeconds": 0.063972579 }, { - "connectionEstablishedSeconds": 0.135148122, - "uploadSeconds": 0.000002012, - "downloadSeconds": 0.064907714 + "connectionEstablishedSeconds": 0.063701565, + "uploadSeconds": 0.000002394, + "downloadSeconds": 0.061574609 }, { - "connectionEstablishedSeconds": 0.127619559, - "uploadSeconds": 0.000002245, - "downloadSeconds": 0.062083015 + "connectionEstablishedSeconds": 0.067492406, + "uploadSeconds": 0.000002183, + "downloadSeconds": 0.063669215 }, { - "connectionEstablishedSeconds": 0.125278543, - "uploadSeconds": 0.000003326, - "downloadSeconds": 0.060073059 + "connectionEstablishedSeconds": 0.063868952, + "uploadSeconds": 0.000002008, + "downloadSeconds": 0.062071297 }, { - "connectionEstablishedSeconds": 0.12249927, - "uploadSeconds": 0.000002011, - "downloadSeconds": 0.058580595 + "connectionEstablishedSeconds": 0.066077904, + "uploadSeconds": 0.000001883, + "downloadSeconds": 0.064159921 }, { - "connectionEstablishedSeconds": 0.127263622, - "uploadSeconds": 0.00000272, - "downloadSeconds": 0.06196458 + "connectionEstablishedSeconds": 0.065112524, + "uploadSeconds": 0.000002018, + "downloadSeconds": 0.061445425 }, { - "connectionEstablishedSeconds": 0.130274289, - "uploadSeconds": 0.00000195, - "downloadSeconds": 0.06272686 + "connectionEstablishedSeconds": 0.066551635, + "uploadSeconds": 0.000001943, + "downloadSeconds": 0.062937389 }, { - "connectionEstablishedSeconds": 0.133296573, - "uploadSeconds": 0.000002144, - "downloadSeconds": 0.063984271 + "connectionEstablishedSeconds": 0.064780169, + "uploadSeconds": 0.000001746, + "downloadSeconds": 0.061306276 }, { - "connectionEstablishedSeconds": 0.129793246, - "uploadSeconds": 0.000002559, - "downloadSeconds": 0.062174156 + "connectionEstablishedSeconds": 0.066465614, + "uploadSeconds": 0.000003093, + "downloadSeconds": 0.065517295 }, { - "connectionEstablishedSeconds": 0.13073093, - "uploadSeconds": 0.000001964, - "downloadSeconds": 0.062727683 + "connectionEstablishedSeconds": 0.063794166, + "uploadSeconds": 0.000003571, + "downloadSeconds": 0.061647819 }, { - "connectionEstablishedSeconds": 0.125902941, - "uploadSeconds": 0.000002129, - "downloadSeconds": 0.060313342 + "connectionEstablishedSeconds": 0.063356582, + "uploadSeconds": 0.000002864, + "downloadSeconds": 0.061416973 }, { - "connectionEstablishedSeconds": 0.131097742, - "uploadSeconds": 0.000001799, - "downloadSeconds": 0.062803515 + "connectionEstablishedSeconds": 0.064958744, + "uploadSeconds": 0.000008552, + "downloadSeconds": 0.061439026 }, { - "connectionEstablishedSeconds": 0.133414071, - "uploadSeconds": 0.00000183, - "downloadSeconds": 0.063613039 + "connectionEstablishedSeconds": 0.066975692, + "uploadSeconds": 0.00000256, + "downloadSeconds": 0.063151967 }, { - "connectionEstablishedSeconds": 0.132653783, - "uploadSeconds": 0.000001957, - "downloadSeconds": 0.063574125 + "connectionEstablishedSeconds": 0.066554911, + "uploadSeconds": 0.000004909, + "downloadSeconds": 0.064505998 }, { - "connectionEstablishedSeconds": 0.129110969, - "uploadSeconds": 0.000002654, - "downloadSeconds": 0.061835123 + "connectionEstablishedSeconds": 0.069351545, + "uploadSeconds": 0.000001972, + "downloadSeconds": 0.065523048 }, { - "connectionEstablishedSeconds": 0.125059968, - "uploadSeconds": 0.000002038, - "downloadSeconds": 0.059879328 + "connectionEstablishedSeconds": 0.067342819, + "uploadSeconds": 0.000002713, + "downloadSeconds": 0.063545465 }, { - "connectionEstablishedSeconds": 0.132621136, - "uploadSeconds": 0.000002239, - "downloadSeconds": 0.0646004 + "connectionEstablishedSeconds": 0.069139158, + "uploadSeconds": 0.000002075, + "downloadSeconds": 0.065241092 }, { - "connectionEstablishedSeconds": 0.133595619, - "uploadSeconds": 0.000002438, - "downloadSeconds": 0.064052479 + "connectionEstablishedSeconds": 0.064710306, + "uploadSeconds": 0.000001897, + "downloadSeconds": 0.061037498 }, { - "connectionEstablishedSeconds": 0.133692962, - "uploadSeconds": 0.000002297, - "downloadSeconds": 0.064047711 + "connectionEstablishedSeconds": 0.068369429, + "uploadSeconds": 0.000002043, + "downloadSeconds": 0.06492128 }, { - "connectionEstablishedSeconds": 0.127442752, - "uploadSeconds": 0.000002134, - "downloadSeconds": 0.061065899 + "connectionEstablishedSeconds": 0.068059504, + "uploadSeconds": 0.00000186, + "downloadSeconds": 0.064188367 }, { - "connectionEstablishedSeconds": 0.133307312, - "uploadSeconds": 0.000001909, - "downloadSeconds": 0.063937153 + "connectionEstablishedSeconds": 0.066030516, + "uploadSeconds": 0.000002005, + "downloadSeconds": 0.062195243 }, { - "connectionEstablishedSeconds": 0.131376194, - "uploadSeconds": 0.000001892, - "downloadSeconds": 0.063022383 + "connectionEstablishedSeconds": 0.062159714, + "uploadSeconds": 0.000002165, + "downloadSeconds": 0.060150927 }, { - "connectionEstablishedSeconds": 0.126447659, - "uploadSeconds": 0.0000022, - "downloadSeconds": 0.060481942 + "connectionEstablishedSeconds": 0.065208248, + "uploadSeconds": 0.000002206, + "downloadSeconds": 0.063135191 }, { - "connectionEstablishedSeconds": 0.127975402, - "uploadSeconds": 0.000002544, - "downloadSeconds": 0.062116593 + "connectionEstablishedSeconds": 0.065286705, + "uploadSeconds": 0.000002558, + "downloadSeconds": 0.063171598 }, { - "connectionEstablishedSeconds": 0.126821499, - "uploadSeconds": 0.000002165, - "downloadSeconds": 0.06072908 + "connectionEstablishedSeconds": 0.068470709, + "uploadSeconds": 0.000002386, + "downloadSeconds": 0.064698216 }, { - "connectionEstablishedSeconds": 0.128799428, - "uploadSeconds": 0.000002131, - "downloadSeconds": 0.061693083 + "connectionEstablishedSeconds": 0.063230961, + "uploadSeconds": 0.000002172, + "downloadSeconds": 0.05948708 }, { - "connectionEstablishedSeconds": 0.132309618, - "uploadSeconds": 0.00000198, - "downloadSeconds": 0.063466891 + "connectionEstablishedSeconds": 0.064312679, + "uploadSeconds": 0.00000246, + "downloadSeconds": 0.06252934 }, { - "connectionEstablishedSeconds": 0.126743105, - "uploadSeconds": 0.000002233, - "downloadSeconds": 0.061620339 + "connectionEstablishedSeconds": 0.066295193, + "uploadSeconds": 0.000002329, + "downloadSeconds": 0.062686328 }, { - "connectionEstablishedSeconds": 0.130026805, - "uploadSeconds": 0.000002218, - "downloadSeconds": 0.063172074 + "connectionEstablishedSeconds": 0.065746978, + "uploadSeconds": 0.000018708, + "downloadSeconds": 0.062202181 }, { - "connectionEstablishedSeconds": 0.130640115, - "uploadSeconds": 0.000002176, - "downloadSeconds": 0.062559726 + "connectionEstablishedSeconds": 0.065714765, + "uploadSeconds": 0.000002683, + "downloadSeconds": 0.063791958 }, { - "connectionEstablishedSeconds": 0.129337234, - "uploadSeconds": 0.000002072, - "downloadSeconds": 0.062073933 + "connectionEstablishedSeconds": 0.064226408, + "uploadSeconds": 0.000002094, + "downloadSeconds": 0.062257861 }, { - "connectionEstablishedSeconds": 0.130782968, - "uploadSeconds": 0.00000207, - "downloadSeconds": 0.063519826 + "connectionEstablishedSeconds": 0.068032673, + "uploadSeconds": 0.000003414, + "downloadSeconds": 0.064262246 }, { - "connectionEstablishedSeconds": 0.128617654, - "uploadSeconds": 0.000002426, - "downloadSeconds": 0.061714502 + "connectionEstablishedSeconds": 0.067097228, + "uploadSeconds": 0.000002003, + "downloadSeconds": 0.06329759 }, { - "connectionEstablishedSeconds": 0.131507993, - "uploadSeconds": 0.00000296, - "downloadSeconds": 0.063716424 + "connectionEstablishedSeconds": 0.06625451, + "uploadSeconds": 0.000002024, + "downloadSeconds": 0.062532233 }, { - "connectionEstablishedSeconds": 0.127081302, - "uploadSeconds": 0.00000212, - "downloadSeconds": 0.06169652 + "connectionEstablishedSeconds": 0.064510297, + "uploadSeconds": 0.000002254, + "downloadSeconds": 0.063151006 }, { - "connectionEstablishedSeconds": 0.130389179, - "uploadSeconds": 0.000002081, - "downloadSeconds": 0.062127935 + "connectionEstablishedSeconds": 0.068352644, + "uploadSeconds": 0.000008445, + "downloadSeconds": 0.064571904 }, { - "connectionEstablishedSeconds": 0.131200468, - "uploadSeconds": 0.000002234, - "downloadSeconds": 0.063621168 + "connectionEstablishedSeconds": 0.066602972, + "uploadSeconds": 0.000002182, + "downloadSeconds": 0.063109213 }, { - "connectionEstablishedSeconds": 0.132291424, - "uploadSeconds": 0.000001924, - "downloadSeconds": 0.063446517 + "connectionEstablishedSeconds": 0.067583783, + "uploadSeconds": 0.000002343, + "downloadSeconds": 0.063861056 }, { - "connectionEstablishedSeconds": 0.131338395, - "uploadSeconds": 0.000001864, - "downloadSeconds": 0.062883127 + "connectionEstablishedSeconds": 0.066546478, + "uploadSeconds": 0.000002032, + "downloadSeconds": 0.064617388 }, { - "connectionEstablishedSeconds": 0.132832946, - "uploadSeconds": 0.000002178, - "downloadSeconds": 0.064120672 + "connectionEstablishedSeconds": 0.065510554, + "uploadSeconds": 0.000003316, + "downloadSeconds": 0.061889018 }, { - "connectionEstablishedSeconds": 0.125112863, - "uploadSeconds": 0.000002234, - "downloadSeconds": 0.060819545 + "connectionEstablishedSeconds": 0.064845031, + "uploadSeconds": 0.000002076, + "downloadSeconds": 0.063807569 }, { - "connectionEstablishedSeconds": 0.129229344, - "uploadSeconds": 0.000001914, - "downloadSeconds": 0.061822645 + "connectionEstablishedSeconds": 0.0688521, + "uploadSeconds": 0.000003133, + "downloadSeconds": 0.065068437 }, { - "connectionEstablishedSeconds": 0.127488566, - "uploadSeconds": 0.000001963, - "downloadSeconds": 0.061016129 + "connectionEstablishedSeconds": 0.065013793, + "uploadSeconds": 0.000002318, + "downloadSeconds": 0.061350768 }, { - "connectionEstablishedSeconds": 0.131944067, - "uploadSeconds": 0.00000283, - "downloadSeconds": 0.063271008 + "connectionEstablishedSeconds": 0.066968385, + "uploadSeconds": 0.000002255, + "downloadSeconds": 0.063070469 }, { - "connectionEstablishedSeconds": 0.135384772, - "uploadSeconds": 0.00000214, - "downloadSeconds": 0.064847672 + "connectionEstablishedSeconds": 0.067112664, + "uploadSeconds": 0.000002597, + "downloadSeconds": 0.063252006 }, { - "connectionEstablishedSeconds": 0.124667496, - "uploadSeconds": 0.000002069, - "downloadSeconds": 0.06055079 + "connectionEstablishedSeconds": 0.064987554, + "uploadSeconds": 0.000001884, + "downloadSeconds": 0.063063868 }, { - "connectionEstablishedSeconds": 0.132800576, - "uploadSeconds": 0.000002034, - "downloadSeconds": 0.063699868 + "connectionEstablishedSeconds": 0.065967073, + "uploadSeconds": 0.000001956, + "downloadSeconds": 0.062305387 }, { - "connectionEstablishedSeconds": 0.133475009, - "uploadSeconds": 0.000002195, - "downloadSeconds": 0.064008758 + "connectionEstablishedSeconds": 0.067108387, + "uploadSeconds": 0.000001894, + "downloadSeconds": 0.063445272 }, { - "connectionEstablishedSeconds": 0.13164217, - "uploadSeconds": 0.000004093, - "downloadSeconds": 0.063046896 + "connectionEstablishedSeconds": 0.06431435, + "uploadSeconds": 0.000002059, + "downloadSeconds": 0.060717924 }, { - "connectionEstablishedSeconds": 0.130395177, - "uploadSeconds": 0.000002377, - "downloadSeconds": 0.063420146 + "connectionEstablishedSeconds": 0.064242159, + "uploadSeconds": 0.000002072, + "downloadSeconds": 0.060499344 }, { - "connectionEstablishedSeconds": 0.130376451, - "uploadSeconds": 0.000001854, - "downloadSeconds": 0.062517149 + "connectionEstablishedSeconds": 0.066464554, + "uploadSeconds": 0.000002076, + "downloadSeconds": 0.062726048 }, { - "connectionEstablishedSeconds": 0.124174265, - "uploadSeconds": 0.000002013, - "downloadSeconds": 0.059630293 + "connectionEstablishedSeconds": 0.062476705, + "uploadSeconds": 0.000001993, + "downloadSeconds": 0.060485389 }, { - "connectionEstablishedSeconds": 0.131321918, - "uploadSeconds": 0.000002109, - "downloadSeconds": 0.063847882 + "connectionEstablishedSeconds": 0.06673264, + "uploadSeconds": 0.000001825, + "downloadSeconds": 0.063061146 }, { - "connectionEstablishedSeconds": 0.12651402, - "uploadSeconds": 0.000001959, - "downloadSeconds": 0.061277022 + "connectionEstablishedSeconds": 0.064060397, + "uploadSeconds": 0.000001966, + "downloadSeconds": 0.062155527 }, { - "connectionEstablishedSeconds": 0.129392271, - "uploadSeconds": 0.000006552, - "downloadSeconds": 0.062017563 + "connectionEstablishedSeconds": 0.066088265, + "uploadSeconds": 0.000003092, + "downloadSeconds": 0.062378945 }, { - "connectionEstablishedSeconds": 0.125820688, - "uploadSeconds": 0.000002294, - "downloadSeconds": 0.060293214 + "connectionEstablishedSeconds": 0.068514481, + "uploadSeconds": 0.000002025, + "downloadSeconds": 0.0646085 }, { - "connectionEstablishedSeconds": 0.123559055, - "uploadSeconds": 0.000002293, - "downloadSeconds": 0.059092023 + "connectionEstablishedSeconds": 0.064719319, + "uploadSeconds": 0.000001894, + "downloadSeconds": 0.061031787 }, { - "connectionEstablishedSeconds": 0.12768245, - "uploadSeconds": 0.000001919, - "downloadSeconds": 0.061216962 + "connectionEstablishedSeconds": 0.06607192, + "uploadSeconds": 0.000002233, + "downloadSeconds": 0.06412077 }, { - "connectionEstablishedSeconds": 0.132155614, - "uploadSeconds": 0.000002231, - "downloadSeconds": 0.063330694 + "connectionEstablishedSeconds": 0.067629578, + "uploadSeconds": 0.000002087, + "downloadSeconds": 0.063763949 }, { - "connectionEstablishedSeconds": 0.131687572, - "uploadSeconds": 0.000002588, - "downloadSeconds": 0.063173232 + "connectionEstablishedSeconds": 0.06230917, + "uploadSeconds": 0.000002348, + "downloadSeconds": 0.058402315 }, { - "connectionEstablishedSeconds": 0.126361402, - "uploadSeconds": 0.000002273, - "downloadSeconds": 0.061394606 + "connectionEstablishedSeconds": 0.064857756, + "uploadSeconds": 0.000002011, + "downloadSeconds": 0.061142836 }, { - "connectionEstablishedSeconds": 0.128864354, - "uploadSeconds": 0.000002128, - "downloadSeconds": 0.062303788 + "connectionEstablishedSeconds": 0.065864183, + "uploadSeconds": 0.000017621, + "downloadSeconds": 0.062186145 }, { - "connectionEstablishedSeconds": 0.133012264, - "uploadSeconds": 0.000002351, - "downloadSeconds": 0.064573179 + "connectionEstablishedSeconds": 0.06481408, + "uploadSeconds": 0.000002102, + "downloadSeconds": 0.062679584 }, { - "connectionEstablishedSeconds": 0.134211551, - "uploadSeconds": 0.00000863, - "downloadSeconds": 0.064424225 + "connectionEstablishedSeconds": 0.06828223, + "uploadSeconds": 0.000002038, + "downloadSeconds": 0.064575532 }, { - "connectionEstablishedSeconds": 0.131659114, - "uploadSeconds": 0.000001996, - "downloadSeconds": 0.063097905 + "connectionEstablishedSeconds": 0.067096999, + "uploadSeconds": 0.0000099, + "downloadSeconds": 0.063291858 }, { - "connectionEstablishedSeconds": 0.130566836, - "uploadSeconds": 0.000001883, - "downloadSeconds": 0.062666167 + "connectionEstablishedSeconds": 0.065024344, + "uploadSeconds": 0.000002007, + "downloadSeconds": 0.063014329 }, { - "connectionEstablishedSeconds": 0.12699178, - "uploadSeconds": 0.000001941, - "downloadSeconds": 0.061710595 + "connectionEstablishedSeconds": 0.064771268, + "uploadSeconds": 0.000002892, + "downloadSeconds": 0.064019739 }, { - "connectionEstablishedSeconds": 0.126258345, - "uploadSeconds": 0.00000231, - "downloadSeconds": 0.060492382 + "connectionEstablishedSeconds": 0.067307082, + "uploadSeconds": 0.000002052, + "downloadSeconds": 0.063716769 }, { - "connectionEstablishedSeconds": 0.126496115, - "uploadSeconds": 0.000002291, - "downloadSeconds": 0.060621943 + "connectionEstablishedSeconds": 0.066775409, + "uploadSeconds": 0.000002107, + "downloadSeconds": 0.063349371 }, { - "connectionEstablishedSeconds": 0.129833632, - "uploadSeconds": 0.000002205, - "downloadSeconds": 0.063074154 + "connectionEstablishedSeconds": 0.066830275, + "uploadSeconds": 0.000001923, + "downloadSeconds": 0.063185873 }, { - "connectionEstablishedSeconds": 0.125972604, - "uploadSeconds": 0.000002052, - "downloadSeconds": 0.061142547 + "connectionEstablishedSeconds": 0.06780674, + "uploadSeconds": 0.00000236, + "downloadSeconds": 0.064036164 }, { - "connectionEstablishedSeconds": 0.133147996, - "uploadSeconds": 0.00000204, - "downloadSeconds": 0.063961665 + "connectionEstablishedSeconds": 0.065967916, + "uploadSeconds": 0.000002265, + "downloadSeconds": 0.062318402 }, { - "connectionEstablishedSeconds": 0.128990543, - "uploadSeconds": 0.000002291, - "downloadSeconds": 0.061926222 + "connectionEstablishedSeconds": 0.064328056, + "uploadSeconds": 0.000002262, + "downloadSeconds": 0.062424217 }, { - "connectionEstablishedSeconds": 0.126666522, - "uploadSeconds": 0.00000186, - "downloadSeconds": 0.060657623 + "connectionEstablishedSeconds": 0.066084525, + "uploadSeconds": 0.000002192, + "downloadSeconds": 0.062286294 }, { - "connectionEstablishedSeconds": 0.131063138, - "uploadSeconds": 0.000002364, - "downloadSeconds": 0.063630534 + "connectionEstablishedSeconds": 0.06599978, + "uploadSeconds": 0.000002109, + "downloadSeconds": 0.062239371 }, { - "connectionEstablishedSeconds": 0.127691264, - "uploadSeconds": 0.000001737, - "downloadSeconds": 0.061989469 + "connectionEstablishedSeconds": 0.066048454, + "uploadSeconds": 0.000001851, + "downloadSeconds": 0.062367304 }, { - "connectionEstablishedSeconds": 0.132669306, - "uploadSeconds": 0.000002116, - "downloadSeconds": 0.063654787 + "connectionEstablishedSeconds": 0.063651651, + "uploadSeconds": 0.000001993, + "downloadSeconds": 0.061675867 }, { - "connectionEstablishedSeconds": 0.13097608, - "uploadSeconds": 0.000002228, - "downloadSeconds": 0.062813042 + "connectionEstablishedSeconds": 0.06226315, + "uploadSeconds": 0.000018316, + "downloadSeconds": 0.060474821 }, { - "connectionEstablishedSeconds": 0.127253247, - "uploadSeconds": 0.000002123, - "downloadSeconds": 0.061762543 + "connectionEstablishedSeconds": 0.066654209, + "uploadSeconds": 0.000004447, + "downloadSeconds": 0.064621304 }, { - "connectionEstablishedSeconds": 0.130387331, - "uploadSeconds": 0.000001931, - "downloadSeconds": 0.062535067 + "connectionEstablishedSeconds": 0.068243264, + "uploadSeconds": 0.000001947, + "downloadSeconds": 0.066378669 }, { - "connectionEstablishedSeconds": 0.123412861, - "uploadSeconds": 0.000002168, - "downloadSeconds": 0.059142108 + "connectionEstablishedSeconds": 0.065352793, + "uploadSeconds": 0.000002016, + "downloadSeconds": 0.061528441 }, { - "connectionEstablishedSeconds": 0.134738403, - "uploadSeconds": 0.00000203, - "downloadSeconds": 0.064797602 + "connectionEstablishedSeconds": 0.065683131, + "uploadSeconds": 0.000002917, + "downloadSeconds": 0.061882983 }, { - "connectionEstablishedSeconds": 0.129629586, - "uploadSeconds": 0.000001965, - "downloadSeconds": 0.062985231 + "connectionEstablishedSeconds": 0.066137011, + "uploadSeconds": 0.000002347, + "downloadSeconds": 0.064232968 }, { - "connectionEstablishedSeconds": 0.134042226, - "uploadSeconds": 0.000002526, - "downloadSeconds": 0.064318516 + "connectionEstablishedSeconds": 0.066276528, + "uploadSeconds": 0.000002005, + "downloadSeconds": 0.064312874 } ], "implementation": "go-libp2p", @@ -4031,173 +4031,173 @@ "pings": { "unit": "s", "results": [ - 0.0628, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0627, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0627, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0629, - 0.0628, - 0.0627, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0627, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0627, - 0.0627, - 0.0628, - 0.0628, - 0.0628, - 0.0628 + 0.0599, + 0.0599, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0598, + 0.0598, + 0.0599, + 0.0599, + 0.0598, + 0.0599, + 0.0599, + 0.0598, + 0.0598, + 0.0599, + 0.0599, + 0.0598, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0599, + 0.0598, + 0.0599, + 0.0598, + 0.0599, + 0.0599, + 0.0598, + 0.0599, + 0.0599, + 0.0599, + 0.0598, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0599, + 0.0599, + 0.0599, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0598, + 0.0599, + 0.06, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0599, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0598, + 0.0603, + 0.0598, + 0.0599, + 0.0599, + 0.0598 ] }, "iperf": { "unit": "bit/s", "results": [ - 3280000000, - 3280000000, - 3280000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3280000000, - 3280000000, - 3270000000, - 3270000000, - 3260000000, - 3260000000, - 3270000000, - 3260000000, - 3260000000, - 3260000000, - 3260000000, - 3260000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, + 3240000000, + 3240000000, 3230000000, - 3220000000, - 3220000000, - 3220000000, - 3220000000, + 3240000000, + 3230000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3230000000, + 3230000000, + 3230000000, + 3230000000, + 3230000000, + 3230000000, + 3240000000, 3250000000, - 3270000000, - 3280000000, - 3270000000, - 3270000000, - 3260000000, - 3260000000, - 3260000000, - 3270000000, - 3270000000, - 3280000000, - 3280000000, - 3280000000, - 3280000000, - 3270000000, - 3280000000, - 3270000000, - 3280000000, - 3270000000, - 3280000000, - 3280000000, - 3270000000, - 3270000000, - 3270000000, - 3270000000, - 3280000000, + 3230000000, + 3230000000, + 3240000000, + 3230000000, + 3240000000, + 3230000000, + 3210000000, + 3190000000, + 3190000000, + 3190000000, + 3190000000, + 3220000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3230000000, + 3230000000, + 3240000000, 3230000000, 3230000000, 3230000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3240000000, + 3210000000, + 3190000000, + 3190000000, + 3200000000, + 3200000000, 3230000000, - 3260000000, - 3100000000 + 3230000000 ] } } \ No newline at end of file From 71fde9d9c6b946dbf31e9081941acc006dcbf77f Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 15:53:20 +0900 Subject: [PATCH 097/101] Add comments --- perf/impl/go-libp2p/v0.27/main.go | 2 ++ perf/impl/go-libp2p/v0.27/perf.go | 7 ++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 7d3553513..47ad754ca 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -84,6 +84,8 @@ func main() { start := time.Now() h.Peerstore().AddAddrs(serverInfo.ID, serverInfo.Addrs, peerstore.TempAddrTTL) + // Use h.Network().DialPeer() instead of h.Connect to skip waiting for + // identify protocol to finish. _, err = h.Network().DialPeer(context.Background(), serverInfo.ID) if err != nil { panic(err) diff --git a/perf/impl/go-libp2p/v0.27/perf.go b/perf/impl/go-libp2p/v0.27/perf.go index 687372069..d620abd76 100644 --- a/perf/impl/go-libp2p/v0.27/perf.go +++ b/perf/impl/go-libp2p/v0.27/perf.go @@ -96,6 +96,8 @@ func (ps *PerfService) drainStream(ctx context.Context, s network.Stream, buf [] } func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) (time.Duration, time.Duration, error) { + // Use ps.Host.Network().NewStream() instead of ps.Host.NewStream() to + // skip waiting for identify protocol to finish. s, err := ps.Host.Network().NewStream(network.WithNoDial(ctx, "already dialed"), p) if err != nil { return 0, 0, err @@ -107,11 +109,6 @@ func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint6 rw: lzcon, } - // s, err := ps.Host.NewStream(ctx, p, ID) - // if err != nil { - // return 0, 0, err - // } - buf := pool.Get(BlockSize) defer pool.Put(buf) From 28c590b4ecf0ab2be17ddd363fc198d7e2724102 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 17:36:01 +0900 Subject: [PATCH 098/101] Parse --server-address in client mode --- perf/impl/go-libp2p/v0.27/main.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 47ad754ca..1700e5fa5 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -25,6 +25,17 @@ func main() { downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") flag.Parse() + ipPort := strings.Split(*serverAddr, ":") + if len(ipPort) != 2 { + fmt.Println("Invalid server address format. Expected format: 'ip:port'") + return + } + ip := ipPort[0] + port := ipPort[1] + + tcpMultiAddrStr := fmt.Sprintf("/ip4/%s/tcp/%s", ip, port) + quicMultiAddrStr := fmt.Sprintf("/ip4/%s/udp/%s/quic-v1", ip, port) + opts := []libp2p.Option{ // Use TLS only instead of both TLS and Noise. Removes the // additional multistream-select security protocol negotiation. @@ -33,7 +44,7 @@ func main() { } if *runServer { - opts = append(opts, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/udp/4001/quic-v1")) + opts = append(opts, libp2p.ListenAddrStrings(tcpMultiAddrStr, quicMultiAddrStr)) // TODO: Fake identity. For testing only. priv, _, err := crypto.GenerateEd25519Key(&simpleReader{seed: uint8(*secretKeySeed)}) @@ -57,26 +68,17 @@ func main() { select {} // run forever, exit on interrupt } - ipPort := strings.Split(*serverAddr, ":") - if len(ipPort) != 2 { - fmt.Println("Invalid server address format. Expected format: 'ip:port'") - return - } - - ip := ipPort[0] - port := ipPort[1] - var multiAddrStr string switch *transport { case "tcp": - multiAddrStr = fmt.Sprintf("/ip4/%s/tcp/%s/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", ip, port) + multiAddrStr = tcpMultiAddrStr case "quic-v1": - multiAddrStr = fmt.Sprintf("/ip4/%s/udp/%s/quic-v1/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN", ip, port) + multiAddrStr = quicMultiAddrStr default: fmt.Println("Invalid transport. Accepted values: 'tcp' or 'quic-v1'") return } - + multiAddrStr = multiAddrStr + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN" serverInfo, err := peer.AddrInfoFromString(multiAddrStr) if err != nil { panic(err) From d2d1c2bbce8225d9d63289fea223595a26a916c4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 17:36:18 +0900 Subject: [PATCH 099/101] Log building implementations on servers --- perf/runner/src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index d0e056587..48b706903 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -210,6 +210,8 @@ function execCommand(cmd: string): string { } function copyAndBuildPerfImplementations(ip: string) { + console.error(`= Building implementations on ${ip}`); + const stdout = execCommand(`rsync -avz --progress --filter=':- .gitignore' -e "ssh -o StrictHostKeyChecking=no" ../impl ec2-user@${ip}:/home/ec2-user`); console.error(stdout.toString()); From f6b968a80896dff08ca231c3ddb16899a6c3b4a4 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 24 May 2023 17:36:44 +0900 Subject: [PATCH 100/101] fix(go-libp2p): use NewWithoutDefaults to disable Noise --- perf/impl/go-libp2p/v0.27/main.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/perf/impl/go-libp2p/v0.27/main.go b/perf/impl/go-libp2p/v0.27/main.go index 1700e5fa5..a1538d362 100644 --- a/perf/impl/go-libp2p/v0.27/main.go +++ b/perf/impl/go-libp2p/v0.27/main.go @@ -13,6 +13,8 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/peerstore" tls "github.com/libp2p/go-libp2p/p2p/security/tls" + quic "github.com/libp2p/go-libp2p/p2p/transport/quic" + "github.com/libp2p/go-libp2p/p2p/transport/tcp" "github.com/multiformats/go-multiaddr" ) @@ -41,6 +43,16 @@ func main() { // additional multistream-select security protocol negotiation. // Thus makes it easier to compare with TCP+TLS+HTTP/2 libp2p.Security(tls.ID, tls.New), + + libp2p.DefaultListenAddrs, + libp2p.Transport(tcp.NewTCPTransport), + libp2p.Transport(quic.NewTransport), + libp2p.DefaultMuxers, + libp2p.DefaultPeerstore, + libp2p.DefaultResourceManager, + libp2p.DefaultConnectionManager, + libp2p.DefaultMultiaddrResolver, + libp2p.DefaultPrometheusRegisterer, } if *runServer { @@ -52,9 +64,11 @@ func main() { panic(err) } opts = append(opts, libp2p.Identity(priv)) + } else { + opts = append(opts, libp2p.RandomIdentity) } - h, err := libp2p.New(opts...) + h, err := libp2p.NewWithoutDefaults(opts...) if err != nil { panic(err) } From 2cca4a04ea4775696c9c3c99c2abdb212b9b3e6a Mon Sep 17 00:00:00 2001 From: Max Inden Date: Thu, 25 May 2023 09:56:27 +0900 Subject: [PATCH 101/101] Commit latest results --- perf/runner/benchmark-results.json | 4724 ++++++++++++++-------------- 1 file changed, 2362 insertions(+), 2362 deletions(-) diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index e7370ad16..0657c4781 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -7,29 +7,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.071717831, - "uploadSeconds": 1.108251356, - "downloadSeconds": 8.7e-8 + "connectionEstablishedSeconds": 0.070297314, + "uploadSeconds": 0.976105831, + "downloadSeconds": 1.28e-7 }, { - "connectionEstablishedSeconds": 0.06313201, - "uploadSeconds": 0.985241566, - "downloadSeconds": 1.05e-7 + "connectionEstablishedSeconds": 0.061534425, + "uploadSeconds": 0.957481414, + "downloadSeconds": 8.1e-8 }, { - "connectionEstablishedSeconds": 0.066539845, - "uploadSeconds": 1.032252996, - "downloadSeconds": 7.7e-8 + "connectionEstablishedSeconds": 0.060021929, + "uploadSeconds": 0.937863027, + "downloadSeconds": 7.4e-8 }, { - "connectionEstablishedSeconds": 0.06276987, - "uploadSeconds": 0.976620431, - "downloadSeconds": 8.2e-8 + "connectionEstablishedSeconds": 0.063701509, + "uploadSeconds": 0.991100676, + "downloadSeconds": 5.1e-8 }, { - "connectionEstablishedSeconds": 0.065300697, - "uploadSeconds": 1.018646835, - "downloadSeconds": 9.1e-8 + "connectionEstablishedSeconds": 0.066541962, + "uploadSeconds": 1.038524336, + "downloadSeconds": 1.21e-7 } ], "implementation": "quic-go", @@ -39,29 +39,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.126148138, - "uploadSeconds": 35.39770708, - "downloadSeconds": 0.062901647 + "connectionEstablishedSeconds": 0.12788271, + "uploadSeconds": 36.401081612, + "downloadSeconds": 0.062981043 }, { - "connectionEstablishedSeconds": 0.12372451, - "uploadSeconds": 34.877587988, - "downloadSeconds": 0.061690616 + "connectionEstablishedSeconds": 0.122861416, + "uploadSeconds": 34.449560649, + "downloadSeconds": 0.061166454 }, { - "connectionEstablishedSeconds": 0.125053112, - "uploadSeconds": 35.098348121, - "downloadSeconds": 0.062292537 + "connectionEstablishedSeconds": 0.129370637, + "uploadSeconds": 36.264773908, + "downloadSeconds": 0.0644781 }, { - "connectionEstablishedSeconds": 0.123974689, - "uploadSeconds": 34.782441092, - "downloadSeconds": 0.061811206 + "connectionEstablishedSeconds": 0.129144197, + "uploadSeconds": 36.257968261, + "downloadSeconds": 0.064331182 }, { - "connectionEstablishedSeconds": 0.125870163, - "uploadSeconds": 35.341888119, - "downloadSeconds": 0.062707768 + "connectionEstablishedSeconds": 0.129576206, + "uploadSeconds": 36.411659002, + "downloadSeconds": 0.064808922 } ], "implementation": "rust-libp2p", @@ -71,29 +71,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.06387589, - "uploadSeconds": 14.897244537, - "downloadSeconds": 0.000086712 + "connectionEstablishedSeconds": 0.070141303, + "uploadSeconds": 14.198241062, + "downloadSeconds": 0.000052912 }, { - "connectionEstablishedSeconds": 0.064333418, - "uploadSeconds": 10.918767598, - "downloadSeconds": 0.000107009 + "connectionEstablishedSeconds": 0.064929592, + "uploadSeconds": 10.68151263, + "downloadSeconds": 0.000059917 }, { - "connectionEstablishedSeconds": 0.073568486, - "uploadSeconds": 9.286607313, - "downloadSeconds": 0.000220465 + "connectionEstablishedSeconds": 0.064462749, + "uploadSeconds": 26.327155321, + "downloadSeconds": 0.00011333 }, { - "connectionEstablishedSeconds": 0.064221808, - "uploadSeconds": 6.274033928, - "downloadSeconds": 0.000063738 + "connectionEstablishedSeconds": 0.06161635, + "uploadSeconds": 9.109610004, + "downloadSeconds": 0.000124202 }, { - "connectionEstablishedSeconds": 0.063970082, - "uploadSeconds": 13.355328015, - "downloadSeconds": 0.00011874 + "connectionEstablishedSeconds": 0.063525618, + "uploadSeconds": 21.079123439, + "downloadSeconds": 0.000105298 } ], "implementation": "rust-libp2p", @@ -103,29 +103,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.0656414, - "uploadSeconds": 1.441617759, - "downloadSeconds": 0.000192843 + "connectionEstablishedSeconds": 0.065954244, + "uploadSeconds": 1.402745274, + "downloadSeconds": 0.000211507 }, { - "connectionEstablishedSeconds": 0.063041674, - "uploadSeconds": 1.391953849, - "downloadSeconds": 0.000051184 + "connectionEstablishedSeconds": 0.065088775, + "uploadSeconds": 1.449638775, + "downloadSeconds": 0.000058087 }, { - "connectionEstablishedSeconds": 0.062063281, - "uploadSeconds": 1.384806358, - "downloadSeconds": 0.000057135 + "connectionEstablishedSeconds": 0.063314602, + "uploadSeconds": 1.3934497750000001, + "downloadSeconds": 0.000127509 }, { - "connectionEstablishedSeconds": 0.064573601, - "uploadSeconds": 1.424646168, - "downloadSeconds": 0.000048773 + "connectionEstablishedSeconds": 0.065340678, + "uploadSeconds": 1.438934371, + "downloadSeconds": 0.000109151 }, { - "connectionEstablishedSeconds": 0.064452347, - "uploadSeconds": 1.41460567, - "downloadSeconds": 0.000047386 + "connectionEstablishedSeconds": 0.063592102, + "uploadSeconds": 1.395796978, + "downloadSeconds": 0.00008171 } ], "implementation": "rust-libp2p-quinn", @@ -136,28 +136,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.7907368139999997, - "downloadSeconds": 0.000004624 + "uploadSeconds": 2.7865382739999998, + "downloadSeconds": 0.000018388 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.7706807060000003, - "downloadSeconds": 0.00000681 + "uploadSeconds": 2.621148716, + "downloadSeconds": 0.000002242 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 2.719605393, - "downloadSeconds": 0.000004626 + "uploadSeconds": 2.760585642, + "downloadSeconds": 0.000004662 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 3.003131051, - "downloadSeconds": 0.000004275 + "uploadSeconds": 2.806644015, + "downloadSeconds": 0.000019645 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 3.074974594, - "downloadSeconds": 0.000004652 + "uploadSeconds": 2.9810749899999998, + "downloadSeconds": 0.000002576 } ], "implementation": "https", @@ -167,29 +167,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.18356968, - "uploadSeconds": 2.845136064, - "downloadSeconds": 0.121465042 + "connectionEstablishedSeconds": 0.187666955, + "uploadSeconds": 2.824455271, + "downloadSeconds": 0.123028053 }, { - "connectionEstablishedSeconds": 0.194598603, - "uploadSeconds": 2.849080344, - "downloadSeconds": 0.126641813 + "connectionEstablishedSeconds": 0.19545875, + "uploadSeconds": 2.93147859, + "downloadSeconds": 0.127536761 }, { - "connectionEstablishedSeconds": 0.187702518, - "uploadSeconds": 2.859621042, - "downloadSeconds": 0.12183152 + "connectionEstablishedSeconds": 0.18985107, + "uploadSeconds": 2.85914096, + "downloadSeconds": 0.124491918 }, { - "connectionEstablishedSeconds": 0.191923365, - "uploadSeconds": 2.864386991, - "downloadSeconds": 0.124702355 + "connectionEstablishedSeconds": 0.181920988, + "uploadSeconds": 2.7478558299999998, + "downloadSeconds": 0.119709 }, { - "connectionEstablishedSeconds": 0.194006051, - "uploadSeconds": 2.887186679, - "downloadSeconds": 0.125618279 + "connectionEstablishedSeconds": 0.195685163, + "uploadSeconds": 2.955947802, + "downloadSeconds": 0.129634301 } ], "implementation": "go-libp2p", @@ -199,29 +199,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.063861006, - "uploadSeconds": 1.258915335, - "downloadSeconds": 0.060972729 + "connectionEstablishedSeconds": 0.068654638, + "uploadSeconds": 1.252551193, + "downloadSeconds": 0.064037004 }, { - "connectionEstablishedSeconds": 0.066730983, - "uploadSeconds": 1.283791855, - "downloadSeconds": 0.062247951 + "connectionEstablishedSeconds": 0.064522167, + "uploadSeconds": 1.239043305, + "downloadSeconds": 0.060060905 }, { - "connectionEstablishedSeconds": 0.063911766, - "uploadSeconds": 1.229570152, - "downloadSeconds": 0.059556412 + "connectionEstablishedSeconds": 0.06527666, + "uploadSeconds": 1.279113568, + "downloadSeconds": 0.061957179 }, { - "connectionEstablishedSeconds": 0.067878354, - "uploadSeconds": 1.310084448, - "downloadSeconds": 0.063338809 + "connectionEstablishedSeconds": 0.06920229, + "uploadSeconds": 1.3390372, + "downloadSeconds": 0.064796753 }, { - "connectionEstablishedSeconds": 0.065068424, - "uploadSeconds": 1.251689327, - "downloadSeconds": 0.060601996 + "connectionEstablishedSeconds": 0.066522893, + "uploadSeconds": 1.320509869, + "downloadSeconds": 0.064084372 } ], "implementation": "go-libp2p", @@ -241,29 +241,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.063035848, - "uploadSeconds": 5.57e-7, - "downloadSeconds": 1.031684635 + "connectionEstablishedSeconds": 0.066102425, + "uploadSeconds": 6.05e-7, + "downloadSeconds": 1.079131029 }, { - "connectionEstablishedSeconds": 0.062549491, - "uploadSeconds": 6.24e-7, - "downloadSeconds": 1.062655087 + "connectionEstablishedSeconds": 0.063745934, + "uploadSeconds": 6.87e-7, + "downloadSeconds": 1.045033606 }, { - "connectionEstablishedSeconds": 0.063882753, - "uploadSeconds": 6.15e-7, - "downloadSeconds": 1.365721807 + "connectionEstablishedSeconds": 0.064553974, + "uploadSeconds": 5.13e-7, + "downloadSeconds": 1.05987753 }, { - "connectionEstablishedSeconds": 0.068691444, - "uploadSeconds": 6.46e-7, - "downloadSeconds": 1.129898296 + "connectionEstablishedSeconds": 0.06553008, + "uploadSeconds": 6.43e-7, + "downloadSeconds": 1.076902353 }, { - "connectionEstablishedSeconds": 0.063877163, - "uploadSeconds": 5.54e-7, - "downloadSeconds": 1.049462851 + "connectionEstablishedSeconds": 0.062761144, + "uploadSeconds": 6.02e-7, + "downloadSeconds": 1.030542493 } ], "implementation": "quic-go", @@ -273,29 +273,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.125497053, - "uploadSeconds": 0.062505884, - "downloadSeconds": 41.707398634 + "connectionEstablishedSeconds": 0.13057814, + "uploadSeconds": 0.06504925, + "downloadSeconds": 36.728523097 }, { - "connectionEstablishedSeconds": 0.121197039, - "uploadSeconds": 0.060202899, - "downloadSeconds": 34.43093803 + "connectionEstablishedSeconds": 0.124944384, + "uploadSeconds": 0.062065698, + "downloadSeconds": 35.961353068 }, { - "connectionEstablishedSeconds": 0.127645116, - "uploadSeconds": 0.063521098, - "downloadSeconds": 35.914196199 + "connectionEstablishedSeconds": 0.130586181, + "uploadSeconds": 0.064887786, + "downloadSeconds": 42.21106346 }, { - "connectionEstablishedSeconds": 0.129042543, - "uploadSeconds": 0.06410038, - "downloadSeconds": 36.30029051 + "connectionEstablishedSeconds": 0.126708476, + "uploadSeconds": 0.062921055, + "downloadSeconds": 41.79504972 }, { - "connectionEstablishedSeconds": 0.139024871, - "uploadSeconds": 0.069074608, - "downloadSeconds": 39.297212503 + "connectionEstablishedSeconds": 0.126277922, + "uploadSeconds": 0.062710965, + "downloadSeconds": 41.416179838 } ], "implementation": "rust-libp2p", @@ -305,29 +305,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.061232706, - "uploadSeconds": 0.118743292, - "downloadSeconds": 9.754380328 + "connectionEstablishedSeconds": 0.063571426, + "uploadSeconds": 0.122524527, + "downloadSeconds": 14.688501904 }, { - "connectionEstablishedSeconds": 0.066431038, - "uploadSeconds": 0.129401107, - "downloadSeconds": 27.496442621 + "connectionEstablishedSeconds": 0.061588969, + "uploadSeconds": 0.119751648, + "downloadSeconds": 13.676063442 }, { - "connectionEstablishedSeconds": 0.068765541, - "uploadSeconds": 0.134091062, - "downloadSeconds": 28.775083466 + "connectionEstablishedSeconds": 0.062454824, + "uploadSeconds": 0.121421404, + "downloadSeconds": 28.953030009 }, { - "connectionEstablishedSeconds": 0.062047614, - "uploadSeconds": 0.120672787, - "downloadSeconds": 8.824578368 + "connectionEstablishedSeconds": 0.064480155, + "uploadSeconds": 0.125556611, + "downloadSeconds": 13.615676327 }, { - "connectionEstablishedSeconds": 0.063827674, - "uploadSeconds": 0.124235372, - "downloadSeconds": 25.670433799 + "connectionEstablishedSeconds": 0.063835283, + "uploadSeconds": 0.124031403, + "downloadSeconds": 24.377706009 } ], "implementation": "rust-libp2p", @@ -337,29 +337,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.06307016, - "uploadSeconds": 0.121919556, - "downloadSeconds": 1.317938822 + "connectionEstablishedSeconds": 0.06377155, + "uploadSeconds": 0.123363888, + "downloadSeconds": 1.341300474 }, { - "connectionEstablishedSeconds": 0.063818881, - "uploadSeconds": 0.124205443, - "downloadSeconds": 1.348505136 + "connectionEstablishedSeconds": 0.063434258, + "uploadSeconds": 0.123371646, + "downloadSeconds": 1.3334225210000001 }, { - "connectionEstablishedSeconds": 0.06458344, - "uploadSeconds": 0.125787226, - "downloadSeconds": 1.358472583 + "connectionEstablishedSeconds": 0.062023495, + "uploadSeconds": 0.120662695, + "downloadSeconds": 1.317308826 }, { - "connectionEstablishedSeconds": 0.062156734, - "uploadSeconds": 0.120884064, - "downloadSeconds": 1.306500379 + "connectionEstablishedSeconds": 0.066228473, + "uploadSeconds": 0.128940994, + "downloadSeconds": 1.397749371 }, { - "connectionEstablishedSeconds": 0.063961475, - "uploadSeconds": 0.124511573, - "downloadSeconds": 1.345313962 + "connectionEstablishedSeconds": 0.063049748, + "uploadSeconds": 0.122582746, + "downloadSeconds": 1.341124802 } ], "implementation": "rust-libp2p-quinn", @@ -370,28 +370,28 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187973696, - "downloadSeconds": 2.848235973 + "uploadSeconds": 0.186073896, + "downloadSeconds": 2.6670878609999997 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179092659, - "downloadSeconds": 2.597372658 + "uploadSeconds": 0.193873239, + "downloadSeconds": 3.019374899 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186427252, - "downloadSeconds": 2.6870848929999998 + "uploadSeconds": 0.184416829, + "downloadSeconds": 2.793003994 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185136008, - "downloadSeconds": 2.752771338 + "uploadSeconds": 0.192357858, + "downloadSeconds": 2.810105741 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18952669, - "downloadSeconds": 2.80348634 + "uploadSeconds": 0.190407138, + "downloadSeconds": 2.76563917 } ], "implementation": "https", @@ -401,29 +401,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.179393572, - "uploadSeconds": 0.000002311, - "downloadSeconds": 2.832866447 + "connectionEstablishedSeconds": 0.187946812, + "uploadSeconds": 0.000002542, + "downloadSeconds": 3.352702091 }, { - "connectionEstablishedSeconds": 0.19359588, - "uploadSeconds": 0.000003047, - "downloadSeconds": 3.205773539 + "connectionEstablishedSeconds": 0.18968377, + "uploadSeconds": 0.000004511, + "downloadSeconds": 2.947320389 }, { - "connectionEstablishedSeconds": 0.182081015, - "uploadSeconds": 0.000002786, - "downloadSeconds": 2.847979808 + "connectionEstablishedSeconds": 0.193786619, + "uploadSeconds": 0.000026, + "downloadSeconds": 3.02479625 }, { - "connectionEstablishedSeconds": 0.191907804, - "uploadSeconds": 0.000003374, - "downloadSeconds": 3.195657566 + "connectionEstablishedSeconds": 0.188444252, + "uploadSeconds": 0.000002602, + "downloadSeconds": 3.136940616 }, { - "connectionEstablishedSeconds": 0.190046212, - "uploadSeconds": 0.000002577, - "downloadSeconds": 2.9906799 + "connectionEstablishedSeconds": 0.181702222, + "uploadSeconds": 0.000002266, + "downloadSeconds": 2.92347864 } ], "implementation": "go-libp2p", @@ -433,29 +433,29 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065825098, - "uploadSeconds": 0.000003218, - "downloadSeconds": 1.3629588369999999 + "connectionEstablishedSeconds": 0.068277261, + "uploadSeconds": 0.000018181, + "downloadSeconds": 1.375710908 }, { - "connectionEstablishedSeconds": 0.068266897, - "uploadSeconds": 0.000001669, - "downloadSeconds": 1.38042863 + "connectionEstablishedSeconds": 0.068015565, + "uploadSeconds": 0.000001609, + "downloadSeconds": 1.378146646 }, { - "connectionEstablishedSeconds": 0.063680453, - "uploadSeconds": 0.000001863, - "downloadSeconds": 1.328038099 + "connectionEstablishedSeconds": 0.0642284, + "uploadSeconds": 0.00000254, + "downloadSeconds": 1.293543339 }, { - "connectionEstablishedSeconds": 0.06607397, - "uploadSeconds": 0.000002147, - "downloadSeconds": 1.371688504 + "connectionEstablishedSeconds": 0.064465047, + "uploadSeconds": 0.000001623, + "downloadSeconds": 1.447395593 }, { - "connectionEstablishedSeconds": 0.067246739, - "uploadSeconds": 0.000002139, - "downloadSeconds": 1.359028703 + "connectionEstablishedSeconds": 0.064851976, + "uploadSeconds": 0.000001697, + "downloadSeconds": 1.350367435 } ], "implementation": "go-libp2p", @@ -475,504 +475,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065165399, - "uploadSeconds": 0.00000205, - "downloadSeconds": 0.062984402 + "connectionEstablishedSeconds": 0.064751978, + "uploadSeconds": 0.000001965, + "downloadSeconds": 0.062446835 }, { - "connectionEstablishedSeconds": 0.062747394, - "uploadSeconds": 0.000001998, - "downloadSeconds": 0.060839292 + "connectionEstablishedSeconds": 0.064369628, + "uploadSeconds": 9.78e-7, + "downloadSeconds": 0.062578705 }, { - "connectionEstablishedSeconds": 0.064625822, - "uploadSeconds": 0.000002479, - "downloadSeconds": 0.062788394 + "connectionEstablishedSeconds": 0.064172156, + "uploadSeconds": 0.000002109, + "downloadSeconds": 0.062397217 }, { - "connectionEstablishedSeconds": 0.063698972, - "uploadSeconds": 0.000001982, - "downloadSeconds": 0.06184015 + "connectionEstablishedSeconds": 0.062744165, + "uploadSeconds": 0.000001819, + "downloadSeconds": 0.060947384 }, { - "connectionEstablishedSeconds": 0.062634644, - "uploadSeconds": 0.000001991, - "downloadSeconds": 0.060870242 + "connectionEstablishedSeconds": 0.063608696, + "uploadSeconds": 0.000002409, + "downloadSeconds": 0.061858335 }, { - "connectionEstablishedSeconds": 0.064013275, - "uploadSeconds": 0.000001995, - "downloadSeconds": 0.062124273 + "connectionEstablishedSeconds": 0.064578852, + "uploadSeconds": 0.000001965, + "downloadSeconds": 0.062762314 }, { - "connectionEstablishedSeconds": 0.064267083, - "uploadSeconds": 9.64e-7, - "downloadSeconds": 0.062409567 + "connectionEstablishedSeconds": 0.063750336, + "uploadSeconds": 0.000002109, + "downloadSeconds": 0.061983581 }, { - "connectionEstablishedSeconds": 0.062738711, - "uploadSeconds": 0.000001009, - "downloadSeconds": 0.061048678 + "connectionEstablishedSeconds": 0.062759314, + "uploadSeconds": 0.000001921, + "downloadSeconds": 0.060979078 }, { - "connectionEstablishedSeconds": 0.064751569, - "uploadSeconds": 8.54e-7, - "downloadSeconds": 0.062899016 + "connectionEstablishedSeconds": 0.06165765, + "uploadSeconds": 9.47e-7, + "downloadSeconds": 0.060007441 }, { - "connectionEstablishedSeconds": 0.065416862, - "uploadSeconds": 0.000002034, - "downloadSeconds": 0.06361402 + "connectionEstablishedSeconds": 0.065447388, + "uploadSeconds": 0.000001973, + "downloadSeconds": 0.063719339 }, { - "connectionEstablishedSeconds": 0.063444387, - "uploadSeconds": 8.11e-7, - "downloadSeconds": 0.061771271 + "connectionEstablishedSeconds": 0.065495014, + "uploadSeconds": 9.32e-7, + "downloadSeconds": 0.063662471 }, { - "connectionEstablishedSeconds": 0.063137822, - "uploadSeconds": 8.55e-7, - "downloadSeconds": 0.061375102 + "connectionEstablishedSeconds": 0.064261877, + "uploadSeconds": 0.000002008, + "downloadSeconds": 0.062547339 }, { - "connectionEstablishedSeconds": 0.065550564, - "uploadSeconds": 8.8e-7, - "downloadSeconds": 0.063849843 + "connectionEstablishedSeconds": 0.066444556, + "uploadSeconds": 0.000001956, + "downloadSeconds": 0.064616305 }, { - "connectionEstablishedSeconds": 0.064651059, - "uploadSeconds": 8.99e-7, - "downloadSeconds": 0.062754622 + "connectionEstablishedSeconds": 0.065927723, + "uploadSeconds": 0.000001918, + "downloadSeconds": 0.064011682 }, { - "connectionEstablishedSeconds": 0.065312324, - "uploadSeconds": 0.000001972, - "downloadSeconds": 0.063641094 + "connectionEstablishedSeconds": 0.065767091, + "uploadSeconds": 8.66e-7, + "downloadSeconds": 0.063979506 }, { - "connectionEstablishedSeconds": 0.062753236, - "uploadSeconds": 8.91e-7, - "downloadSeconds": 0.06103999 + "connectionEstablishedSeconds": 0.06644492, + "uploadSeconds": 0.000001964, + "downloadSeconds": 0.064624779 }, { - "connectionEstablishedSeconds": 0.064600329, - "uploadSeconds": 0.000001966, - "downloadSeconds": 0.064458711 + "connectionEstablishedSeconds": 0.067616685, + "uploadSeconds": 9.93e-7, + "downloadSeconds": 0.064315283 }, { - "connectionEstablishedSeconds": 0.065615952, - "uploadSeconds": 0.00000198, - "downloadSeconds": 0.063755344 + "connectionEstablishedSeconds": 0.064648078, + "uploadSeconds": 8.86e-7, + "downloadSeconds": 0.062781844 }, { - "connectionEstablishedSeconds": 0.065301512, - "uploadSeconds": 0.000001254, - "downloadSeconds": 0.06361579 + "connectionEstablishedSeconds": 0.060107655, + "uploadSeconds": 0.000001963, + "downloadSeconds": 0.058309479 }, { - "connectionEstablishedSeconds": 0.065926556, - "uploadSeconds": 0.00000202, - "downloadSeconds": 0.064356162 + "connectionEstablishedSeconds": 0.065304135, + "uploadSeconds": 0.000001949, + "downloadSeconds": 0.063783022 }, { - "connectionEstablishedSeconds": 0.064776862, - "uploadSeconds": 0.000002286, - "downloadSeconds": 0.063039969 + "connectionEstablishedSeconds": 0.065603339, + "uploadSeconds": 0.000001949, + "downloadSeconds": 0.063819812 }, { - "connectionEstablishedSeconds": 0.0653571, - "uploadSeconds": 0.000002036, - "downloadSeconds": 0.063505042 + "connectionEstablishedSeconds": 0.065066854, + "uploadSeconds": 0.000001909, + "downloadSeconds": 0.063351459 }, { - "connectionEstablishedSeconds": 0.064668791, - "uploadSeconds": 8.23e-7, - "downloadSeconds": 0.062919029 + "connectionEstablishedSeconds": 0.062264515, + "uploadSeconds": 0.000002194, + "downloadSeconds": 0.060431368 }, { - "connectionEstablishedSeconds": 0.062528538, - "uploadSeconds": 8.27e-7, - "downloadSeconds": 0.06084725 + "connectionEstablishedSeconds": 0.063081703, + "uploadSeconds": 8.1e-7, + "downloadSeconds": 0.061449283 }, { - "connectionEstablishedSeconds": 0.065401851, - "uploadSeconds": 0.000002032, - "downloadSeconds": 0.063516094 + "connectionEstablishedSeconds": 0.062678158, + "uploadSeconds": 0.000001858, + "downloadSeconds": 0.060888549 }, { - "connectionEstablishedSeconds": 0.067184136, - "uploadSeconds": 0.000001065, - "downloadSeconds": 0.065393404 + "connectionEstablishedSeconds": 0.065686849, + "uploadSeconds": 0.000001959, + "downloadSeconds": 0.063887908 }, { - "connectionEstablishedSeconds": 0.064649371, - "uploadSeconds": 8.6e-7, - "downloadSeconds": 0.062844864 + "connectionEstablishedSeconds": 0.065484867, + "uploadSeconds": 7.72e-7, + "downloadSeconds": 0.063815737 }, { - "connectionEstablishedSeconds": 0.064501136, - "uploadSeconds": 0.000001924, - "downloadSeconds": 0.062687518 + "connectionEstablishedSeconds": 0.062981089, + "uploadSeconds": 0.000001946, + "downloadSeconds": 0.061245878 }, { - "connectionEstablishedSeconds": 0.063678919, - "uploadSeconds": 0.000002086, - "downloadSeconds": 0.061926582 + "connectionEstablishedSeconds": 0.063169451, + "uploadSeconds": 0.000001903, + "downloadSeconds": 0.061477289 }, { - "connectionEstablishedSeconds": 0.064837881, - "uploadSeconds": 0.000001932, - "downloadSeconds": 0.063041324 + "connectionEstablishedSeconds": 0.064226782, + "uploadSeconds": 0.000002021, + "downloadSeconds": 0.062439107 }, { - "connectionEstablishedSeconds": 0.065451424, - "uploadSeconds": 9.38e-7, - "downloadSeconds": 0.063633789 + "connectionEstablishedSeconds": 0.067262367, + "uploadSeconds": 0.000001891, + "downloadSeconds": 0.065454886 }, { - "connectionEstablishedSeconds": 0.06614835, - "uploadSeconds": 0.000001994, - "downloadSeconds": 0.064388666 + "connectionEstablishedSeconds": 0.064497, + "uploadSeconds": 9.22e-7, + "downloadSeconds": 0.062909674 }, { - "connectionEstablishedSeconds": 0.065818051, - "uploadSeconds": 0.00000108, - "downloadSeconds": 0.06417327 + "connectionEstablishedSeconds": 0.063489099, + "uploadSeconds": 0.000001997, + "downloadSeconds": 0.061678745 }, { - "connectionEstablishedSeconds": 0.064165866, - "uploadSeconds": 0.000001895, - "downloadSeconds": 0.061931799 + "connectionEstablishedSeconds": 0.064675257, + "uploadSeconds": 8.04e-7, + "downloadSeconds": 0.062282573 }, { - "connectionEstablishedSeconds": 0.065610024, - "uploadSeconds": 7.56e-7, - "downloadSeconds": 0.063755582 + "connectionEstablishedSeconds": 0.065565437, + "uploadSeconds": 0.00000195, + "downloadSeconds": 0.063750759 }, { - "connectionEstablishedSeconds": 0.064895944, - "uploadSeconds": 0.000001911, - "downloadSeconds": 0.062890372 + "connectionEstablishedSeconds": 0.063480697, + "uploadSeconds": 0.000002012, + "downloadSeconds": 0.061626039 }, { - "connectionEstablishedSeconds": 0.063400465, - "uploadSeconds": 9.37e-7, - "downloadSeconds": 0.061724983 + "connectionEstablishedSeconds": 0.065412879, + "uploadSeconds": 7.45e-7, + "downloadSeconds": 0.063621641 }, { - "connectionEstablishedSeconds": 0.062550655, - "uploadSeconds": 0.00000184, - "downloadSeconds": 0.060743791 + "connectionEstablishedSeconds": 0.063473789, + "uploadSeconds": 0.0000019, + "downloadSeconds": 0.061745584 }, { - "connectionEstablishedSeconds": 0.061837061, - "uploadSeconds": 7.97e-7, - "downloadSeconds": 0.060037219 + "connectionEstablishedSeconds": 0.064495907, + "uploadSeconds": 0.000001982, + "downloadSeconds": 0.062785263 }, { - "connectionEstablishedSeconds": 0.063318984, - "uploadSeconds": 9.51e-7, - "downloadSeconds": 0.061501912 + "connectionEstablishedSeconds": 0.065840125, + "uploadSeconds": 0.00000209, + "downloadSeconds": 0.064120456 }, { - "connectionEstablishedSeconds": 0.062755613, - "uploadSeconds": 0.000001847, - "downloadSeconds": 0.060933817 + "connectionEstablishedSeconds": 0.065706276, + "uploadSeconds": 0.000001058, + "downloadSeconds": 0.063804527 }, { - "connectionEstablishedSeconds": 0.064000301, - "uploadSeconds": 0.000001945, - "downloadSeconds": 0.062272194 + "connectionEstablishedSeconds": 0.064814525, + "uploadSeconds": 0.000001968, + "downloadSeconds": 0.06296256 }, { - "connectionEstablishedSeconds": 0.063320814, - "uploadSeconds": 8.07e-7, - "downloadSeconds": 0.061480115 + "connectionEstablishedSeconds": 0.061032044, + "uploadSeconds": 0.000001839, + "downloadSeconds": 0.059348977 }, { - "connectionEstablishedSeconds": 0.063596796, - "uploadSeconds": 0.000002113, - "downloadSeconds": 0.061863084 + "connectionEstablishedSeconds": 0.065201914, + "uploadSeconds": 7.97e-7, + "downloadSeconds": 0.063409635 }, { - "connectionEstablishedSeconds": 0.0626508, - "uploadSeconds": 7.9e-7, - "downloadSeconds": 0.060858716 + "connectionEstablishedSeconds": 0.064642434, + "uploadSeconds": 0.00000181, + "downloadSeconds": 0.062844688 }, { - "connectionEstablishedSeconds": 0.065164927, - "uploadSeconds": 8.62e-7, - "downloadSeconds": 0.06338737 + "connectionEstablishedSeconds": 0.066077649, + "uploadSeconds": 0.000001935, + "downloadSeconds": 0.064318069 }, { - "connectionEstablishedSeconds": 0.065109136, - "uploadSeconds": 0.00000193, - "downloadSeconds": 0.062728035 + "connectionEstablishedSeconds": 0.063682445, + "uploadSeconds": 8.42e-7, + "downloadSeconds": 0.061896631 }, { - "connectionEstablishedSeconds": 0.064769405, - "uploadSeconds": 0.000001872, - "downloadSeconds": 0.062852259 + "connectionEstablishedSeconds": 0.063308459, + "uploadSeconds": 0.000001795, + "downloadSeconds": 0.061484441 }, { - "connectionEstablishedSeconds": 0.061786286, - "uploadSeconds": 8.24e-7, - "downloadSeconds": 0.060027114 + "connectionEstablishedSeconds": 0.059922386, + "uploadSeconds": 0.000001914, + "downloadSeconds": 0.058065268 }, { - "connectionEstablishedSeconds": 0.064935099, - "uploadSeconds": 0.000002051, - "downloadSeconds": 0.063098459 + "connectionEstablishedSeconds": 0.064627417, + "uploadSeconds": 0.000001823, + "downloadSeconds": 0.062800746 }, { - "connectionEstablishedSeconds": 0.065655911, - "uploadSeconds": 8.36e-7, - "downloadSeconds": 0.063901518 + "connectionEstablishedSeconds": 0.064167577, + "uploadSeconds": 0.00000198, + "downloadSeconds": 0.062405582 }, { - "connectionEstablishedSeconds": 0.064747825, - "uploadSeconds": 7.87e-7, - "downloadSeconds": 0.063124483 + "connectionEstablishedSeconds": 0.063558256, + "uploadSeconds": 7.7e-7, + "downloadSeconds": 0.06180833 }, { - "connectionEstablishedSeconds": 0.063503289, - "uploadSeconds": 0.000001984, - "downloadSeconds": 0.061868251 + "connectionEstablishedSeconds": 0.063632947, + "uploadSeconds": 0.000002043, + "downloadSeconds": 0.061918028 }, { - "connectionEstablishedSeconds": 0.061415703, - "uploadSeconds": 0.000001962, - "downloadSeconds": 0.05970872 + "connectionEstablishedSeconds": 0.063844984, + "uploadSeconds": 0.000001799, + "downloadSeconds": 0.062247867 }, { - "connectionEstablishedSeconds": 0.064769602, - "uploadSeconds": 8.4e-7, - "downloadSeconds": 0.063023085 + "connectionEstablishedSeconds": 0.065057619, + "uploadSeconds": 0.000001961, + "downloadSeconds": 0.063216681 }, { - "connectionEstablishedSeconds": 0.065505636, - "uploadSeconds": 8.87e-7, - "downloadSeconds": 0.063739308 + "connectionEstablishedSeconds": 0.062540966, + "uploadSeconds": 8.96e-7, + "downloadSeconds": 0.060688495 }, { - "connectionEstablishedSeconds": 0.06451846, - "uploadSeconds": 9.46e-7, - "downloadSeconds": 0.062635088 + "connectionEstablishedSeconds": 0.064904633, + "uploadSeconds": 0.000001967, + "downloadSeconds": 0.063127793 }, { - "connectionEstablishedSeconds": 0.066384201, - "uploadSeconds": 0.000002059, - "downloadSeconds": 0.063873253 + "connectionEstablishedSeconds": 0.063064295, + "uploadSeconds": 7.88e-7, + "downloadSeconds": 0.060478559 }, { - "connectionEstablishedSeconds": 0.062558555, - "uploadSeconds": 0.000001889, - "downloadSeconds": 0.060869005 + "connectionEstablishedSeconds": 0.064051755, + "uploadSeconds": 0.00000179, + "downloadSeconds": 0.062258241 }, { - "connectionEstablishedSeconds": 0.066144963, - "uploadSeconds": 0.000001031, - "downloadSeconds": 0.064446439 + "connectionEstablishedSeconds": 0.065675425, + "uploadSeconds": 0.000001966, + "downloadSeconds": 0.06396088 }, { - "connectionEstablishedSeconds": 0.064371163, - "uploadSeconds": 0.000001844, - "downloadSeconds": 0.062515291 + "connectionEstablishedSeconds": 0.066136074, + "uploadSeconds": 8.33e-7, + "downloadSeconds": 0.064474014 }, { - "connectionEstablishedSeconds": 0.064233048, - "uploadSeconds": 0.000001994, - "downloadSeconds": 0.0624386 + "connectionEstablishedSeconds": 0.064002243, + "uploadSeconds": 8.18e-7, + "downloadSeconds": 0.062341859 }, { - "connectionEstablishedSeconds": 0.06191039, - "uploadSeconds": 0.00000197, - "downloadSeconds": 0.060132284 + "connectionEstablishedSeconds": 0.063851631, + "uploadSeconds": 0.000001997, + "downloadSeconds": 0.0621131 }, { - "connectionEstablishedSeconds": 0.064568576, - "uploadSeconds": 0.000002053, - "downloadSeconds": 0.062796254 + "connectionEstablishedSeconds": 0.064506957, + "uploadSeconds": 0.00000189, + "downloadSeconds": 0.062899723 }, { - "connectionEstablishedSeconds": 0.066758576, - "uploadSeconds": 8.63e-7, - "downloadSeconds": 0.064851693 + "connectionEstablishedSeconds": 0.062909183, + "uploadSeconds": 0.000001904, + "downloadSeconds": 0.061122555 }, { - "connectionEstablishedSeconds": 0.061160558, - "uploadSeconds": 0.000001989, - "downloadSeconds": 0.059307607 + "connectionEstablishedSeconds": 0.065556422, + "uploadSeconds": 0.00000199, + "downloadSeconds": 0.06383543 }, { - "connectionEstablishedSeconds": 0.063013566, - "uploadSeconds": 0.000002047, - "downloadSeconds": 0.061166608 + "connectionEstablishedSeconds": 0.06365363, + "uploadSeconds": 0.000002292, + "downloadSeconds": 0.062093565 }, { - "connectionEstablishedSeconds": 0.062846489, - "uploadSeconds": 0.000001952, - "downloadSeconds": 0.0610489 + "connectionEstablishedSeconds": 0.064333966, + "uploadSeconds": 0.000001921, + "downloadSeconds": 0.062500201 }, { - "connectionEstablishedSeconds": 0.063905027, - "uploadSeconds": 0.000001906, - "downloadSeconds": 0.062143314 + "connectionEstablishedSeconds": 0.063589419, + "uploadSeconds": 0.000002079, + "downloadSeconds": 0.061868455 }, { - "connectionEstablishedSeconds": 0.062881868, - "uploadSeconds": 0.000001966, - "downloadSeconds": 0.061308403 + "connectionEstablishedSeconds": 0.062189631, + "uploadSeconds": 0.00000193, + "downloadSeconds": 0.0606924 }, { - "connectionEstablishedSeconds": 0.064227255, - "uploadSeconds": 0.000001957, - "downloadSeconds": 0.06239708 + "connectionEstablishedSeconds": 0.063825349, + "uploadSeconds": 6.95e-7, + "downloadSeconds": 0.06204725 }, { - "connectionEstablishedSeconds": 0.064044998, - "uploadSeconds": 0.000001985, - "downloadSeconds": 0.062253102 + "connectionEstablishedSeconds": 0.063109212, + "uploadSeconds": 0.000001852, + "downloadSeconds": 0.061355714 }, { - "connectionEstablishedSeconds": 0.062412245, - "uploadSeconds": 0.000002063, - "downloadSeconds": 0.060736469 + "connectionEstablishedSeconds": 0.062551758, + "uploadSeconds": 0.000001978, + "downloadSeconds": 0.060794018 }, { - "connectionEstablishedSeconds": 0.063499965, - "uploadSeconds": 0.000001956, - "downloadSeconds": 0.061751684 + "connectionEstablishedSeconds": 0.064215033, + "uploadSeconds": 8.48e-7, + "downloadSeconds": 0.062380982 }, { - "connectionEstablishedSeconds": 0.063699321, - "uploadSeconds": 0.000001905, - "downloadSeconds": 0.061931416 + "connectionEstablishedSeconds": 0.064608427, + "uploadSeconds": 0.000001923, + "downloadSeconds": 0.062862131 }, { - "connectionEstablishedSeconds": 0.066367568, - "uploadSeconds": 0.000001943, - "downloadSeconds": 0.064741811 + "connectionEstablishedSeconds": 0.063678964, + "uploadSeconds": 0.000001883, + "downloadSeconds": 0.061903887 }, { - "connectionEstablishedSeconds": 0.066423741, - "uploadSeconds": 8.75e-7, - "downloadSeconds": 0.064588142 + "connectionEstablishedSeconds": 0.066294745, + "uploadSeconds": 0.000001903, + "downloadSeconds": 0.064500571 }, { - "connectionEstablishedSeconds": 0.063184712, - "uploadSeconds": 0.000001091, - "downloadSeconds": 0.061426575 + "connectionEstablishedSeconds": 0.061508703, + "uploadSeconds": 0.000001906, + "downloadSeconds": 0.059627627 }, { - "connectionEstablishedSeconds": 0.062697375, - "uploadSeconds": 0.000002063, - "downloadSeconds": 0.061594337 + "connectionEstablishedSeconds": 0.062808156, + "uploadSeconds": 0.00000188, + "downloadSeconds": 0.060939134 }, { - "connectionEstablishedSeconds": 0.065604173, - "uploadSeconds": 0.000001958, - "downloadSeconds": 0.063896418 + "connectionEstablishedSeconds": 0.061670305, + "uploadSeconds": 0.000002104, + "downloadSeconds": 0.059862602 }, { - "connectionEstablishedSeconds": 0.063786339, - "uploadSeconds": 0.000001924, - "downloadSeconds": 0.061962591 + "connectionEstablishedSeconds": 0.064523911, + "uploadSeconds": 0.000001819, + "downloadSeconds": 0.062845514 }, { - "connectionEstablishedSeconds": 0.064901403, - "uploadSeconds": 8.44e-7, - "downloadSeconds": 0.063061015 + "connectionEstablishedSeconds": 0.062908637, + "uploadSeconds": 0.000001962, + "downloadSeconds": 0.06119366 }, { - "connectionEstablishedSeconds": 0.066902795, - "uploadSeconds": 0.000002142, - "downloadSeconds": 0.065148918 + "connectionEstablishedSeconds": 0.064118052, + "uploadSeconds": 8.67e-7, + "downloadSeconds": 0.062346119 }, { - "connectionEstablishedSeconds": 0.06681438, - "uploadSeconds": 9.44e-7, - "downloadSeconds": 0.06453611 + "connectionEstablishedSeconds": 0.062284829, + "uploadSeconds": 8.69e-7, + "downloadSeconds": 0.060471826 }, { - "connectionEstablishedSeconds": 0.06516872, - "uploadSeconds": 0.000001025, - "downloadSeconds": 0.063345599 + "connectionEstablishedSeconds": 0.065628805, + "uploadSeconds": 9.51e-7, + "downloadSeconds": 0.064255004 }, { - "connectionEstablishedSeconds": 0.065608415, - "uploadSeconds": 8.83e-7, - "downloadSeconds": 0.063954477 + "connectionEstablishedSeconds": 0.063255442, + "uploadSeconds": 0.000001919, + "downloadSeconds": 0.061307355 }, { - "connectionEstablishedSeconds": 0.063050374, - "uploadSeconds": 0.0000019, - "downloadSeconds": 0.061264983 + "connectionEstablishedSeconds": 0.062338916, + "uploadSeconds": 0.000001877, + "downloadSeconds": 0.060713508 }, { - "connectionEstablishedSeconds": 0.06506769, - "uploadSeconds": 0.000001938, - "downloadSeconds": 0.06324869 + "connectionEstablishedSeconds": 0.066092234, + "uploadSeconds": 8.77e-7, + "downloadSeconds": 0.064241899 }, { - "connectionEstablishedSeconds": 0.063733822, - "uploadSeconds": 8.25e-7, - "downloadSeconds": 0.06194249 + "connectionEstablishedSeconds": 0.065546715, + "uploadSeconds": 8.61e-7, + "downloadSeconds": 0.063785994 }, { - "connectionEstablishedSeconds": 0.06545029, - "uploadSeconds": 0.00000198, - "downloadSeconds": 0.063731531 + "connectionEstablishedSeconds": 0.065282245, + "uploadSeconds": 8.22e-7, + "downloadSeconds": 0.063577701 }, { - "connectionEstablishedSeconds": 0.063806752, - "uploadSeconds": 0.000001977, - "downloadSeconds": 0.062047961 + "connectionEstablishedSeconds": 0.066437563, + "uploadSeconds": 8.53e-7, + "downloadSeconds": 0.064542893 }, { - "connectionEstablishedSeconds": 0.065782118, - "uploadSeconds": 7.98e-7, - "downloadSeconds": 0.063986379 + "connectionEstablishedSeconds": 0.062982522, + "uploadSeconds": 0.000001949, + "downloadSeconds": 0.061157305 }, { - "connectionEstablishedSeconds": 0.065587017, - "uploadSeconds": 0.000001947, - "downloadSeconds": 0.063807411 + "connectionEstablishedSeconds": 0.064840196, + "uploadSeconds": 9.37e-7, + "downloadSeconds": 0.063083308 }, { - "connectionEstablishedSeconds": 0.064806976, - "uploadSeconds": 0.000001822, - "downloadSeconds": 0.063000614 + "connectionEstablishedSeconds": 0.062328395, + "uploadSeconds": 8.67e-7, + "downloadSeconds": 0.060646891 }, { - "connectionEstablishedSeconds": 0.063191426, - "uploadSeconds": 8.52e-7, - "downloadSeconds": 0.061417895 + "connectionEstablishedSeconds": 0.065517896, + "uploadSeconds": 8.26e-7, + "downloadSeconds": 0.063675396 }, { - "connectionEstablishedSeconds": 0.066138367, - "uploadSeconds": 0.000001897, - "downloadSeconds": 0.064314152 + "connectionEstablishedSeconds": 0.06468413, + "uploadSeconds": 0.000002081, + "downloadSeconds": 0.062942522 }, { - "connectionEstablishedSeconds": 0.06372295, - "uploadSeconds": 0.000001952, - "downloadSeconds": 0.061796685 + "connectionEstablishedSeconds": 0.062145911, + "uploadSeconds": 0.000002038, + "downloadSeconds": 0.060389068 }, { - "connectionEstablishedSeconds": 0.064172483, - "uploadSeconds": 0.00000199, - "downloadSeconds": 0.062531066 + "connectionEstablishedSeconds": 0.06232188, + "uploadSeconds": 0.000002008, + "downloadSeconds": 0.059270087 }, { - "connectionEstablishedSeconds": 0.069595187, - "uploadSeconds": 8.8e-7, - "downloadSeconds": 0.0677336 + "connectionEstablishedSeconds": 0.064469934, + "uploadSeconds": 0.000001808, + "downloadSeconds": 0.062752466 }, { - "connectionEstablishedSeconds": 0.065298142, - "uploadSeconds": 0.000002023, - "downloadSeconds": 0.063484516 + "connectionEstablishedSeconds": 0.062709635, + "uploadSeconds": 0.000002034, + "downloadSeconds": 0.060945351 } ], "implementation": "quic-go", @@ -982,504 +982,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.128782283, - "uploadSeconds": 0.064142782, - "downloadSeconds": 0.064041615 + "connectionEstablishedSeconds": 0.120934675, + "uploadSeconds": 0.060318856, + "downloadSeconds": 0.060104499 }, { - "connectionEstablishedSeconds": 0.122877358, - "uploadSeconds": 0.061015723, - "downloadSeconds": 0.061037874 + "connectionEstablishedSeconds": 0.128061517, + "uploadSeconds": 0.063605463, + "downloadSeconds": 0.063664715 }, { - "connectionEstablishedSeconds": 0.126806208, - "uploadSeconds": 0.063001184, - "downloadSeconds": 0.06303076 + "connectionEstablishedSeconds": 0.127658799, + "uploadSeconds": 0.063452656, + "downloadSeconds": 0.063454888 }, { - "connectionEstablishedSeconds": 0.127298349, - "uploadSeconds": 0.063292919, - "downloadSeconds": 0.063327184 + "connectionEstablishedSeconds": 0.125617667, + "uploadSeconds": 0.062401489, + "downloadSeconds": 0.062467259 }, { - "connectionEstablishedSeconds": 0.124117775, - "uploadSeconds": 0.061674621, - "downloadSeconds": 0.061733501 + "connectionEstablishedSeconds": 0.124154207, + "uploadSeconds": 0.061699826, + "downloadSeconds": 0.061724492 }, { - "connectionEstablishedSeconds": 0.11815247, - "uploadSeconds": 0.058715189, - "downloadSeconds": 0.058717916 + "connectionEstablishedSeconds": 0.127846138, + "uploadSeconds": 0.063515977, + "downloadSeconds": 0.063531759 }, { - "connectionEstablishedSeconds": 0.130421381, - "uploadSeconds": 0.064805873, - "downloadSeconds": 0.064916393 + "connectionEstablishedSeconds": 0.120729252, + "uploadSeconds": 0.059916196, + "downloadSeconds": 0.060001179 }, { - "connectionEstablishedSeconds": 0.120928897, - "uploadSeconds": 0.060078751, - "downloadSeconds": 0.060161814 + "connectionEstablishedSeconds": 0.127417463, + "uploadSeconds": 0.063285207, + "downloadSeconds": 0.063336793 }, { - "connectionEstablishedSeconds": 0.1208453, - "uploadSeconds": 0.059910829, - "downloadSeconds": 0.059957343 + "connectionEstablishedSeconds": 0.121040576, + "uploadSeconds": 0.060114305, + "downloadSeconds": 0.060168989 }, { - "connectionEstablishedSeconds": 0.129701024, - "uploadSeconds": 0.064453217, - "downloadSeconds": 0.064540534 + "connectionEstablishedSeconds": 0.124943479, + "uploadSeconds": 0.062034017, + "downloadSeconds": 0.062080267 }, { - "connectionEstablishedSeconds": 0.122099613, - "uploadSeconds": 0.060642482, - "downloadSeconds": 0.060735635 + "connectionEstablishedSeconds": 0.122475451, + "uploadSeconds": 0.060855996, + "downloadSeconds": 0.060879618 }, { - "connectionEstablishedSeconds": 0.125861895, - "uploadSeconds": 0.062546269, - "downloadSeconds": 0.062614625 + "connectionEstablishedSeconds": 0.1236592, + "uploadSeconds": 0.0611343, + "downloadSeconds": 0.061200789 }, { - "connectionEstablishedSeconds": 0.121033173, - "uploadSeconds": 0.060119234, - "downloadSeconds": 0.060325896 + "connectionEstablishedSeconds": 0.123640147, + "uploadSeconds": 0.061384688, + "downloadSeconds": 0.061466515 }, { - "connectionEstablishedSeconds": 0.12897512, - "uploadSeconds": 0.064099577, - "downloadSeconds": 0.064192461 + "connectionEstablishedSeconds": 0.118841315, + "uploadSeconds": 0.05895918, + "downloadSeconds": 0.059036116 }, { - "connectionEstablishedSeconds": 0.12537412, - "uploadSeconds": 0.062271465, - "downloadSeconds": 0.062348898 + "connectionEstablishedSeconds": 0.129343271, + "uploadSeconds": 0.064244239, + "downloadSeconds": 0.064332254 }, { - "connectionEstablishedSeconds": 0.122704549, - "uploadSeconds": 0.060939701, - "downloadSeconds": 0.061026676 + "connectionEstablishedSeconds": 0.126433629, + "uploadSeconds": 0.062770414, + "downloadSeconds": 0.062846733 }, { - "connectionEstablishedSeconds": 0.121299417, - "uploadSeconds": 0.060644079, - "downloadSeconds": 0.060340429 + "connectionEstablishedSeconds": 0.123173028, + "uploadSeconds": 0.061131114, + "downloadSeconds": 0.061217306 }, { - "connectionEstablishedSeconds": 0.129463275, - "uploadSeconds": 0.064330819, - "downloadSeconds": 0.064387025 + "connectionEstablishedSeconds": 0.125137804, + "uploadSeconds": 0.062109799, + "downloadSeconds": 0.062277841 }, { - "connectionEstablishedSeconds": 0.118009564, - "uploadSeconds": 0.058634205, - "downloadSeconds": 0.058707631 + "connectionEstablishedSeconds": 0.122518993, + "uploadSeconds": 0.060827891, + "downloadSeconds": 0.060882129 }, { - "connectionEstablishedSeconds": 0.126005819, - "uploadSeconds": 0.06262453, - "downloadSeconds": 0.062693139 + "connectionEstablishedSeconds": 0.127896226, + "uploadSeconds": 0.063507707, + "downloadSeconds": 0.063647707 }, { - "connectionEstablishedSeconds": 0.123951592, - "uploadSeconds": 0.061564866, - "downloadSeconds": 0.061667522 + "connectionEstablishedSeconds": 0.126060862, + "uploadSeconds": 0.062561714, + "downloadSeconds": 0.062696571 }, { - "connectionEstablishedSeconds": 0.130207645, - "uploadSeconds": 0.064686677, - "downloadSeconds": 0.064783184 + "connectionEstablishedSeconds": 0.120696113, + "uploadSeconds": 0.059911559, + "downloadSeconds": 0.059996766 }, { - "connectionEstablishedSeconds": 0.122590137, - "uploadSeconds": 0.060902271, - "downloadSeconds": 0.060967625 + "connectionEstablishedSeconds": 0.129053947, + "uploadSeconds": 0.064217787, + "downloadSeconds": 0.064187147 }, { - "connectionEstablishedSeconds": 0.121903049, - "uploadSeconds": 0.060545381, - "downloadSeconds": 0.060599883 + "connectionEstablishedSeconds": 0.124066876, + "uploadSeconds": 0.061617166, + "downloadSeconds": 0.061736398 }, { - "connectionEstablishedSeconds": 0.127654451, - "uploadSeconds": 0.063419366, - "downloadSeconds": 0.063509647 + "connectionEstablishedSeconds": 0.125927228, + "uploadSeconds": 0.062530847, + "downloadSeconds": 0.062595748 }, { - "connectionEstablishedSeconds": 0.123890299, - "uploadSeconds": 0.061515197, - "downloadSeconds": 0.061600551 + "connectionEstablishedSeconds": 0.128120761, + "uploadSeconds": 0.063630588, + "downloadSeconds": 0.063702889 }, { - "connectionEstablishedSeconds": 0.127159301, - "uploadSeconds": 0.063216999, - "downloadSeconds": 0.063270615 + "connectionEstablishedSeconds": 0.120337392, + "uploadSeconds": 0.059725874, + "downloadSeconds": 0.059786297 }, { - "connectionEstablishedSeconds": 0.11853953, - "uploadSeconds": 0.058840163, - "downloadSeconds": 0.058910879 + "connectionEstablishedSeconds": 0.125247067, + "uploadSeconds": 0.062183868, + "downloadSeconds": 0.281597541 }, { - "connectionEstablishedSeconds": 0.125482649, - "uploadSeconds": 0.062332114, - "downloadSeconds": 0.062400346 + "connectionEstablishedSeconds": 0.123262912, + "uploadSeconds": 0.061193402, + "downloadSeconds": 0.061281943 }, { - "connectionEstablishedSeconds": 0.122352409, - "uploadSeconds": 0.060781148, - "downloadSeconds": 0.060850876 + "connectionEstablishedSeconds": 0.125235129, + "uploadSeconds": 0.062211734, + "downloadSeconds": 0.062275937 }, { - "connectionEstablishedSeconds": 0.127330874, - "uploadSeconds": 0.063281691, - "downloadSeconds": 0.063333099 + "connectionEstablishedSeconds": 0.123164681, + "uploadSeconds": 0.061163995, + "downloadSeconds": 0.061252078 }, { - "connectionEstablishedSeconds": 0.125958156, - "uploadSeconds": 0.062593238, - "downloadSeconds": 0.062644244 + "connectionEstablishedSeconds": 0.12804124, + "uploadSeconds": 0.063571143, + "downloadSeconds": 0.063657599 }, { - "connectionEstablishedSeconds": 0.126108225, - "uploadSeconds": 0.062657803, - "downloadSeconds": 0.062761149 + "connectionEstablishedSeconds": 0.123137264, + "uploadSeconds": 0.061164433, + "downloadSeconds": 0.061262922 }, { - "connectionEstablishedSeconds": 0.120901849, - "uploadSeconds": 0.06002898, - "downloadSeconds": 0.060096329 + "connectionEstablishedSeconds": 0.124465393, + "uploadSeconds": 0.061852565, + "downloadSeconds": 0.061908292 }, { - "connectionEstablishedSeconds": 0.130562683, - "uploadSeconds": 0.064496581, - "downloadSeconds": 0.064553639 + "connectionEstablishedSeconds": 0.125980795, + "uploadSeconds": 0.062563852, + "downloadSeconds": 0.062633138 }, { - "connectionEstablishedSeconds": 0.126918076, - "uploadSeconds": 0.063321541, - "downloadSeconds": 0.063453397 + "connectionEstablishedSeconds": 0.124921288, + "uploadSeconds": 0.062041248, + "downloadSeconds": 0.062088885 }, { - "connectionEstablishedSeconds": 0.12198058, - "uploadSeconds": 0.06060065, - "downloadSeconds": 0.060660093 + "connectionEstablishedSeconds": 0.121878166, + "uploadSeconds": 0.060482514, + "downloadSeconds": 0.060604527 }, { - "connectionEstablishedSeconds": 0.1259285, - "uploadSeconds": 0.062543989, - "downloadSeconds": 0.062632145 + "connectionEstablishedSeconds": 0.125525756, + "uploadSeconds": 0.062363834, + "downloadSeconds": 0.062414314 }, { - "connectionEstablishedSeconds": 0.12017305, - "uploadSeconds": 0.059617034, - "downloadSeconds": 0.059714616 + "connectionEstablishedSeconds": 0.128761013, + "uploadSeconds": 0.063946436, + "downloadSeconds": 0.064037895 }, { - "connectionEstablishedSeconds": 0.120856119, - "uploadSeconds": 0.0600165, - "downloadSeconds": 0.060091443 + "connectionEstablishedSeconds": 0.122879624, + "uploadSeconds": 0.060991367, + "downloadSeconds": 0.061087944 }, { - "connectionEstablishedSeconds": 0.126045508, - "uploadSeconds": 0.06261744, - "downloadSeconds": 0.062673731 + "connectionEstablishedSeconds": 0.123025618, + "uploadSeconds": 0.061063762, + "downloadSeconds": 0.06114214 }, { - "connectionEstablishedSeconds": 0.124257681, - "uploadSeconds": 0.061677647, - "downloadSeconds": 0.061778575 + "connectionEstablishedSeconds": 0.127292488, + "uploadSeconds": 0.06321786, + "downloadSeconds": 0.063284921 }, { - "connectionEstablishedSeconds": 0.125857894, - "uploadSeconds": 0.062652721, - "downloadSeconds": 0.062597471 + "connectionEstablishedSeconds": 0.122220021, + "uploadSeconds": 0.060705551, + "downloadSeconds": 0.060791717 }, { - "connectionEstablishedSeconds": 0.122715896, - "uploadSeconds": 0.060923454, - "downloadSeconds": 0.06102335 + "connectionEstablishedSeconds": 0.130945698, + "uploadSeconds": 0.065055162, + "downloadSeconds": 0.065136451 }, { - "connectionEstablishedSeconds": 0.126295478, - "uploadSeconds": 0.062703852, - "downloadSeconds": 0.062786489 + "connectionEstablishedSeconds": 0.126904364, + "uploadSeconds": 0.062972605, + "downloadSeconds": 0.062994862 }, { - "connectionEstablishedSeconds": 0.130609852, - "uploadSeconds": 0.0648943, - "downloadSeconds": 0.064971453 + "connectionEstablishedSeconds": 0.127727215, + "uploadSeconds": 0.063402176, + "downloadSeconds": 0.06346753 }, { - "connectionEstablishedSeconds": 0.124722058, - "uploadSeconds": 0.061948955, - "downloadSeconds": 0.062011269 + "connectionEstablishedSeconds": 0.121838446, + "uploadSeconds": 0.060497519, + "downloadSeconds": 0.060547155 }, { - "connectionEstablishedSeconds": 0.128852791, - "uploadSeconds": 0.064004153, - "downloadSeconds": 0.064074731 + "connectionEstablishedSeconds": 0.122744381, + "uploadSeconds": 0.060963721, + "downloadSeconds": 0.061094253 }, { - "connectionEstablishedSeconds": 0.129624863, - "uploadSeconds": 0.064394522, - "downloadSeconds": 0.064471689 + "connectionEstablishedSeconds": 0.127691052, + "uploadSeconds": 0.063357898, + "downloadSeconds": 0.063426201 }, { - "connectionEstablishedSeconds": 0.129167269, - "uploadSeconds": 0.064227411, - "downloadSeconds": 0.064319623 + "connectionEstablishedSeconds": 0.120310544, + "uploadSeconds": 0.059725696, + "downloadSeconds": 0.059788932 }, { - "connectionEstablishedSeconds": 0.124525167, - "uploadSeconds": 0.061863103, - "downloadSeconds": 0.061928295 + "connectionEstablishedSeconds": 0.122420557, + "uploadSeconds": 0.060766143, + "downloadSeconds": 0.060826232 }, { - "connectionEstablishedSeconds": 0.127854544, - "uploadSeconds": 0.063500323, - "downloadSeconds": 0.063627182 + "connectionEstablishedSeconds": 0.125849669, + "uploadSeconds": 0.062454754, + "downloadSeconds": 0.062558146 }, { - "connectionEstablishedSeconds": 0.118824595, - "uploadSeconds": 0.059012971, - "downloadSeconds": 0.059077709 + "connectionEstablishedSeconds": 0.124735161, + "uploadSeconds": 0.061991959, + "downloadSeconds": 0.062021647 }, { - "connectionEstablishedSeconds": 0.12448396, - "uploadSeconds": 0.061848909, - "downloadSeconds": 0.061928463 + "connectionEstablishedSeconds": 0.131121068, + "uploadSeconds": 0.065110347, + "downloadSeconds": 0.065198194 }, { - "connectionEstablishedSeconds": 0.125085891, - "uploadSeconds": 0.062138362, - "downloadSeconds": 0.062185374 + "connectionEstablishedSeconds": 0.123359776, + "uploadSeconds": 0.061250163, + "downloadSeconds": 0.06132682 }, { - "connectionEstablishedSeconds": 0.120385765, - "uploadSeconds": 0.059740462, - "downloadSeconds": 0.059817489 + "connectionEstablishedSeconds": 0.118813692, + "uploadSeconds": 0.058992344, + "downloadSeconds": 0.059054347 }, { - "connectionEstablishedSeconds": 0.126787493, - "uploadSeconds": 0.063007284, - "downloadSeconds": 0.063050622 + "connectionEstablishedSeconds": 0.119864335, + "uploadSeconds": 0.059497153, + "downloadSeconds": 0.059581931 }, { - "connectionEstablishedSeconds": 0.127343774, - "uploadSeconds": 0.0632535, - "downloadSeconds": 0.06330645 + "connectionEstablishedSeconds": 0.126542452, + "uploadSeconds": 0.06282126, + "downloadSeconds": 0.062886158 }, { - "connectionEstablishedSeconds": 0.129443303, - "uploadSeconds": 0.064301956, - "downloadSeconds": 0.064416941 + "connectionEstablishedSeconds": 0.123810888, + "uploadSeconds": 0.061499964, + "downloadSeconds": 0.06154741 }, { - "connectionEstablishedSeconds": 0.12880829, - "uploadSeconds": 0.063989307, - "downloadSeconds": 0.064044952 + "connectionEstablishedSeconds": 0.12587658, + "uploadSeconds": 0.062511492, + "downloadSeconds": 0.062575783 }, { - "connectionEstablishedSeconds": 0.125715137, - "uploadSeconds": 0.062466058, - "downloadSeconds": 0.062509002 + "connectionEstablishedSeconds": 0.128565419, + "uploadSeconds": 0.06385599, + "downloadSeconds": 0.063953685 }, { - "connectionEstablishedSeconds": 0.130802753, - "uploadSeconds": 0.06499956, - "downloadSeconds": 0.065050477 + "connectionEstablishedSeconds": 0.124656418, + "uploadSeconds": 0.061917427, + "downloadSeconds": 0.061976147 }, { - "connectionEstablishedSeconds": 0.127359533, - "uploadSeconds": 0.06326897, - "downloadSeconds": 0.063325505 + "connectionEstablishedSeconds": 0.125494283, + "uploadSeconds": 0.06232114, + "downloadSeconds": 0.062370385 }, { - "connectionEstablishedSeconds": 0.125144649, - "uploadSeconds": 0.06215178, - "downloadSeconds": 0.062216615 + "connectionEstablishedSeconds": 0.124625158, + "uploadSeconds": 0.061885121, + "downloadSeconds": 0.061940325 }, { - "connectionEstablishedSeconds": 0.128044962, - "uploadSeconds": 0.063625884, - "downloadSeconds": 0.063674575 + "connectionEstablishedSeconds": 0.125954686, + "uploadSeconds": 0.062569357, + "downloadSeconds": 0.06262672 }, { - "connectionEstablishedSeconds": 0.12984098, - "uploadSeconds": 0.064508148, - "downloadSeconds": 0.064584498 + "connectionEstablishedSeconds": 0.12927773, + "uploadSeconds": 0.064277478, + "downloadSeconds": 0.064313302 }, { - "connectionEstablishedSeconds": 0.127962304, - "uploadSeconds": 0.063610496, - "downloadSeconds": 0.063675836 + "connectionEstablishedSeconds": 0.127408792, + "uploadSeconds": 0.063302092, + "downloadSeconds": 0.063400735 }, { - "connectionEstablishedSeconds": 0.120000642, - "uploadSeconds": 0.059590507, - "downloadSeconds": 0.059647934 + "connectionEstablishedSeconds": 0.127741644, + "uploadSeconds": 0.063456966, + "downloadSeconds": 0.063505067 }, { - "connectionEstablishedSeconds": 0.125749348, - "uploadSeconds": 0.062478223, - "downloadSeconds": 0.062530638 + "connectionEstablishedSeconds": 0.128843782, + "uploadSeconds": 0.063830003, + "downloadSeconds": 0.06391866 }, { - "connectionEstablishedSeconds": 0.127441701, - "uploadSeconds": 0.063300783, - "downloadSeconds": 0.063393374 + "connectionEstablishedSeconds": 0.123434963, + "uploadSeconds": 0.061278556, + "downloadSeconds": 0.061338622 }, { - "connectionEstablishedSeconds": 0.123424165, - "uploadSeconds": 0.061305335, - "downloadSeconds": 0.06136762 + "connectionEstablishedSeconds": 0.127779544, + "uploadSeconds": 0.063336665, + "downloadSeconds": 0.063413851 }, { - "connectionEstablishedSeconds": 0.12304951, - "uploadSeconds": 0.061146982, - "downloadSeconds": 0.06118203 + "connectionEstablishedSeconds": 0.124132235, + "uploadSeconds": 0.061671306, + "downloadSeconds": 0.061763426 }, { - "connectionEstablishedSeconds": 0.125308047, - "uploadSeconds": 0.062224494, - "downloadSeconds": 0.062323807 + "connectionEstablishedSeconds": 0.119273985, + "uploadSeconds": 0.059135882, + "downloadSeconds": 0.059188158 }, { - "connectionEstablishedSeconds": 0.12973905, - "uploadSeconds": 0.064472966, - "downloadSeconds": 0.064529546 + "connectionEstablishedSeconds": 0.129304256, + "uploadSeconds": 0.064229577, + "downloadSeconds": 0.064292811 }, { - "connectionEstablishedSeconds": 0.128102656, - "uploadSeconds": 0.063863468, - "downloadSeconds": 0.063635207 + "connectionEstablishedSeconds": 0.127846291, + "uploadSeconds": 0.063498451, + "downloadSeconds": 0.063584271 }, { - "connectionEstablishedSeconds": 0.125637036, - "uploadSeconds": 0.062420345, - "downloadSeconds": 0.062469283 + "connectionEstablishedSeconds": 0.127631297, + "uploadSeconds": 0.063379055, + "downloadSeconds": 0.063459619 }, { - "connectionEstablishedSeconds": 0.118981084, - "uploadSeconds": 0.059069735, - "downloadSeconds": 0.059129922 + "connectionEstablishedSeconds": 0.128862305, + "uploadSeconds": 0.064011224, + "downloadSeconds": 0.064089416 }, { - "connectionEstablishedSeconds": 0.120720618, - "uploadSeconds": 0.059951333, - "downloadSeconds": 0.060029474 + "connectionEstablishedSeconds": 0.123898529, + "uploadSeconds": 0.061647949, + "downloadSeconds": 0.061704126 }, { - "connectionEstablishedSeconds": 0.123367197, - "uploadSeconds": 0.061363585, - "downloadSeconds": 0.061318307 + "connectionEstablishedSeconds": 0.126427652, + "uploadSeconds": 0.062780577, + "downloadSeconds": 0.062850221 }, { - "connectionEstablishedSeconds": 0.125229133, - "uploadSeconds": 0.062206788, - "downloadSeconds": 0.062294396 + "connectionEstablishedSeconds": 0.12041383, + "uploadSeconds": 0.059765423, + "downloadSeconds": 0.05985171 }, { - "connectionEstablishedSeconds": 0.12312703, - "uploadSeconds": 0.061167752, - "downloadSeconds": 0.061232767 + "connectionEstablishedSeconds": 0.122487266, + "uploadSeconds": 0.060804338, + "downloadSeconds": 0.060884063 }, { - "connectionEstablishedSeconds": 0.125516511, - "uploadSeconds": 0.062366896, - "downloadSeconds": 0.062436136 + "connectionEstablishedSeconds": 0.12405444, + "uploadSeconds": 0.061615829, + "downloadSeconds": 0.0617448 }, { - "connectionEstablishedSeconds": 0.126220729, - "uploadSeconds": 0.062574059, - "downloadSeconds": 0.062642618 + "connectionEstablishedSeconds": 0.1252939, + "uploadSeconds": 0.062233868, + "downloadSeconds": 0.062298883 }, { - "connectionEstablishedSeconds": 0.125496394, - "uploadSeconds": 0.0623366, - "downloadSeconds": 0.062402276 + "connectionEstablishedSeconds": 0.127402042, + "uploadSeconds": 0.063241467, + "downloadSeconds": 0.063342943 }, { - "connectionEstablishedSeconds": 0.123646613, - "uploadSeconds": 0.061393611, - "downloadSeconds": 0.061439843 + "connectionEstablishedSeconds": 0.126685079, + "uploadSeconds": 0.06292761, + "downloadSeconds": 0.062982324 }, { - "connectionEstablishedSeconds": 0.128086877, - "uploadSeconds": 0.063653077, - "downloadSeconds": 0.063718554 + "connectionEstablishedSeconds": 0.121871274, + "uploadSeconds": 0.060740917, + "downloadSeconds": 0.060584697 }, { - "connectionEstablishedSeconds": 0.129262803, - "uploadSeconds": 0.064253408, - "downloadSeconds": 0.064303179 + "connectionEstablishedSeconds": 0.119699832, + "uploadSeconds": 0.059455631, + "downloadSeconds": 0.059498272 }, { - "connectionEstablishedSeconds": 0.127148072, - "uploadSeconds": 0.063193085, - "downloadSeconds": 0.063277279 + "connectionEstablishedSeconds": 0.129019714, + "uploadSeconds": 0.064098047, + "downloadSeconds": 0.064190354 }, { - "connectionEstablishedSeconds": 0.128584395, - "uploadSeconds": 0.063907041, - "downloadSeconds": 0.06396357 + "connectionEstablishedSeconds": 0.119018863, + "uploadSeconds": 0.059229123, + "downloadSeconds": 0.059185492 }, { - "connectionEstablishedSeconds": 0.124292227, - "uploadSeconds": 0.061732539, - "downloadSeconds": 0.061779283 + "connectionEstablishedSeconds": 0.125366127, + "uploadSeconds": 0.062341426, + "downloadSeconds": 0.062342015 }, { - "connectionEstablishedSeconds": 0.125535576, - "uploadSeconds": 0.062369058, - "downloadSeconds": 0.062449164 + "connectionEstablishedSeconds": 0.125611461, + "uploadSeconds": 0.062410843, + "downloadSeconds": 0.062456794 }, { - "connectionEstablishedSeconds": 0.130730147, - "uploadSeconds": 0.064963572, - "downloadSeconds": 0.065039169 + "connectionEstablishedSeconds": 0.123740612, + "uploadSeconds": 0.061438856, + "downloadSeconds": 0.061487596 }, { - "connectionEstablishedSeconds": 0.123208736, - "uploadSeconds": 0.061167329, - "downloadSeconds": 0.061260565 + "connectionEstablishedSeconds": 0.130171847, + "uploadSeconds": 0.064657351, + "downloadSeconds": 0.064722367 }, { - "connectionEstablishedSeconds": 0.127480441, - "uploadSeconds": 0.063313736, - "downloadSeconds": 0.063365761 + "connectionEstablishedSeconds": 0.121008144, + "uploadSeconds": 0.060096855, + "downloadSeconds": 0.060141129 }, { - "connectionEstablishedSeconds": 0.124865335, - "uploadSeconds": 0.062069213, - "downloadSeconds": 0.062112659 + "connectionEstablishedSeconds": 0.122261724, + "uploadSeconds": 0.060685092, + "downloadSeconds": 0.060783431 }, { - "connectionEstablishedSeconds": 0.127346962, - "uploadSeconds": 0.063268241, - "downloadSeconds": 0.063310113 + "connectionEstablishedSeconds": 0.12198358, + "uploadSeconds": 0.060587308, + "downloadSeconds": 0.060621551 }, { - "connectionEstablishedSeconds": 0.130435342, - "uploadSeconds": 0.064819538, - "downloadSeconds": 0.064874989 + "connectionEstablishedSeconds": 0.129276378, + "uploadSeconds": 0.064217955, + "downloadSeconds": 0.064279332 }, { - "connectionEstablishedSeconds": 0.122051259, - "uploadSeconds": 0.060598517, - "downloadSeconds": 0.060682717 + "connectionEstablishedSeconds": 0.117664798, + "uploadSeconds": 0.058423073, + "downloadSeconds": 0.058481222 }, { - "connectionEstablishedSeconds": 0.126631048, - "uploadSeconds": 0.062935626, - "downloadSeconds": 0.062977163 + "connectionEstablishedSeconds": 0.122264693, + "uploadSeconds": 0.060714713, + "downloadSeconds": 0.060778335 }, { - "connectionEstablishedSeconds": 0.125074157, - "uploadSeconds": 0.062137365, - "downloadSeconds": 0.06219817 + "connectionEstablishedSeconds": 0.12435423, + "uploadSeconds": 0.061728479, + "downloadSeconds": 0.061809844 } ], "implementation": "rust-libp2p", @@ -1489,504 +1489,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.065269712, - "uploadSeconds": 0.126687384, - "downloadSeconds": 0.000095155 + "connectionEstablishedSeconds": 0.062228087, + "uploadSeconds": 0.120893191, + "downloadSeconds": 0.000099165 }, { - "connectionEstablishedSeconds": 0.061772457, - "uploadSeconds": 0.119781377, - "downloadSeconds": 0.000088763 + "connectionEstablishedSeconds": 0.063734208, + "uploadSeconds": 0.123902018, + "downloadSeconds": 0.000045828 }, { - "connectionEstablishedSeconds": 0.063039581, - "uploadSeconds": 0.122439261, - "downloadSeconds": 0.000063515 + "connectionEstablishedSeconds": 0.064510474, + "uploadSeconds": 0.125358969, + "downloadSeconds": 0.000105478 }, { - "connectionEstablishedSeconds": 0.065332846, - "uploadSeconds": 0.126995051, - "downloadSeconds": 0.000086659 + "connectionEstablishedSeconds": 0.065255394, + "uploadSeconds": 0.127108206, + "downloadSeconds": 0.000088449 }, { - "connectionEstablishedSeconds": 0.064835466, - "uploadSeconds": 0.126084756, - "downloadSeconds": 0.000102772 + "connectionEstablishedSeconds": 0.066390359, + "uploadSeconds": 0.129048959, + "downloadSeconds": 0.000087506 }, { - "connectionEstablishedSeconds": 0.064252537, - "uploadSeconds": 0.125076452, - "downloadSeconds": 0.00008998 + "connectionEstablishedSeconds": 0.062640027, + "uploadSeconds": 0.121685794, + "downloadSeconds": 0.000085337 }, { - "connectionEstablishedSeconds": 0.062896955, - "uploadSeconds": 0.122347549, - "downloadSeconds": 0.000088885 + "connectionEstablishedSeconds": 0.064499552, + "uploadSeconds": 0.125410019, + "downloadSeconds": 0.000087664 }, { - "connectionEstablishedSeconds": 0.062537671, - "uploadSeconds": 0.121699801, - "downloadSeconds": 0.000105042 + "connectionEstablishedSeconds": 0.065494969, + "uploadSeconds": 0.127446356, + "downloadSeconds": 0.000085126 }, { - "connectionEstablishedSeconds": 0.062560666, - "uploadSeconds": 0.121530528, - "downloadSeconds": 0.000083081 + "connectionEstablishedSeconds": 0.06453883, + "uploadSeconds": 0.125435273, + "downloadSeconds": 0.00008866 }, { - "connectionEstablishedSeconds": 0.06503231, - "uploadSeconds": 0.12662378, - "downloadSeconds": 0.000076862 + "connectionEstablishedSeconds": 0.065465495, + "uploadSeconds": 0.127337886, + "downloadSeconds": 0.000088228 }, { - "connectionEstablishedSeconds": 0.064646935, - "uploadSeconds": 0.125940369, - "downloadSeconds": 0.000048777 + "connectionEstablishedSeconds": 0.065497585, + "uploadSeconds": 0.127547688, + "downloadSeconds": 0.000048445 }, { - "connectionEstablishedSeconds": 0.066467573, - "uploadSeconds": 0.129119886, - "downloadSeconds": 0.000109769 + "connectionEstablishedSeconds": 0.062053488, + "uploadSeconds": 0.120570934, + "downloadSeconds": 0.000051426 }, { - "connectionEstablishedSeconds": 0.066872165, - "uploadSeconds": 0.130419701, - "downloadSeconds": 0.000087987 + "connectionEstablishedSeconds": 0.065189638, + "uploadSeconds": 0.126649956, + "downloadSeconds": 0.000079552 }, { - "connectionEstablishedSeconds": 0.066463517, - "uploadSeconds": 0.129347194, - "downloadSeconds": 0.000088743 + "connectionEstablishedSeconds": 0.064666342, + "uploadSeconds": 0.125720425, + "downloadSeconds": 0.000089942 }, { - "connectionEstablishedSeconds": 0.062683614, - "uploadSeconds": 0.121793655, - "downloadSeconds": 0.000101821 + "connectionEstablishedSeconds": 0.062484754, + "uploadSeconds": 0.121424687, + "downloadSeconds": 0.0000493 }, { - "connectionEstablishedSeconds": 0.064007545, - "uploadSeconds": 0.124402074, - "downloadSeconds": 0.000051133 + "connectionEstablishedSeconds": 0.064606624, + "uploadSeconds": 0.125707048, + "downloadSeconds": 0.0000876 }, { - "connectionEstablishedSeconds": 0.066345827, - "uploadSeconds": 0.129196438, - "downloadSeconds": 0.000087874 + "connectionEstablishedSeconds": 0.066222267, + "uploadSeconds": 0.128878726, + "downloadSeconds": 0.00008468 }, { - "connectionEstablishedSeconds": 0.061959997, - "uploadSeconds": 0.120403148, - "downloadSeconds": 0.000099978 + "connectionEstablishedSeconds": 0.063119375, + "uploadSeconds": 0.122659138, + "downloadSeconds": 0.000105409 }, { - "connectionEstablishedSeconds": 0.064957415, - "uploadSeconds": 0.126484389, - "downloadSeconds": 0.000086646 + "connectionEstablishedSeconds": 0.064945702, + "uploadSeconds": 0.125868481, + "downloadSeconds": 0.000085921 }, { - "connectionEstablishedSeconds": 0.064050398, - "uploadSeconds": 0.124593436, - "downloadSeconds": 0.000093129 + "connectionEstablishedSeconds": 0.061924524, + "uploadSeconds": 0.120503709, + "downloadSeconds": 0.00007517 }, { - "connectionEstablishedSeconds": 0.065479175, - "uploadSeconds": 0.127563336, - "downloadSeconds": 0.000091752 + "connectionEstablishedSeconds": 0.063605631, + "uploadSeconds": 0.123602947, + "downloadSeconds": 0.000102754 }, { - "connectionEstablishedSeconds": 0.064459311, - "uploadSeconds": 0.125632443, - "downloadSeconds": 0.000088312 + "connectionEstablishedSeconds": 0.065523997, + "uploadSeconds": 0.127420361, + "downloadSeconds": 0.000106991 }, { - "connectionEstablishedSeconds": 0.065418506, - "uploadSeconds": 0.127318706, - "downloadSeconds": 0.000099893 + "connectionEstablishedSeconds": 0.063640155, + "uploadSeconds": 0.123723695, + "downloadSeconds": 0.000076951 }, { - "connectionEstablishedSeconds": 0.06115891, - "uploadSeconds": 0.118787732, - "downloadSeconds": 0.000072519 + "connectionEstablishedSeconds": 0.064030146, + "uploadSeconds": 0.124476116, + "downloadSeconds": 0.000083057 }, { - "connectionEstablishedSeconds": 0.063789728, - "uploadSeconds": 0.124151792, - "downloadSeconds": 0.000061331 + "connectionEstablishedSeconds": 0.063251595, + "uploadSeconds": 0.123027875, + "downloadSeconds": 0.000107909 }, { - "connectionEstablishedSeconds": 0.063565335, - "uploadSeconds": 0.123800509, - "downloadSeconds": 0.000066504 + "connectionEstablishedSeconds": 0.06472421, + "uploadSeconds": 0.125950818, + "downloadSeconds": 0.000050403 }, { - "connectionEstablishedSeconds": 0.065340559, - "uploadSeconds": 0.127107457, - "downloadSeconds": 0.000082091 + "connectionEstablishedSeconds": 0.063615584, + "uploadSeconds": 0.123676684, + "downloadSeconds": 0.000100003 }, { - "connectionEstablishedSeconds": 0.065274161, - "uploadSeconds": 0.126985152, - "downloadSeconds": 0.000098832 + "connectionEstablishedSeconds": 0.064527459, + "uploadSeconds": 0.125573941, + "downloadSeconds": 0.000142577 }, { - "connectionEstablishedSeconds": 0.061532374, - "uploadSeconds": 0.119412761, - "downloadSeconds": 0.000087572 + "connectionEstablishedSeconds": 0.065239512, + "uploadSeconds": 0.127007647, + "downloadSeconds": 0.000102753 }, { - "connectionEstablishedSeconds": 0.066015107, - "uploadSeconds": 0.12895258, - "downloadSeconds": 0.000107437 + "connectionEstablishedSeconds": 0.065002136, + "uploadSeconds": 0.126428268, + "downloadSeconds": 0.000100366 }, { - "connectionEstablishedSeconds": 0.063298652, - "uploadSeconds": 0.123194972, - "downloadSeconds": 0.000074348 + "connectionEstablishedSeconds": 0.064491103, + "uploadSeconds": 0.125496774, + "downloadSeconds": 0.000082914 }, { - "connectionEstablishedSeconds": 0.064874404, - "uploadSeconds": 0.126240455, - "downloadSeconds": 0.000102661 + "connectionEstablishedSeconds": 0.061470431, + "uploadSeconds": 0.119681012, + "downloadSeconds": 0.000092367 }, { - "connectionEstablishedSeconds": 0.060850312, - "uploadSeconds": 0.11825899, - "downloadSeconds": 0.000074344 + "connectionEstablishedSeconds": 0.066128934, + "uploadSeconds": 0.128684243, + "downloadSeconds": 0.000050939 }, { - "connectionEstablishedSeconds": 0.063836571, - "uploadSeconds": 0.124325405, - "downloadSeconds": 0.000058374 + "connectionEstablishedSeconds": 0.062860625, + "uploadSeconds": 0.122331128, + "downloadSeconds": 0.000077326 }, { - "connectionEstablishedSeconds": 0.062482892, - "uploadSeconds": 0.12198127, - "downloadSeconds": 0.000066463 + "connectionEstablishedSeconds": 0.065758037, + "uploadSeconds": 0.128014455, + "downloadSeconds": 0.000049593 }, { - "connectionEstablishedSeconds": 0.066011166, - "uploadSeconds": 0.128493564, - "downloadSeconds": 0.000086812 + "connectionEstablishedSeconds": 0.064911288, + "uploadSeconds": 0.126244849, + "downloadSeconds": 0.00008702 }, { - "connectionEstablishedSeconds": 0.065877087, - "uploadSeconds": 0.128252352, - "downloadSeconds": 0.000087883 + "connectionEstablishedSeconds": 0.060500391, + "uploadSeconds": 0.117433404, + "downloadSeconds": 0.000098985 }, { - "connectionEstablishedSeconds": 0.06625631, - "uploadSeconds": 0.128871405, - "downloadSeconds": 0.000075303 + "connectionEstablishedSeconds": 0.064570379, + "uploadSeconds": 0.125612761, + "downloadSeconds": 0.000052489 }, { - "connectionEstablishedSeconds": 0.062467673, - "uploadSeconds": 0.121489929, - "downloadSeconds": 0.000093727 + "connectionEstablishedSeconds": 0.061610704, + "uploadSeconds": 0.119766429, + "downloadSeconds": 0.000049095 }, { - "connectionEstablishedSeconds": 0.064259174, - "uploadSeconds": 0.125116047, - "downloadSeconds": 0.000130588 + "connectionEstablishedSeconds": 0.063889781, + "uploadSeconds": 0.124191347, + "downloadSeconds": 0.000102015 }, { - "connectionEstablishedSeconds": 0.064881658, - "uploadSeconds": 0.12634141, - "downloadSeconds": 0.000096298 + "connectionEstablishedSeconds": 0.063067354, + "uploadSeconds": 0.122699173, + "downloadSeconds": 0.000089304 }, { - "connectionEstablishedSeconds": 0.062591642, - "uploadSeconds": 0.121615007, - "downloadSeconds": 0.000052845 + "connectionEstablishedSeconds": 0.063439324, + "uploadSeconds": 0.123255208, + "downloadSeconds": 0.000085337 }, { - "connectionEstablishedSeconds": 0.062009462, - "uploadSeconds": 0.120569713, - "downloadSeconds": 0.000059144 + "connectionEstablishedSeconds": 0.065063968, + "uploadSeconds": 0.126475373, + "downloadSeconds": 0.000126626 }, { - "connectionEstablishedSeconds": 0.065772964, - "uploadSeconds": 0.128015637, - "downloadSeconds": 0.00005976 + "connectionEstablishedSeconds": 0.066271463, + "uploadSeconds": 0.128935528, + "downloadSeconds": 0.000046158 }, { - "connectionEstablishedSeconds": 0.065244623, - "uploadSeconds": 0.127597754, - "downloadSeconds": 0.000101338 + "connectionEstablishedSeconds": 0.063950299, + "uploadSeconds": 0.124443584, + "downloadSeconds": 0.000051703 }, { - "connectionEstablishedSeconds": 0.064528531, - "uploadSeconds": 0.125431869, - "downloadSeconds": 0.000102549 + "connectionEstablishedSeconds": 0.064774385, + "uploadSeconds": 0.126063081, + "downloadSeconds": 0.00007508 }, { - "connectionEstablishedSeconds": 0.064060708, - "uploadSeconds": 0.124861387, - "downloadSeconds": 0.000089563 + "connectionEstablishedSeconds": 0.065636329, + "uploadSeconds": 0.127636465, + "downloadSeconds": 0.000090008 }, { - "connectionEstablishedSeconds": 0.065100315, - "uploadSeconds": 0.126407417, - "downloadSeconds": 0.00009769 + "connectionEstablishedSeconds": 0.063451078, + "uploadSeconds": 0.123364682, + "downloadSeconds": 0.000101472 }, { - "connectionEstablishedSeconds": 0.063827269, - "uploadSeconds": 0.12418934, - "downloadSeconds": 0.000059017 + "connectionEstablishedSeconds": 0.06323798, + "uploadSeconds": 0.122975014, + "downloadSeconds": 0.000070985 }, { - "connectionEstablishedSeconds": 0.063091443, - "uploadSeconds": 0.122694617, - "downloadSeconds": 0.000088479 + "connectionEstablishedSeconds": 0.064770406, + "uploadSeconds": 0.126004915, + "downloadSeconds": 0.000072125 }, { - "connectionEstablishedSeconds": 0.063035134, - "uploadSeconds": 0.122636708, - "downloadSeconds": 0.000090614 + "connectionEstablishedSeconds": 0.065279787, + "uploadSeconds": 0.126962819, + "downloadSeconds": 0.000097796 }, { - "connectionEstablishedSeconds": 0.063237351, - "uploadSeconds": 0.123009684, - "downloadSeconds": 0.000085346 + "connectionEstablishedSeconds": 0.064901942, + "uploadSeconds": 0.125585521, + "downloadSeconds": 0.000049299 }, { - "connectionEstablishedSeconds": 0.065321546, - "uploadSeconds": 0.127202042, - "downloadSeconds": 0.0000863 + "connectionEstablishedSeconds": 0.061443554, + "uploadSeconds": 0.119494502, + "downloadSeconds": 0.000091291 }, { - "connectionEstablishedSeconds": 0.062293646, - "uploadSeconds": 0.121197102, - "downloadSeconds": 0.00008741 + "connectionEstablishedSeconds": 0.063441921, + "uploadSeconds": 0.123328693, + "downloadSeconds": 0.000049731 }, { - "connectionEstablishedSeconds": 0.06499849, - "uploadSeconds": 0.12637115, - "downloadSeconds": 0.000075902 + "connectionEstablishedSeconds": 0.062608409, + "uploadSeconds": 0.121783217, + "downloadSeconds": 0.000091694 }, { - "connectionEstablishedSeconds": 0.064614152, - "uploadSeconds": 0.125767329, - "downloadSeconds": 0.000102428 + "connectionEstablishedSeconds": 0.063711363, + "uploadSeconds": 0.123972621, + "downloadSeconds": 0.000103791 }, { - "connectionEstablishedSeconds": 0.064867917, - "uploadSeconds": 0.126189822, - "downloadSeconds": 0.000049127 + "connectionEstablishedSeconds": 0.064214588, + "uploadSeconds": 0.125143771, + "downloadSeconds": 0.000020481 }, { - "connectionEstablishedSeconds": 0.066343616, - "uploadSeconds": 0.129171678, - "downloadSeconds": 0.000109185 + "connectionEstablishedSeconds": 0.060506092, + "uploadSeconds": 0.117461449, + "downloadSeconds": 0.00009433 }, { - "connectionEstablishedSeconds": 0.063594419, - "uploadSeconds": 0.123729252, - "downloadSeconds": 0.000046197 + "connectionEstablishedSeconds": 0.06548947, + "uploadSeconds": 0.12762932, + "downloadSeconds": 0.000019611 }, { - "connectionEstablishedSeconds": 0.062504828, - "uploadSeconds": 0.121566267, - "downloadSeconds": 0.000054981 + "connectionEstablishedSeconds": 0.06343756, + "uploadSeconds": 0.12326629, + "downloadSeconds": 0.000080451 }, { - "connectionEstablishedSeconds": 0.064002572, - "uploadSeconds": 0.12462905, - "downloadSeconds": 0.000100446 + "connectionEstablishedSeconds": 0.064497925, + "uploadSeconds": 0.125432572, + "downloadSeconds": 0.000053455 }, { - "connectionEstablishedSeconds": 0.063602089, - "uploadSeconds": 0.123874281, - "downloadSeconds": 0.000048411 + "connectionEstablishedSeconds": 0.064198009, + "uploadSeconds": 0.124789315, + "downloadSeconds": 0.000102881 }, { - "connectionEstablishedSeconds": 0.062719554, - "uploadSeconds": 0.121941194, - "downloadSeconds": 0.000089545 + "connectionEstablishedSeconds": 0.065856671, + "uploadSeconds": 0.128240388, + "downloadSeconds": 0.000053864 }, { - "connectionEstablishedSeconds": 0.063417018, - "uploadSeconds": 0.123306077, - "downloadSeconds": 0.000098731 + "connectionEstablishedSeconds": 0.066265894, + "uploadSeconds": 0.129040126, + "downloadSeconds": 0.000090861 }, { - "connectionEstablishedSeconds": 0.064107384, - "uploadSeconds": 0.124691877, - "downloadSeconds": 0.000051022 + "connectionEstablishedSeconds": 0.064372464, + "uploadSeconds": 0.12513222, + "downloadSeconds": 0.00010157 }, { - "connectionEstablishedSeconds": 0.063100152, - "uploadSeconds": 0.122616935, - "downloadSeconds": 0.000099 + "connectionEstablishedSeconds": 0.063916167, + "uploadSeconds": 0.124636789, + "downloadSeconds": 0.000073509 }, { - "connectionEstablishedSeconds": 0.062746556, - "uploadSeconds": 0.121948401, - "downloadSeconds": 0.000095793 + "connectionEstablishedSeconds": 0.061572516, + "uploadSeconds": 0.119719968, + "downloadSeconds": 0.000085707 }, { - "connectionEstablishedSeconds": 0.06261075, - "uploadSeconds": 0.121898582, - "downloadSeconds": 0.000094156 + "connectionEstablishedSeconds": 0.065074184, + "uploadSeconds": 0.126698852, + "downloadSeconds": 0.00008027 }, { - "connectionEstablishedSeconds": 0.062358096, - "uploadSeconds": 0.121059397, - "downloadSeconds": 0.000085366 + "connectionEstablishedSeconds": 0.06569187, + "uploadSeconds": 0.127787894, + "downloadSeconds": 0.000095077 }, { - "connectionEstablishedSeconds": 0.063956063, - "uploadSeconds": 0.12442619, - "downloadSeconds": 0.000084146 + "connectionEstablishedSeconds": 0.063378177, + "uploadSeconds": 0.123475499, + "downloadSeconds": 0.000103336 }, { - "connectionEstablishedSeconds": 0.06177277, - "uploadSeconds": 0.11993679, - "downloadSeconds": 0.000051577 + "connectionEstablishedSeconds": 0.064730038, + "uploadSeconds": 0.125953752, + "downloadSeconds": 0.000061881 }, { - "connectionEstablishedSeconds": 0.065472055, - "uploadSeconds": 0.128132439, - "downloadSeconds": 0.000099309 + "connectionEstablishedSeconds": 0.06603802, + "uploadSeconds": 0.128568222, + "downloadSeconds": 0.000022934 }, { - "connectionEstablishedSeconds": 0.064005678, - "uploadSeconds": 0.124557276, - "downloadSeconds": 0.000071229 + "connectionEstablishedSeconds": 0.062661405, + "uploadSeconds": 0.121714334, + "downloadSeconds": 0.000078985 }, { - "connectionEstablishedSeconds": 0.06607158, - "uploadSeconds": 0.128709658, - "downloadSeconds": 0.000041673 + "connectionEstablishedSeconds": 0.066337935, + "uploadSeconds": 0.129140541, + "downloadSeconds": 0.000086636 }, { - "connectionEstablishedSeconds": 0.06447987, - "uploadSeconds": 0.125384308, - "downloadSeconds": 0.000068772 + "connectionEstablishedSeconds": 0.063668639, + "uploadSeconds": 0.123844589, + "downloadSeconds": 0.000050411 }, { - "connectionEstablishedSeconds": 0.063884104, - "uploadSeconds": 0.124527706, - "downloadSeconds": 0.000111449 + "connectionEstablishedSeconds": 0.064122074, + "uploadSeconds": 0.12476925, + "downloadSeconds": 0.000075981 }, { - "connectionEstablishedSeconds": 0.06461319, - "uploadSeconds": 0.125775606, - "downloadSeconds": 0.000085327 + "connectionEstablishedSeconds": 0.065372135, + "uploadSeconds": 0.127211626, + "downloadSeconds": 0.000091012 }, { - "connectionEstablishedSeconds": 0.064890847, - "uploadSeconds": 0.126204848, - "downloadSeconds": 0.000082451 + "connectionEstablishedSeconds": 0.059813543, + "uploadSeconds": 0.116184542, + "downloadSeconds": 0.000076299 }, { - "connectionEstablishedSeconds": 0.063228089, - "uploadSeconds": 0.122949404, - "downloadSeconds": 0.000146099 + "connectionEstablishedSeconds": 0.064338913, + "uploadSeconds": 0.125357074, + "downloadSeconds": 0.000048772 }, { - "connectionEstablishedSeconds": 0.061495799, - "uploadSeconds": 0.11947625, - "downloadSeconds": 0.000048393 + "connectionEstablishedSeconds": 0.061904241, + "uploadSeconds": 0.120371589, + "downloadSeconds": 0.000085246 }, { - "connectionEstablishedSeconds": 0.065020492, - "uploadSeconds": 0.12666505, - "downloadSeconds": 0.000089146 + "connectionEstablishedSeconds": 0.062849555, + "uploadSeconds": 0.122130636, + "downloadSeconds": 0.00005213 }, { - "connectionEstablishedSeconds": 0.065945204, - "uploadSeconds": 0.128484838, - "downloadSeconds": 0.000106159 + "connectionEstablishedSeconds": 0.063626359, + "uploadSeconds": 0.123786209, + "downloadSeconds": 0.000073933 }, { - "connectionEstablishedSeconds": 0.067762673, - "uploadSeconds": 0.132168213, - "downloadSeconds": 0.000107903 + "connectionEstablishedSeconds": 0.065144197, + "uploadSeconds": 0.126835146, + "downloadSeconds": 0.000080652 }, { - "connectionEstablishedSeconds": 0.065572532, - "uploadSeconds": 0.127516638, - "downloadSeconds": 0.000089004 + "connectionEstablishedSeconds": 0.063006839, + "uploadSeconds": 0.122330209, + "downloadSeconds": 0.000100892 }, { - "connectionEstablishedSeconds": 0.064566376, - "uploadSeconds": 0.125582624, - "downloadSeconds": 0.000092355 + "connectionEstablishedSeconds": 0.0656745, + "uploadSeconds": 0.12785452, + "downloadSeconds": 0.000056427 }, { - "connectionEstablishedSeconds": 0.065893006, - "uploadSeconds": 0.128263391, - "downloadSeconds": 0.000093783 + "connectionEstablishedSeconds": 0.065664141, + "uploadSeconds": 0.127793254, + "downloadSeconds": 0.000089199 }, { - "connectionEstablishedSeconds": 0.062806285, - "uploadSeconds": 0.122113968, - "downloadSeconds": 0.000065137 + "connectionEstablishedSeconds": 0.063336824, + "uploadSeconds": 0.123224446, + "downloadSeconds": 0.00009833 }, { - "connectionEstablishedSeconds": 0.06517263, - "uploadSeconds": 0.12702264, - "downloadSeconds": 0.000102609 + "connectionEstablishedSeconds": 0.063508944, + "uploadSeconds": 0.123534801, + "downloadSeconds": 0.000090801 }, { - "connectionEstablishedSeconds": 0.063970953, - "uploadSeconds": 0.12447171, - "downloadSeconds": 0.000084464 + "connectionEstablishedSeconds": 0.063052371, + "uploadSeconds": 0.12258054, + "downloadSeconds": 0.000099776 }, { - "connectionEstablishedSeconds": 0.063519187, - "uploadSeconds": 0.123752611, - "downloadSeconds": 0.000092866 + "connectionEstablishedSeconds": 0.063967578, + "uploadSeconds": 0.12440295, + "downloadSeconds": 0.00009315 }, { - "connectionEstablishedSeconds": 0.065027565, - "uploadSeconds": 0.126622237, - "downloadSeconds": 0.000106011 + "connectionEstablishedSeconds": 0.064650102, + "uploadSeconds": 0.125943909, + "downloadSeconds": 0.000095094 }, { - "connectionEstablishedSeconds": 0.065309519, - "uploadSeconds": 0.127363373, - "downloadSeconds": 0.000068864 + "connectionEstablishedSeconds": 0.063100822, + "uploadSeconds": 0.122738159, + "downloadSeconds": 0.00005022 }, { - "connectionEstablishedSeconds": 0.060630725, - "uploadSeconds": 0.117690014, - "downloadSeconds": 0.000111107 + "connectionEstablishedSeconds": 0.062892339, + "uploadSeconds": 0.122973305, + "downloadSeconds": 0.000109195 }, { - "connectionEstablishedSeconds": 0.065486703, - "uploadSeconds": 0.127455826, - "downloadSeconds": 0.000090808 + "connectionEstablishedSeconds": 0.062691186, + "uploadSeconds": 0.121850273, + "downloadSeconds": 0.000046814 }, { - "connectionEstablishedSeconds": 0.063195899, - "uploadSeconds": 0.123090512, - "downloadSeconds": 0.000056723 + "connectionEstablishedSeconds": 0.065547722, + "uploadSeconds": 0.127526939, + "downloadSeconds": 0.000086215 }, { - "connectionEstablishedSeconds": 0.06505979, - "uploadSeconds": 0.126614753, - "downloadSeconds": 0.000089765 + "connectionEstablishedSeconds": 0.063465129, + "uploadSeconds": 0.123536217, + "downloadSeconds": 0.000049009 }, { - "connectionEstablishedSeconds": 0.062354526, - "uploadSeconds": 0.12156822, - "downloadSeconds": 0.000086259 + "connectionEstablishedSeconds": 0.066192294, + "uploadSeconds": 0.12883507, + "downloadSeconds": 0.00010391 }, { - "connectionEstablishedSeconds": 0.062418939, - "uploadSeconds": 0.121418247, - "downloadSeconds": 0.000087486 + "connectionEstablishedSeconds": 0.06537651, + "uploadSeconds": 0.1272119, + "downloadSeconds": 0.000073702 }, { - "connectionEstablishedSeconds": 0.065193432, - "uploadSeconds": 0.126871858, - "downloadSeconds": 0.000092619 + "connectionEstablishedSeconds": 0.062524589, + "uploadSeconds": 0.121543935, + "downloadSeconds": 0.000089477 }, { - "connectionEstablishedSeconds": 0.063621014, - "uploadSeconds": 0.123766947, - "downloadSeconds": 0.000062353 + "connectionEstablishedSeconds": 0.065393812, + "uploadSeconds": 0.127120697, + "downloadSeconds": 0.000077362 } ], "implementation": "rust-libp2p", @@ -1996,504 +1996,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.06295453, - "uploadSeconds": 0.121854033, - "downloadSeconds": 0.000077444 + "connectionEstablishedSeconds": 0.062965213, + "uploadSeconds": 0.122682753, + "downloadSeconds": 0.000096943 }, { - "connectionEstablishedSeconds": 0.065123301, - "uploadSeconds": 0.126731822, - "downloadSeconds": 0.000083647 + "connectionEstablishedSeconds": 0.065489033, + "uploadSeconds": 0.127334506, + "downloadSeconds": 0.00005148 }, { - "connectionEstablishedSeconds": 0.064473496, - "uploadSeconds": 0.125295297, - "downloadSeconds": 0.000093787 + "connectionEstablishedSeconds": 0.064780118, + "uploadSeconds": 0.125533161, + "downloadSeconds": 0.000179768 }, { - "connectionEstablishedSeconds": 0.063632156, - "uploadSeconds": 0.123478645, - "downloadSeconds": 0.000072658 + "connectionEstablishedSeconds": 0.064576145, + "uploadSeconds": 0.125430556, + "downloadSeconds": 0.000079431 }, { - "connectionEstablishedSeconds": 0.062453992, - "uploadSeconds": 0.121532257, - "downloadSeconds": 0.000080757 + "connectionEstablishedSeconds": 0.06390552, + "uploadSeconds": 0.12410876, + "downloadSeconds": 0.000056454 }, { - "connectionEstablishedSeconds": 0.06282161, - "uploadSeconds": 0.122050909, - "downloadSeconds": 0.000062642 + "connectionEstablishedSeconds": 0.06475562, + "uploadSeconds": 0.125875636, + "downloadSeconds": 0.000046953 }, { - "connectionEstablishedSeconds": 0.064755094, - "uploadSeconds": 0.125864073, - "downloadSeconds": 0.000105545 + "connectionEstablishedSeconds": 0.064233033, + "uploadSeconds": 0.124969035, + "downloadSeconds": 0.000048843 }, { - "connectionEstablishedSeconds": 0.064105606, - "uploadSeconds": 0.124738407, - "downloadSeconds": 0.000045231 + "connectionEstablishedSeconds": 0.066038617, + "uploadSeconds": 0.128523885, + "downloadSeconds": 0.000048385 }, { - "connectionEstablishedSeconds": 0.064166122, - "uploadSeconds": 0.124608084, - "downloadSeconds": 0.000084333 + "connectionEstablishedSeconds": 0.062580181, + "uploadSeconds": 0.121513512, + "downloadSeconds": 0.000058131 }, { - "connectionEstablishedSeconds": 0.062669409, - "uploadSeconds": 0.121852983, - "downloadSeconds": 0.000086386 + "connectionEstablishedSeconds": 0.065504828, + "uploadSeconds": 0.127820586, + "downloadSeconds": 0.000048425 }, { - "connectionEstablishedSeconds": 0.064950734, - "uploadSeconds": 0.126331357, - "downloadSeconds": 0.000155847 + "connectionEstablishedSeconds": 0.064665241, + "uploadSeconds": 0.12597723, + "downloadSeconds": 0.000052844 }, { - "connectionEstablishedSeconds": 0.062348759, - "uploadSeconds": 0.121223049, - "downloadSeconds": 0.000101475 + "connectionEstablishedSeconds": 0.064701557, + "uploadSeconds": 0.125833183, + "downloadSeconds": 0.000092905 }, { - "connectionEstablishedSeconds": 0.061410545, - "uploadSeconds": 0.119357751, - "downloadSeconds": 0.00013631 + "connectionEstablishedSeconds": 0.06448686, + "uploadSeconds": 0.125395967, + "downloadSeconds": 0.000085099 }, { - "connectionEstablishedSeconds": 0.06538073, - "uploadSeconds": 0.127286516, - "downloadSeconds": 0.000084163 + "connectionEstablishedSeconds": 0.065915145, + "uploadSeconds": 0.12835944, + "downloadSeconds": 0.000050811 }, { - "connectionEstablishedSeconds": 0.065267895, - "uploadSeconds": 0.127053901, - "downloadSeconds": 0.00006416 + "connectionEstablishedSeconds": 0.064480849, + "uploadSeconds": 0.125422879, + "downloadSeconds": 0.000067528 }, { - "connectionEstablishedSeconds": 0.064411294, - "uploadSeconds": 0.124778899, - "downloadSeconds": 0.000074301 + "connectionEstablishedSeconds": 0.06609195, + "uploadSeconds": 0.12874033, + "downloadSeconds": 0.000051072 }, { - "connectionEstablishedSeconds": 0.063916077, - "uploadSeconds": 0.124393312, - "downloadSeconds": 0.000085843 + "connectionEstablishedSeconds": 0.065812462, + "uploadSeconds": 0.128129494, + "downloadSeconds": 0.000050144 }, { - "connectionEstablishedSeconds": 0.062081196, - "uploadSeconds": 0.120463049, - "downloadSeconds": 0.000081798 + "connectionEstablishedSeconds": 0.063794081, + "uploadSeconds": 0.124079512, + "downloadSeconds": 0.000075582 }, { - "connectionEstablishedSeconds": 0.064835647, - "uploadSeconds": 0.126418203, - "downloadSeconds": 0.000073351 + "connectionEstablishedSeconds": 0.065288735, + "uploadSeconds": 0.127120097, + "downloadSeconds": 0.000045388 }, { - "connectionEstablishedSeconds": 0.065654051, - "uploadSeconds": 0.127722734, - "downloadSeconds": 0.000105934 + "connectionEstablishedSeconds": 0.064935727, + "uploadSeconds": 0.126263076, + "downloadSeconds": 0.0000764 }, { - "connectionEstablishedSeconds": 0.063670175, - "uploadSeconds": 0.123943916, - "downloadSeconds": 0.000077717 + "connectionEstablishedSeconds": 0.064595678, + "uploadSeconds": 0.125849896, + "downloadSeconds": 0.000051446 }, { - "connectionEstablishedSeconds": 0.065474963, - "uploadSeconds": 0.127595228, - "downloadSeconds": 0.000055289 + "connectionEstablishedSeconds": 0.064087762, + "uploadSeconds": 0.124715294, + "downloadSeconds": 0.000085901 }, { - "connectionEstablishedSeconds": 0.064085463, - "uploadSeconds": 0.124794593, - "downloadSeconds": 0.00009378 + "connectionEstablishedSeconds": 0.064889148, + "uploadSeconds": 0.126489863, + "downloadSeconds": 0.000049797 }, { - "connectionEstablishedSeconds": 0.063967591, - "uploadSeconds": 0.124510889, - "downloadSeconds": 0.000077411 + "connectionEstablishedSeconds": 0.062467826, + "uploadSeconds": 0.121297594, + "downloadSeconds": 0.00005279 }, { - "connectionEstablishedSeconds": 0.062634672, - "uploadSeconds": 0.121821183, - "downloadSeconds": 0.000063691 + "connectionEstablishedSeconds": 0.062480328, + "uploadSeconds": 0.121542251, + "downloadSeconds": 0.000071948 }, { - "connectionEstablishedSeconds": 0.066294521, - "uploadSeconds": 0.129160959, - "downloadSeconds": 0.000054596 + "connectionEstablishedSeconds": 0.065630362, + "uploadSeconds": 0.127637877, + "downloadSeconds": 0.000053017 }, { - "connectionEstablishedSeconds": 0.064455007, - "uploadSeconds": 0.125418313, - "downloadSeconds": 0.00007373 + "connectionEstablishedSeconds": 0.062966299, + "uploadSeconds": 0.122626191, + "downloadSeconds": 0.000100311 }, { - "connectionEstablishedSeconds": 0.063959842, - "uploadSeconds": 0.1244949, - "downloadSeconds": 0.000073275 + "connectionEstablishedSeconds": 0.065212714, + "uploadSeconds": 0.126882573, + "downloadSeconds": 0.000103539 }, { - "connectionEstablishedSeconds": 0.066070252, - "uploadSeconds": 0.128792037, - "downloadSeconds": 0.00004618 + "connectionEstablishedSeconds": 0.063160796, + "uploadSeconds": 0.122707305, + "downloadSeconds": 0.000091295 }, { - "connectionEstablishedSeconds": 0.065236645, - "uploadSeconds": 0.127059524, - "downloadSeconds": 0.000050571 + "connectionEstablishedSeconds": 0.065610229, + "uploadSeconds": 0.127561854, + "downloadSeconds": 0.000044342 }, { - "connectionEstablishedSeconds": 0.06094768, - "uploadSeconds": 0.118601577, - "downloadSeconds": 0.000093052 + "connectionEstablishedSeconds": 0.062578162, + "uploadSeconds": 0.121752053, + "downloadSeconds": 0.0000859 }, { - "connectionEstablishedSeconds": 0.064582742, - "uploadSeconds": 0.12575478, - "downloadSeconds": 0.000082067 + "connectionEstablishedSeconds": 0.066255772, + "uploadSeconds": 0.127226144, + "downloadSeconds": 0.000048046 }, { - "connectionEstablishedSeconds": 0.065072501, - "uploadSeconds": 0.12662061, - "downloadSeconds": 0.000098341 + "connectionEstablishedSeconds": 0.064441426, + "uploadSeconds": 0.125328846, + "downloadSeconds": 0.000055709 }, { - "connectionEstablishedSeconds": 0.066624862, - "uploadSeconds": 0.129815026, - "downloadSeconds": 0.000081843 + "connectionEstablishedSeconds": 0.063287629, + "uploadSeconds": 0.123149429, + "downloadSeconds": 0.000052619 }, { - "connectionEstablishedSeconds": 0.065496903, - "uploadSeconds": 0.12779438, - "downloadSeconds": 0.000105756 + "connectionEstablishedSeconds": 0.062782396, + "uploadSeconds": 0.122141871, + "downloadSeconds": 0.000053622 }, { - "connectionEstablishedSeconds": 0.063587012, - "uploadSeconds": 0.123648704, - "downloadSeconds": 0.000073976 + "connectionEstablishedSeconds": 0.066718479, + "uploadSeconds": 0.130087424, + "downloadSeconds": 0.000046998 }, { - "connectionEstablishedSeconds": 0.065166457, - "uploadSeconds": 0.126912988, - "downloadSeconds": 0.000109828 + "connectionEstablishedSeconds": 0.065404341, + "uploadSeconds": 0.127412669, + "downloadSeconds": 0.000053589 }, { - "connectionEstablishedSeconds": 0.06025493, - "uploadSeconds": 0.117031953, - "downloadSeconds": 0.00008765 + "connectionEstablishedSeconds": 0.062921035, + "uploadSeconds": 0.12245603, + "downloadSeconds": 0.000048439 }, { - "connectionEstablishedSeconds": 0.065858394, - "uploadSeconds": 0.128498961, - "downloadSeconds": 0.000117106 + "connectionEstablishedSeconds": 0.063269545, + "uploadSeconds": 0.12313399, + "downloadSeconds": 0.000046705 }, { - "connectionEstablishedSeconds": 0.065079865, - "uploadSeconds": 0.126656494, - "downloadSeconds": 0.00007727 + "connectionEstablishedSeconds": 0.064657458, + "uploadSeconds": 0.12558721, + "downloadSeconds": 0.000089519 }, { - "connectionEstablishedSeconds": 0.0635718, - "uploadSeconds": 0.123726091, - "downloadSeconds": 0.000074642 + "connectionEstablishedSeconds": 0.064372159, + "uploadSeconds": 0.125307848, + "downloadSeconds": 0.000056282 }, { - "connectionEstablishedSeconds": 0.063487759, - "uploadSeconds": 0.123542277, - "downloadSeconds": 0.000057058 + "connectionEstablishedSeconds": 0.063471511, + "uploadSeconds": 0.123603874, + "downloadSeconds": 0.000053637 }, { - "connectionEstablishedSeconds": 0.061036628, - "uploadSeconds": 0.118754325, - "downloadSeconds": 0.000087272 + "connectionEstablishedSeconds": 0.064454589, + "uploadSeconds": 0.125511651, + "downloadSeconds": 0.000064808 }, { - "connectionEstablishedSeconds": 0.064088629, - "uploadSeconds": 0.124607971, - "downloadSeconds": 0.00005193 + "connectionEstablishedSeconds": 0.064763882, + "uploadSeconds": 0.126017266, + "downloadSeconds": 0.000047926 }, { - "connectionEstablishedSeconds": 0.063898205, - "uploadSeconds": 0.12449889, - "downloadSeconds": 0.00007393 + "connectionEstablishedSeconds": 0.065445739, + "uploadSeconds": 0.127456516, + "downloadSeconds": 0.000050466 }, { - "connectionEstablishedSeconds": 0.063112121, - "uploadSeconds": 0.122876487, - "downloadSeconds": 0.000082174 + "connectionEstablishedSeconds": 0.063431453, + "uploadSeconds": 0.123508824, + "downloadSeconds": 0.000050062 }, { - "connectionEstablishedSeconds": 0.061838182, - "uploadSeconds": 0.119878674, - "downloadSeconds": 0.000089398 + "connectionEstablishedSeconds": 0.064876121, + "uploadSeconds": 0.126287247, + "downloadSeconds": 0.000086023 }, { - "connectionEstablishedSeconds": 0.062248433, - "uploadSeconds": 0.121379219, - "downloadSeconds": 0.000044327 + "connectionEstablishedSeconds": 0.063792115, + "uploadSeconds": 0.12380564, + "downloadSeconds": 0.000059282 }, { - "connectionEstablishedSeconds": 0.064517291, - "uploadSeconds": 0.125572328, - "downloadSeconds": 0.000050306 + "connectionEstablishedSeconds": 0.064643853, + "uploadSeconds": 0.12569494, + "downloadSeconds": 0.000055511 }, { - "connectionEstablishedSeconds": 0.064898676, - "uploadSeconds": 0.126133518, - "downloadSeconds": 0.000068667 + "connectionEstablishedSeconds": 0.064326266, + "uploadSeconds": 0.125203995, + "downloadSeconds": 0.00005376 }, { - "connectionEstablishedSeconds": 0.062271554, - "uploadSeconds": 0.121187727, - "downloadSeconds": 0.00004803 + "connectionEstablishedSeconds": 0.063819705, + "uploadSeconds": 0.124362927, + "downloadSeconds": 0.000049904 }, { - "connectionEstablishedSeconds": 0.062338208, - "uploadSeconds": 0.120937059, - "downloadSeconds": 0.000050162 + "connectionEstablishedSeconds": 0.062724828, + "uploadSeconds": 0.121708761, + "downloadSeconds": 0.000086279 }, { - "connectionEstablishedSeconds": 0.06516715, - "uploadSeconds": 0.12658971, - "downloadSeconds": 0.000054901 + "connectionEstablishedSeconds": 0.064082258, + "uploadSeconds": 0.124765938, + "downloadSeconds": 0.00006986 }, { - "connectionEstablishedSeconds": 0.065651049, - "uploadSeconds": 0.127730491, - "downloadSeconds": 0.000072302 + "connectionEstablishedSeconds": 0.061541865, + "uploadSeconds": 0.119683336, + "downloadSeconds": 0.000046545 }, { - "connectionEstablishedSeconds": 0.065052451, - "uploadSeconds": 0.126855008, - "downloadSeconds": 0.000069138 + "connectionEstablishedSeconds": 0.0639851, + "uploadSeconds": 0.124269542, + "downloadSeconds": 0.000072711 }, { - "connectionEstablishedSeconds": 0.066387803, - "uploadSeconds": 0.129441088, - "downloadSeconds": 0.000046108 + "connectionEstablishedSeconds": 0.060457326, + "uploadSeconds": 0.117418959, + "downloadSeconds": 0.000071158 }, { - "connectionEstablishedSeconds": 0.064914776, - "uploadSeconds": 0.126462724, - "downloadSeconds": 0.000060604 + "connectionEstablishedSeconds": 0.06312529, + "uploadSeconds": 0.122446747, + "downloadSeconds": 0.000065805 }, { - "connectionEstablishedSeconds": 0.066325354, - "uploadSeconds": 0.128622135, - "downloadSeconds": 0.000089472 + "connectionEstablishedSeconds": 0.062976684, + "uploadSeconds": 0.122669083, + "downloadSeconds": 0.000093549 }, { - "connectionEstablishedSeconds": 0.064877193, - "uploadSeconds": 0.126410536, - "downloadSeconds": 0.000083253 + "connectionEstablishedSeconds": 0.065746472, + "uploadSeconds": 0.128321234, + "downloadSeconds": 0.000051595 }, { - "connectionEstablishedSeconds": 0.061518459, - "uploadSeconds": 0.11970554, - "downloadSeconds": 0.000098102 + "connectionEstablishedSeconds": 0.066366627, + "uploadSeconds": 0.129283919, + "downloadSeconds": 0.000050745 }, { - "connectionEstablishedSeconds": 0.066446584, - "uploadSeconds": 0.129426228, - "downloadSeconds": 0.000052881 + "connectionEstablishedSeconds": 0.065415799, + "uploadSeconds": 0.127190661, + "downloadSeconds": 0.000062322 }, { - "connectionEstablishedSeconds": 0.063347672, - "uploadSeconds": 0.123333115, - "downloadSeconds": 0.000051834 + "connectionEstablishedSeconds": 0.063648161, + "uploadSeconds": 0.123781895, + "downloadSeconds": 0.000046654 }, { - "connectionEstablishedSeconds": 0.062311469, - "uploadSeconds": 0.121232877, - "downloadSeconds": 0.000067479 + "connectionEstablishedSeconds": 0.06167661, + "uploadSeconds": 0.119790221, + "downloadSeconds": 0.000047639 }, { - "connectionEstablishedSeconds": 0.065580823, - "uploadSeconds": 0.127383534, - "downloadSeconds": 0.00008774 + "connectionEstablishedSeconds": 0.065250442, + "uploadSeconds": 0.127054158, + "downloadSeconds": 0.00006243 }, { - "connectionEstablishedSeconds": 0.062602698, - "uploadSeconds": 0.12176476, - "downloadSeconds": 0.000084162 + "connectionEstablishedSeconds": 0.063930895, + "uploadSeconds": 0.124296611, + "downloadSeconds": 0.000048271 }, { - "connectionEstablishedSeconds": 0.064679694, - "uploadSeconds": 0.125792176, - "downloadSeconds": 0.000049092 + "connectionEstablishedSeconds": 0.063170568, + "uploadSeconds": 0.122844096, + "downloadSeconds": 0.000059985 }, { - "connectionEstablishedSeconds": 0.066119217, - "uploadSeconds": 0.128911034, - "downloadSeconds": 0.000052582 + "connectionEstablishedSeconds": 0.064963847, + "uploadSeconds": 0.126469775, + "downloadSeconds": 0.00009783 }, { - "connectionEstablishedSeconds": 0.064028513, - "uploadSeconds": 0.12462816, - "downloadSeconds": 0.000062379 + "connectionEstablishedSeconds": 0.062416817, + "uploadSeconds": 0.121274763, + "downloadSeconds": 0.000063675 }, { - "connectionEstablishedSeconds": 0.066205814, - "uploadSeconds": 0.128883233, - "downloadSeconds": 0.000052233 + "connectionEstablishedSeconds": 0.06274952, + "uploadSeconds": 0.121991328, + "downloadSeconds": 0.00004915 }, { - "connectionEstablishedSeconds": 0.062012424, - "uploadSeconds": 0.120882738, - "downloadSeconds": 0.00005704 + "connectionEstablishedSeconds": 0.062530976, + "uploadSeconds": 0.121535015, + "downloadSeconds": 0.000053865 }, { - "connectionEstablishedSeconds": 0.064255919, - "uploadSeconds": 0.124959707, - "downloadSeconds": 0.000091863 + "connectionEstablishedSeconds": 0.064192983, + "uploadSeconds": 0.12497331, + "downloadSeconds": 0.000053834 }, { - "connectionEstablishedSeconds": 0.063693044, - "uploadSeconds": 0.123805374, - "downloadSeconds": 0.000094304 + "connectionEstablishedSeconds": 0.063269385, + "uploadSeconds": 0.122713127, + "downloadSeconds": 0.000051999 }, { - "connectionEstablishedSeconds": 0.064984709, - "uploadSeconds": 0.126642484, - "downloadSeconds": 0.000047402 + "connectionEstablishedSeconds": 0.063591056, + "uploadSeconds": 0.123664118, + "downloadSeconds": 0.000047505 }, { - "connectionEstablishedSeconds": 0.061120801, - "uploadSeconds": 0.11917866, - "downloadSeconds": 0.000070103 + "connectionEstablishedSeconds": 0.064500664, + "uploadSeconds": 0.125451392, + "downloadSeconds": 0.000052342 }, { - "connectionEstablishedSeconds": 0.063592651, - "uploadSeconds": 0.123675225, - "downloadSeconds": 0.000061204 + "connectionEstablishedSeconds": 0.064386192, + "uploadSeconds": 0.125257624, + "downloadSeconds": 0.000055289 }, { - "connectionEstablishedSeconds": 0.062592166, - "uploadSeconds": 0.121571849, - "downloadSeconds": 0.000071449 + "connectionEstablishedSeconds": 0.063064753, + "uploadSeconds": 0.122466459, + "downloadSeconds": 0.000069603 }, { - "connectionEstablishedSeconds": 0.065114172, - "uploadSeconds": 0.126766224, - "downloadSeconds": 0.000060301 + "connectionEstablishedSeconds": 0.065334896, + "uploadSeconds": 0.127050874, + "downloadSeconds": 0.000065784 }, { - "connectionEstablishedSeconds": 0.063331652, - "uploadSeconds": 0.122993699, - "downloadSeconds": 0.000085199 + "connectionEstablishedSeconds": 0.06524476, + "uploadSeconds": 0.127040032, + "downloadSeconds": 0.000047416 }, { - "connectionEstablishedSeconds": 0.064596237, - "uploadSeconds": 0.125709824, - "downloadSeconds": 0.000080473 + "connectionEstablishedSeconds": 0.062676442, + "uploadSeconds": 0.121891488, + "downloadSeconds": 0.000056458 }, { - "connectionEstablishedSeconds": 0.066972879, - "uploadSeconds": 0.130634142, - "downloadSeconds": 0.00004697 + "connectionEstablishedSeconds": 0.064216517, + "uploadSeconds": 0.124848172, + "downloadSeconds": 0.000089715 }, { - "connectionEstablishedSeconds": 0.062545682, - "uploadSeconds": 0.121463022, - "downloadSeconds": 0.000060858 + "connectionEstablishedSeconds": 0.06513872, + "uploadSeconds": 0.126780996, + "downloadSeconds": 0.000065766 }, { - "connectionEstablishedSeconds": 0.065678017, - "uploadSeconds": 0.128114478, - "downloadSeconds": 0.000054247 + "connectionEstablishedSeconds": 0.065030584, + "uploadSeconds": 0.12662517, + "downloadSeconds": 0.000053753 }, { - "connectionEstablishedSeconds": 0.066031352, - "uploadSeconds": 0.128668745, - "downloadSeconds": 0.000046151 + "connectionEstablishedSeconds": 0.062538152, + "uploadSeconds": 0.12168764, + "downloadSeconds": 0.00011266 }, { - "connectionEstablishedSeconds": 0.065528277, - "uploadSeconds": 0.127732124, - "downloadSeconds": 0.000050967 + "connectionEstablishedSeconds": 0.066310676, + "uploadSeconds": 0.129074605, + "downloadSeconds": 0.000053125 }, { - "connectionEstablishedSeconds": 0.061144288, - "uploadSeconds": 0.118864606, - "downloadSeconds": 0.000055298 + "connectionEstablishedSeconds": 0.066263897, + "uploadSeconds": 0.129142804, + "downloadSeconds": 0.000049113 }, { - "connectionEstablishedSeconds": 0.065305185, - "uploadSeconds": 0.127158917, - "downloadSeconds": 0.000050949 + "connectionEstablishedSeconds": 0.066270579, + "uploadSeconds": 0.129054171, + "downloadSeconds": 0.000092392 }, { - "connectionEstablishedSeconds": 0.065225217, - "uploadSeconds": 0.126952291, - "downloadSeconds": 0.000044136 + "connectionEstablishedSeconds": 0.066166914, + "uploadSeconds": 0.128875248, + "downloadSeconds": 0.000052999 }, { - "connectionEstablishedSeconds": 0.064853145, - "uploadSeconds": 0.126412428, - "downloadSeconds": 0.000097659 + "connectionEstablishedSeconds": 0.064122605, + "uploadSeconds": 0.124866938, + "downloadSeconds": 0.000066255 }, { - "connectionEstablishedSeconds": 0.065478193, - "uploadSeconds": 0.127374565, - "downloadSeconds": 0.000062365 + "connectionEstablishedSeconds": 0.061991146, + "uploadSeconds": 0.120611253, + "downloadSeconds": 0.000046815 }, { - "connectionEstablishedSeconds": 0.05995481, - "uploadSeconds": 0.116531334, - "downloadSeconds": 0.000078307 + "connectionEstablishedSeconds": 0.06589036, + "uploadSeconds": 0.128228162, + "downloadSeconds": 0.000047445 }, { - "connectionEstablishedSeconds": 0.066140712, - "uploadSeconds": 0.128805388, - "downloadSeconds": 0.000049685 + "connectionEstablishedSeconds": 0.064135612, + "uploadSeconds": 0.12479438, + "downloadSeconds": 0.000052391 }, { - "connectionEstablishedSeconds": 0.064286525, - "uploadSeconds": 0.125063487, - "downloadSeconds": 0.000092709 + "connectionEstablishedSeconds": 0.065295866, + "uploadSeconds": 0.127137163, + "downloadSeconds": 0.000046542 }, { - "connectionEstablishedSeconds": 0.065156327, - "uploadSeconds": 0.127035923, - "downloadSeconds": 0.00005645 + "connectionEstablishedSeconds": 0.06473605, + "uploadSeconds": 0.126032657, + "downloadSeconds": 0.000050489 }, { - "connectionEstablishedSeconds": 0.062462454, - "uploadSeconds": 0.121519512, - "downloadSeconds": 0.000090082 + "connectionEstablishedSeconds": 0.063691798, + "uploadSeconds": 0.123769338, + "downloadSeconds": 0.000060976 }, { - "connectionEstablishedSeconds": 0.063023488, - "uploadSeconds": 0.122460757, - "downloadSeconds": 0.000049759 + "connectionEstablishedSeconds": 0.064162208, + "uploadSeconds": 0.124859646, + "downloadSeconds": 0.000090241 }, { - "connectionEstablishedSeconds": 0.065384733, - "uploadSeconds": 0.127145941, - "downloadSeconds": 0.000078884 + "connectionEstablishedSeconds": 0.062561977, + "uploadSeconds": 0.121690886, + "downloadSeconds": 0.000047624 }, { - "connectionEstablishedSeconds": 0.064855409, - "uploadSeconds": 0.12630613, - "downloadSeconds": 0.0000832 + "connectionEstablishedSeconds": 0.064724475, + "uploadSeconds": 0.125989931, + "downloadSeconds": 0.000079598 }, { - "connectionEstablishedSeconds": 0.065364575, - "uploadSeconds": 0.127268953, - "downloadSeconds": 0.000079745 + "connectionEstablishedSeconds": 0.063654223, + "uploadSeconds": 0.123738224, + "downloadSeconds": 0.000054464 }, { - "connectionEstablishedSeconds": 0.066317931, - "uploadSeconds": 0.129352868, - "downloadSeconds": 0.000089251 + "connectionEstablishedSeconds": 0.064422792, + "uploadSeconds": 0.125386097, + "downloadSeconds": 0.00005014 }, { - "connectionEstablishedSeconds": 0.061175776, - "uploadSeconds": 0.118754982, - "downloadSeconds": 0.00005179 + "connectionEstablishedSeconds": 0.063905178, + "uploadSeconds": 0.124427918, + "downloadSeconds": 0.000093924 } ], "implementation": "rust-libp2p-quinn", @@ -2504,503 +2504,503 @@ "result": [ { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191286116, - "downloadSeconds": 0.000030153 + "uploadSeconds": 0.1821398, + "downloadSeconds": 0.000026881 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183529055, - "downloadSeconds": 0.000025756 + "uploadSeconds": 0.195773944, + "downloadSeconds": 0.000025118 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184410375, - "downloadSeconds": 0.000040311 + "uploadSeconds": 0.183498433, + "downloadSeconds": 0.000031034 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190450232, - "downloadSeconds": 0.000028102 + "uploadSeconds": 0.192985197, + "downloadSeconds": 0.000023865 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187048479, - "downloadSeconds": 0.000020757 + "uploadSeconds": 0.184632175, + "downloadSeconds": 0.000023122 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190285011, - "downloadSeconds": 0.000024856 + "uploadSeconds": 0.187860929, + "downloadSeconds": 0.000025513 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.178674815, - "downloadSeconds": 0.000024766 + "uploadSeconds": 0.18858002, + "downloadSeconds": 0.000025404 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189727631, - "downloadSeconds": 0.000021712 + "uploadSeconds": 0.186972658, + "downloadSeconds": 0.000024657 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18619776, - "downloadSeconds": 0.000034857 + "uploadSeconds": 0.188982188, + "downloadSeconds": 0.000027395 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193181301, - "downloadSeconds": 0.000024575 + "uploadSeconds": 0.191543178, + "downloadSeconds": 0.000023934 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189751793, - "downloadSeconds": 0.000025637 + "uploadSeconds": 0.193977061, + "downloadSeconds": 0.000022836 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183150367, - "downloadSeconds": 0.000024492 + "uploadSeconds": 0.191907741, + "downloadSeconds": 0.000033653 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188043639, - "downloadSeconds": 0.000024447 + "uploadSeconds": 0.190081621, + "downloadSeconds": 0.000025243 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189577218, - "downloadSeconds": 0.000018189 + "uploadSeconds": 0.187260309, + "downloadSeconds": 0.000026162 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188882264, - "downloadSeconds": 0.000021261 + "uploadSeconds": 0.18507505, + "downloadSeconds": 0.000029837 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186325009, - "downloadSeconds": 0.000024389 + "uploadSeconds": 0.175075255, + "downloadSeconds": 0.000023352 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181536797, - "downloadSeconds": 0.000033015 + "uploadSeconds": 0.189134819, + "downloadSeconds": 0.000025628 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193188111, - "downloadSeconds": 0.000025382 + "uploadSeconds": 0.188676944, + "downloadSeconds": 0.000024155 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185746185, - "downloadSeconds": 0.000023011 + "uploadSeconds": 0.185896518, + "downloadSeconds": 0.000021262 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182559536, - "downloadSeconds": 0.000025647 + "uploadSeconds": 0.186597685, + "downloadSeconds": 0.000025792 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186054822, - "downloadSeconds": 0.000021982 + "uploadSeconds": 0.176832111, + "downloadSeconds": 0.000022594 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187466153, - "downloadSeconds": 0.000024312 + "uploadSeconds": 0.17509324, + "downloadSeconds": 0.000024377 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184809142, - "downloadSeconds": 0.000022947 + "uploadSeconds": 0.189129547, + "downloadSeconds": 0.000025202 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191330569, - "downloadSeconds": 0.000028027 + "uploadSeconds": 0.185398974, + "downloadSeconds": 0.000022065 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189069566, - "downloadSeconds": 0.000024548 + "uploadSeconds": 0.187933492, + "downloadSeconds": 0.000023911 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18767281, - "downloadSeconds": 0.000021507 + "uploadSeconds": 0.189684911, + "downloadSeconds": 0.000023018 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18593129, - "downloadSeconds": 0.000023896 + "uploadSeconds": 0.191771551, + "downloadSeconds": 0.000022407 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181014203, - "downloadSeconds": 0.000023811 + "uploadSeconds": 0.186256005, + "downloadSeconds": 0.000027753 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188932328, - "downloadSeconds": 0.000025813 + "uploadSeconds": 0.175575956, + "downloadSeconds": 0.000025303 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184957641, - "downloadSeconds": 0.000023322 + "uploadSeconds": 0.183450944, + "downloadSeconds": 0.000026464 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180815006, - "downloadSeconds": 0.00003453 + "uploadSeconds": 0.190320051, + "downloadSeconds": 0.000023076 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190052471, - "downloadSeconds": 0.00002195 + "uploadSeconds": 0.192783509, + "downloadSeconds": 0.000026041 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193640405, - "downloadSeconds": 0.000020421 + "uploadSeconds": 0.184762516, + "downloadSeconds": 0.000040371 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190830146, - "downloadSeconds": 0.000022273 + "uploadSeconds": 0.191807584, + "downloadSeconds": 0.000023094 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188083369, - "downloadSeconds": 0.00002138 + "uploadSeconds": 0.181300724, + "downloadSeconds": 0.000023035 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185840961, - "downloadSeconds": 0.000021979 + "uploadSeconds": 0.181617298, + "downloadSeconds": 0.000022889 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193488566, - "downloadSeconds": 0.000024822 + "uploadSeconds": 0.186888535, + "downloadSeconds": 0.000025779 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.178135133, - "downloadSeconds": 0.000024564 + "uploadSeconds": 0.191734437, + "downloadSeconds": 0.000025407 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187243776, - "downloadSeconds": 0.00002429 + "uploadSeconds": 0.1870718, + "downloadSeconds": 0.000025818 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186128, - "downloadSeconds": 0.00002176 + "uploadSeconds": 0.190846856, + "downloadSeconds": 0.000023349 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187437127, - "downloadSeconds": 0.000024223 + "uploadSeconds": 0.188427418, + "downloadSeconds": 0.000026628 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193260755, - "downloadSeconds": 0.000021753 + "uploadSeconds": 0.180998284, + "downloadSeconds": 0.000025526 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.17961362, - "downloadSeconds": 0.000030347 + "uploadSeconds": 0.185872193, + "downloadSeconds": 0.000028614 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185389065, - "downloadSeconds": 0.00002451 + "uploadSeconds": 0.193576062, + "downloadSeconds": 0.000023458 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189083595, - "downloadSeconds": 0.000023793 + "uploadSeconds": 0.194089134, + "downloadSeconds": 0.000021827 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188867791, - "downloadSeconds": 0.000024162 + "uploadSeconds": 0.178674659, + "downloadSeconds": 0.000026203 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182410744, - "downloadSeconds": 0.000021144 + "uploadSeconds": 0.185130393, + "downloadSeconds": 0.000024973 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.19338541, - "downloadSeconds": 0.000024628 + "uploadSeconds": 0.178811065, + "downloadSeconds": 0.000023368 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.180148621, - "downloadSeconds": 0.000023234 + "uploadSeconds": 0.187995598, + "downloadSeconds": 0.00002634 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183482025, - "downloadSeconds": 0.00002359 + "uploadSeconds": 0.195339953, + "downloadSeconds": 0.000020748 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192011607, - "downloadSeconds": 0.000019914 + "uploadSeconds": 0.186196457, + "downloadSeconds": 0.000036929 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193289196, - "downloadSeconds": 0.000024513 + "uploadSeconds": 0.188973136, + "downloadSeconds": 0.000024914 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185263194, - "downloadSeconds": 0.000028503 + "uploadSeconds": 0.192528886, + "downloadSeconds": 0.000025572 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186621738, - "downloadSeconds": 0.000024194 + "uploadSeconds": 0.193148886, + "downloadSeconds": 0.000027763 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192898111, - "downloadSeconds": 0.000024166 + "uploadSeconds": 0.193900042, + "downloadSeconds": 0.000021874 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187423423, - "downloadSeconds": 0.000023964 + "uploadSeconds": 0.195939328, + "downloadSeconds": 0.000026014 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191429869, - "downloadSeconds": 0.000021317 + "uploadSeconds": 0.191246907, + "downloadSeconds": 0.000026981 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187678237, - "downloadSeconds": 0.000021642 + "uploadSeconds": 0.18417502, + "downloadSeconds": 0.000026181 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187827296, - "downloadSeconds": 0.000021888 + "uploadSeconds": 0.191423524, + "downloadSeconds": 0.000021579 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186599878, - "downloadSeconds": 0.00002446 + "uploadSeconds": 0.183943936, + "downloadSeconds": 0.000022064 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190005609, - "downloadSeconds": 0.000022756 + "uploadSeconds": 0.182280169, + "downloadSeconds": 0.000024752 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189002327, - "downloadSeconds": 0.000028052 + "uploadSeconds": 0.184413819, + "downloadSeconds": 0.000024742 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191248774, - "downloadSeconds": 0.000021291 + "uploadSeconds": 0.191802659, + "downloadSeconds": 0.000023783 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.182345961, - "downloadSeconds": 0.000018505 + "uploadSeconds": 0.192117827, + "downloadSeconds": 0.000024709 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.178343946, - "downloadSeconds": 0.000024258 + "uploadSeconds": 0.18619131, + "downloadSeconds": 0.000024901 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.1796409, - "downloadSeconds": 0.000020622 + "uploadSeconds": 0.187654897, + "downloadSeconds": 0.000032967 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191527728, - "downloadSeconds": 0.000023144 + "uploadSeconds": 0.187674364, + "downloadSeconds": 0.000025345 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187086772, - "downloadSeconds": 0.000024889 + "uploadSeconds": 0.187036773, + "downloadSeconds": 0.000024928 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18110695, - "downloadSeconds": 0.000023585 + "uploadSeconds": 0.18494965, + "downloadSeconds": 0.000027452 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187533438, - "downloadSeconds": 0.000022629 + "uploadSeconds": 0.180378838, + "downloadSeconds": 0.000023578 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.187532688, - "downloadSeconds": 0.000029573 + "uploadSeconds": 0.187225719, + "downloadSeconds": 0.000022053 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191096905, - "downloadSeconds": 0.000025604 + "uploadSeconds": 0.191425341, + "downloadSeconds": 0.000024108 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.194325541, - "downloadSeconds": 0.000021101 + "uploadSeconds": 0.184853694, + "downloadSeconds": 0.000028837 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189083303, - "downloadSeconds": 0.000021147 + "uploadSeconds": 0.181655026, + "downloadSeconds": 0.000025577 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.193745985, - "downloadSeconds": 0.000024439 + "uploadSeconds": 0.192752062, + "downloadSeconds": 0.000027913 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.190582174, - "downloadSeconds": 0.000017468 + "uploadSeconds": 0.19259968, + "downloadSeconds": 0.00002855 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.192054523, - "downloadSeconds": 0.0000221 + "uploadSeconds": 0.188552023, + "downloadSeconds": 0.000024955 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183943085, - "downloadSeconds": 0.000024812 + "uploadSeconds": 0.183730429, + "downloadSeconds": 0.000023694 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.17475635, - "downloadSeconds": 0.000024018 + "uploadSeconds": 0.177422708, + "downloadSeconds": 0.000022784 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184440358, - "downloadSeconds": 0.000021449 + "uploadSeconds": 0.187951807, + "downloadSeconds": 0.000024424 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18631819, - "downloadSeconds": 0.000028734 + "uploadSeconds": 0.185678393, + "downloadSeconds": 0.000024968 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181409699, - "downloadSeconds": 0.00002564 + "uploadSeconds": 0.191673411, + "downloadSeconds": 0.000023488 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.179933668, - "downloadSeconds": 0.000024125 + "uploadSeconds": 0.181048061, + "downloadSeconds": 0.000020906 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185195736, - "downloadSeconds": 0.000022891 + "uploadSeconds": 0.185683204, + "downloadSeconds": 0.000023901 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188159214, - "downloadSeconds": 0.00002612 + "uploadSeconds": 0.182405216, + "downloadSeconds": 0.00002517 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.191314415, - "downloadSeconds": 0.000021095 + "uploadSeconds": 0.193882525, + "downloadSeconds": 0.000025305 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183011343, - "downloadSeconds": 0.000024533 + "uploadSeconds": 0.190209202, + "downloadSeconds": 0.000031225 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.188848175, - "downloadSeconds": 0.0000209 + "uploadSeconds": 0.185653646, + "downloadSeconds": 0.000025465 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.195977983, - "downloadSeconds": 0.000024503 + "uploadSeconds": 0.191666166, + "downloadSeconds": 0.000025486 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.18291316, - "downloadSeconds": 0.000020749 + "uploadSeconds": 0.18358427, + "downloadSeconds": 0.000026064 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185713857, - "downloadSeconds": 0.000023253 + "uploadSeconds": 0.189650703, + "downloadSeconds": 0.000024602 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189154788, - "downloadSeconds": 0.000024316 + "uploadSeconds": 0.186723161, + "downloadSeconds": 0.000026009 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.185723779, - "downloadSeconds": 0.000022027 + "uploadSeconds": 0.184713584, + "downloadSeconds": 0.000025332 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.186181575, - "downloadSeconds": 0.000020345 + "uploadSeconds": 0.192077544, + "downloadSeconds": 0.00002107 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.183142393, - "downloadSeconds": 0.000021052 + "uploadSeconds": 0.189386708, + "downloadSeconds": 0.000039476 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184955497, - "downloadSeconds": 0.000020846 + "uploadSeconds": 0.19138384, + "downloadSeconds": 0.000024091 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.189237981, - "downloadSeconds": 0.000027586 + "uploadSeconds": 0.183304304, + "downloadSeconds": 0.000025534 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.19088234, - "downloadSeconds": 0.000023083 + "uploadSeconds": 0.190941356, + "downloadSeconds": 0.000023583 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.181319211, - "downloadSeconds": 0.000023255 + "uploadSeconds": 0.186071754, + "downloadSeconds": 0.000026885 }, { "connectionEstablishedSeconds": 0, - "uploadSeconds": 0.184472225, - "downloadSeconds": 0.000034077 + "uploadSeconds": 0.186465452, + "downloadSeconds": 0.000024554 } ], "implementation": "https", @@ -3010,504 +3010,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.187265924, - "uploadSeconds": 0.000003363, - "downloadSeconds": 0.062154144 + "connectionEstablishedSeconds": 0.189865033, + "uploadSeconds": 0.000003755, + "downloadSeconds": 0.063326819 }, { - "connectionEstablishedSeconds": 0.189557176, - "uploadSeconds": 0.000006487, - "downloadSeconds": 0.062203288 + "connectionEstablishedSeconds": 0.190167163, + "uploadSeconds": 0.000003405, + "downloadSeconds": 0.06291947 }, { - "connectionEstablishedSeconds": 0.183024286, - "uploadSeconds": 0.000003387, - "downloadSeconds": 0.060029314 + "connectionEstablishedSeconds": 0.19127148, + "uploadSeconds": 0.000003459, + "downloadSeconds": 0.063311819 }, { - "connectionEstablishedSeconds": 0.196939115, - "uploadSeconds": 0.000003342, - "downloadSeconds": 0.064670246 + "connectionEstablishedSeconds": 0.191882774, + "uploadSeconds": 0.00000357, + "downloadSeconds": 0.063451717 }, { - "connectionEstablishedSeconds": 0.187845645, - "uploadSeconds": 0.000003119, - "downloadSeconds": 0.061806415 + "connectionEstablishedSeconds": 0.191717471, + "uploadSeconds": 0.000003752, + "downloadSeconds": 0.063499436 }, { - "connectionEstablishedSeconds": 0.183480618, - "uploadSeconds": 0.000004217, - "downloadSeconds": 0.060140849 + "connectionEstablishedSeconds": 0.178632645, + "uploadSeconds": 0.000003283, + "downloadSeconds": 0.059170141 }, { - "connectionEstablishedSeconds": 0.194091737, - "uploadSeconds": 0.000003398, - "downloadSeconds": 0.063641913 + "connectionEstablishedSeconds": 0.186360132, + "uploadSeconds": 0.000003649, + "downloadSeconds": 0.061683229 }, { - "connectionEstablishedSeconds": 0.192041679, - "uploadSeconds": 0.000003277, - "downloadSeconds": 0.063566373 + "connectionEstablishedSeconds": 0.18410758, + "uploadSeconds": 0.000003259, + "downloadSeconds": 0.060973875 }, { - "connectionEstablishedSeconds": 0.191750568, - "uploadSeconds": 0.000004094, - "downloadSeconds": 0.06306795 + "connectionEstablishedSeconds": 0.188355392, + "uploadSeconds": 0.000003324, + "downloadSeconds": 0.062420337 }, { - "connectionEstablishedSeconds": 0.196661034, - "uploadSeconds": 0.000003638, - "downloadSeconds": 0.064597793 + "connectionEstablishedSeconds": 0.192853788, + "uploadSeconds": 0.000004574, + "downloadSeconds": 0.063856996 }, { - "connectionEstablishedSeconds": 0.192399151, - "uploadSeconds": 0.000003287, - "downloadSeconds": 0.063717409 + "connectionEstablishedSeconds": 0.19061551, + "uploadSeconds": 0.00000336, + "downloadSeconds": 0.063080255 }, { - "connectionEstablishedSeconds": 0.194512523, - "uploadSeconds": 0.000003305, - "downloadSeconds": 0.063794327 + "connectionEstablishedSeconds": 0.194515365, + "uploadSeconds": 0.000003426, + "downloadSeconds": 0.063687147 }, { - "connectionEstablishedSeconds": 0.190643887, - "uploadSeconds": 0.000003297, - "downloadSeconds": 0.063321458 + "connectionEstablishedSeconds": 0.192444206, + "uploadSeconds": 0.000003363, + "downloadSeconds": 0.063767405 }, { - "connectionEstablishedSeconds": 0.191925632, - "uploadSeconds": 0.000003153, - "downloadSeconds": 0.062927302 + "connectionEstablishedSeconds": 0.185178857, + "uploadSeconds": 0.000003962, + "downloadSeconds": 0.061233797 }, { - "connectionEstablishedSeconds": 0.193221353, - "uploadSeconds": 0.000003628, - "downloadSeconds": 0.063378233 + "connectionEstablishedSeconds": 0.189486458, + "uploadSeconds": 0.000003111, + "downloadSeconds": 0.062118443 }, { - "connectionEstablishedSeconds": 0.191420507, - "uploadSeconds": 0.000003297, - "downloadSeconds": 0.062854803 + "connectionEstablishedSeconds": 0.196167145, + "uploadSeconds": 0.000003706, + "downloadSeconds": 0.064887836 }, { - "connectionEstablishedSeconds": 0.177621185, - "uploadSeconds": 0.000004143, - "downloadSeconds": 0.058236693 + "connectionEstablishedSeconds": 0.192284557, + "uploadSeconds": 0.000003459, + "downloadSeconds": 0.063691101 }, { - "connectionEstablishedSeconds": 0.186026405, - "uploadSeconds": 0.00000371, - "downloadSeconds": 0.061038859 + "connectionEstablishedSeconds": 0.188827342, + "uploadSeconds": 0.000003991, + "downloadSeconds": 0.061963325 }, { - "connectionEstablishedSeconds": 0.187867362, - "uploadSeconds": 0.000003418, - "downloadSeconds": 0.062196985 + "connectionEstablishedSeconds": 0.185525831, + "uploadSeconds": 0.000006237, + "downloadSeconds": 0.061254952 }, { - "connectionEstablishedSeconds": 0.195457825, - "uploadSeconds": 0.000003426, - "downloadSeconds": 0.063899168 + "connectionEstablishedSeconds": 0.193967423, + "uploadSeconds": 0.000003491, + "downloadSeconds": 0.064179438 }, { - "connectionEstablishedSeconds": 0.188626728, - "uploadSeconds": 0.00000324, - "downloadSeconds": 0.06187622 + "connectionEstablishedSeconds": 0.187580283, + "uploadSeconds": 0.000003175, + "downloadSeconds": 0.06221106 }, { - "connectionEstablishedSeconds": 0.190810988, - "uploadSeconds": 0.000003275, - "downloadSeconds": 0.063101919 + "connectionEstablishedSeconds": 0.185444221, + "uploadSeconds": 0.000003223, + "downloadSeconds": 0.061453914 }, { - "connectionEstablishedSeconds": 0.192989026, - "uploadSeconds": 0.000002992, - "downloadSeconds": 0.063853567 + "connectionEstablishedSeconds": 0.191583765, + "uploadSeconds": 0.0000033, + "downloadSeconds": 0.063420643 }, { - "connectionEstablishedSeconds": 0.189992784, - "uploadSeconds": 0.000003782, - "downloadSeconds": 0.062369201 + "connectionEstablishedSeconds": 0.188379636, + "uploadSeconds": 0.000030857, + "downloadSeconds": 0.062499979 }, { - "connectionEstablishedSeconds": 0.194293407, - "uploadSeconds": 0.000003116, - "downloadSeconds": 0.063669453 + "connectionEstablishedSeconds": 0.195192589, + "uploadSeconds": 0.000003374, + "downloadSeconds": 0.064022674 }, { - "connectionEstablishedSeconds": 0.190904301, - "uploadSeconds": 0.000004374, - "downloadSeconds": 0.062676162 + "connectionEstablishedSeconds": 0.186875039, + "uploadSeconds": 0.000005618, + "downloadSeconds": 0.061720819 }, { - "connectionEstablishedSeconds": 0.195879226, - "uploadSeconds": 0.000004131, - "downloadSeconds": 0.064389181 + "connectionEstablishedSeconds": 0.192027134, + "uploadSeconds": 0.000003157, + "downloadSeconds": 0.063552229 }, { - "connectionEstablishedSeconds": 0.193824536, - "uploadSeconds": 0.000004093, - "downloadSeconds": 0.063465764 + "connectionEstablishedSeconds": 0.186630503, + "uploadSeconds": 0.000004785, + "downloadSeconds": 0.061890439 }, { - "connectionEstablishedSeconds": 0.188027247, - "uploadSeconds": 0.000002917, - "downloadSeconds": 0.062328405 + "connectionEstablishedSeconds": 0.182287487, + "uploadSeconds": 0.00000373, + "downloadSeconds": 0.060437908 }, { - "connectionEstablishedSeconds": 0.195207956, - "uploadSeconds": 0.000003012, - "downloadSeconds": 0.064754265 + "connectionEstablishedSeconds": 0.190073749, + "uploadSeconds": 0.000003001, + "downloadSeconds": 0.062892605 }, { - "connectionEstablishedSeconds": 0.190079317, - "uploadSeconds": 0.000004124, - "downloadSeconds": 0.062940938 + "connectionEstablishedSeconds": 0.187970588, + "uploadSeconds": 0.000004204, + "downloadSeconds": 0.062110529 }, { - "connectionEstablishedSeconds": 0.19125065, - "uploadSeconds": 0.000003096, - "downloadSeconds": 0.063017625 + "connectionEstablishedSeconds": 0.185083699, + "uploadSeconds": 0.00000318, + "downloadSeconds": 0.061196717 }, { - "connectionEstablishedSeconds": 0.189269514, - "uploadSeconds": 0.000003286, - "downloadSeconds": 0.062708315 + "connectionEstablishedSeconds": 0.184069718, + "uploadSeconds": 0.000004065, + "downloadSeconds": 0.060306442 }, { - "connectionEstablishedSeconds": 0.190415547, - "uploadSeconds": 0.000003906, - "downloadSeconds": 0.063148976 + "connectionEstablishedSeconds": 0.185998883, + "uploadSeconds": 0.00000313, + "downloadSeconds": 0.061513072 }, { - "connectionEstablishedSeconds": 0.187764982, - "uploadSeconds": 0.000003329, - "downloadSeconds": 0.061561417 + "connectionEstablishedSeconds": 0.192536728, + "uploadSeconds": 0.000003128, + "downloadSeconds": 0.063119368 }, { - "connectionEstablishedSeconds": 0.184668878, - "uploadSeconds": 0.000003093, - "downloadSeconds": 0.060799904 + "connectionEstablishedSeconds": 0.185464008, + "uploadSeconds": 0.000004191, + "downloadSeconds": 0.060725965 }, { - "connectionEstablishedSeconds": 0.178886012, - "uploadSeconds": 0.000003475, - "downloadSeconds": 0.058630013 + "connectionEstablishedSeconds": 0.180226658, + "uploadSeconds": 0.000003442, + "downloadSeconds": 0.059633921 }, { - "connectionEstablishedSeconds": 0.187124831, - "uploadSeconds": 0.000003911, - "downloadSeconds": 0.061490874 + "connectionEstablishedSeconds": 0.194965481, + "uploadSeconds": 0.000005938, + "downloadSeconds": 0.064359458 }, { - "connectionEstablishedSeconds": 0.191519886, - "uploadSeconds": 0.000003354, - "downloadSeconds": 0.06284 + "connectionEstablishedSeconds": 0.182439182, + "uploadSeconds": 0.000003614, + "downloadSeconds": 0.060362038 }, { - "connectionEstablishedSeconds": 0.183677331, - "uploadSeconds": 0.000003329, - "downloadSeconds": 0.060895723 + "connectionEstablishedSeconds": 0.192508667, + "uploadSeconds": 0.000003412, + "downloadSeconds": 0.063704292 }, { - "connectionEstablishedSeconds": 0.193609607, - "uploadSeconds": 0.000003424, - "downloadSeconds": 0.063463555 + "connectionEstablishedSeconds": 0.186931537, + "uploadSeconds": 0.000003467, + "downloadSeconds": 0.061294501 }, { - "connectionEstablishedSeconds": 0.190345657, - "uploadSeconds": 0.000004193, - "downloadSeconds": 0.062501922 + "connectionEstablishedSeconds": 0.191518338, + "uploadSeconds": 0.000004447, + "downloadSeconds": 0.062653135 }, { - "connectionEstablishedSeconds": 0.189962975, - "uploadSeconds": 0.000003208, - "downloadSeconds": 0.06288207 + "connectionEstablishedSeconds": 0.19192684, + "uploadSeconds": 0.000003705, + "downloadSeconds": 0.062893242 }, { - "connectionEstablishedSeconds": 0.187529507, - "uploadSeconds": 0.000003354, - "downloadSeconds": 0.061472793 + "connectionEstablishedSeconds": 0.185394753, + "uploadSeconds": 0.000004483, + "downloadSeconds": 0.061331984 }, { - "connectionEstablishedSeconds": 0.187134544, - "uploadSeconds": 0.000006123, - "downloadSeconds": 0.061314985 + "connectionEstablishedSeconds": 0.185708486, + "uploadSeconds": 0.000003951, + "downloadSeconds": 0.0607885 }, { - "connectionEstablishedSeconds": 0.197905948, - "uploadSeconds": 0.000003685, - "downloadSeconds": 0.065034712 + "connectionEstablishedSeconds": 0.183875796, + "uploadSeconds": 0.0000047, + "downloadSeconds": 0.060791407 }, { - "connectionEstablishedSeconds": 0.177555793, - "uploadSeconds": 0.000003361, - "downloadSeconds": 0.058861411 + "connectionEstablishedSeconds": 0.192025954, + "uploadSeconds": 0.000006376, + "downloadSeconds": 0.063456396 }, { - "connectionEstablishedSeconds": 0.191306735, - "uploadSeconds": 0.000017854, - "downloadSeconds": 0.064192984 + "connectionEstablishedSeconds": 0.196378458, + "uploadSeconds": 0.000003546, + "downloadSeconds": 0.065019283 }, { - "connectionEstablishedSeconds": 0.196022343, - "uploadSeconds": 0.000003263, - "downloadSeconds": 0.065029693 + "connectionEstablishedSeconds": 0.181342825, + "uploadSeconds": 0.00000346, + "downloadSeconds": 0.059890191 }, { - "connectionEstablishedSeconds": 0.193764388, - "uploadSeconds": 0.000003303, - "downloadSeconds": 0.063631364 + "connectionEstablishedSeconds": 0.182238767, + "uploadSeconds": 0.000017619, + "downloadSeconds": 0.060241578 }, { - "connectionEstablishedSeconds": 0.196818543, - "uploadSeconds": 0.0000033, - "downloadSeconds": 0.064576233 + "connectionEstablishedSeconds": 0.185472707, + "uploadSeconds": 0.000010933, + "downloadSeconds": 0.060708375 }, { - "connectionEstablishedSeconds": 0.176810816, - "uploadSeconds": 0.000002908, - "downloadSeconds": 0.058414157 + "connectionEstablishedSeconds": 0.188838896, + "uploadSeconds": 0.000003734, + "downloadSeconds": 0.061928968 }, { - "connectionEstablishedSeconds": 0.192276585, - "uploadSeconds": 0.000003158, - "downloadSeconds": 0.06325269 + "connectionEstablishedSeconds": 0.185193048, + "uploadSeconds": 0.000003366, + "downloadSeconds": 0.061215954 }, { - "connectionEstablishedSeconds": 0.194074023, - "uploadSeconds": 0.000028356, - "downloadSeconds": 0.063717898 + "connectionEstablishedSeconds": 0.187592679, + "uploadSeconds": 0.000004438, + "downloadSeconds": 0.061473994 }, { - "connectionEstablishedSeconds": 0.193206952, - "uploadSeconds": 0.000003765, - "downloadSeconds": 0.0635352 + "connectionEstablishedSeconds": 0.193636801, + "uploadSeconds": 0.000004524, + "downloadSeconds": 0.064099879 }, { - "connectionEstablishedSeconds": 0.190057792, - "uploadSeconds": 0.000003348, - "downloadSeconds": 0.062436626 + "connectionEstablishedSeconds": 0.184201271, + "uploadSeconds": 0.000003432, + "downloadSeconds": 0.060985428 }, { - "connectionEstablishedSeconds": 0.18784935, - "uploadSeconds": 0.000003782, - "downloadSeconds": 0.061669523 + "connectionEstablishedSeconds": 0.194326728, + "uploadSeconds": 0.000003155, + "downloadSeconds": 0.064259504 }, { - "connectionEstablishedSeconds": 0.198006008, - "uploadSeconds": 0.000003444, - "downloadSeconds": 0.065708426 + "connectionEstablishedSeconds": 0.194445779, + "uploadSeconds": 0.000004119, + "downloadSeconds": 0.064261936 }, { - "connectionEstablishedSeconds": 0.188476641, - "uploadSeconds": 0.0000039, - "downloadSeconds": 0.062462671 + "connectionEstablishedSeconds": 0.185737118, + "uploadSeconds": 0.00000329, + "downloadSeconds": 0.060933254 }, { - "connectionEstablishedSeconds": 0.182203575, - "uploadSeconds": 0.000003323, - "downloadSeconds": 0.060250246 + "connectionEstablishedSeconds": 0.191702829, + "uploadSeconds": 0.000003619, + "downloadSeconds": 0.06283655 }, { - "connectionEstablishedSeconds": 0.19490573, - "uploadSeconds": 0.000003738, - "downloadSeconds": 0.064006097 + "connectionEstablishedSeconds": 0.193856428, + "uploadSeconds": 0.000003181, + "downloadSeconds": 0.064125639 }, { - "connectionEstablishedSeconds": 0.185335964, - "uploadSeconds": 0.000003142, - "downloadSeconds": 0.06146971 + "connectionEstablishedSeconds": 0.197002058, + "uploadSeconds": 0.000003796, + "downloadSeconds": 0.065150551 }, { - "connectionEstablishedSeconds": 0.183792864, - "uploadSeconds": 0.000003206, - "downloadSeconds": 0.060305569 + "connectionEstablishedSeconds": 0.188234771, + "uploadSeconds": 0.000002842, + "downloadSeconds": 0.062380961 }, { - "connectionEstablishedSeconds": 0.19713591, - "uploadSeconds": 0.000003169, - "downloadSeconds": 0.065241664 + "connectionEstablishedSeconds": 0.189238149, + "uploadSeconds": 0.000002815, + "downloadSeconds": 0.062670946 }, { - "connectionEstablishedSeconds": 0.184555929, - "uploadSeconds": 0.000003789, - "downloadSeconds": 0.060342486 + "connectionEstablishedSeconds": 0.190280679, + "uploadSeconds": 0.000003373, + "downloadSeconds": 0.063065695 }, { - "connectionEstablishedSeconds": 0.191511875, - "uploadSeconds": 0.000002978, - "downloadSeconds": 0.063331886 + "connectionEstablishedSeconds": 0.186700069, + "uploadSeconds": 0.000003589, + "downloadSeconds": 0.061838272 }, { - "connectionEstablishedSeconds": 0.190624737, - "uploadSeconds": 0.000004287, - "downloadSeconds": 0.063210077 + "connectionEstablishedSeconds": 0.188825445, + "uploadSeconds": 0.000026162, + "downloadSeconds": 0.062522361 }, { - "connectionEstablishedSeconds": 0.194129578, - "uploadSeconds": 0.000004907, - "downloadSeconds": 0.064407992 + "connectionEstablishedSeconds": 0.184322559, + "uploadSeconds": 0.000003948, + "downloadSeconds": 0.060868078 }, { - "connectionEstablishedSeconds": 0.195752646, - "uploadSeconds": 0.000003319, - "downloadSeconds": 0.064317242 + "connectionEstablishedSeconds": 0.183973916, + "uploadSeconds": 0.000010764, + "downloadSeconds": 0.060144183 }, { - "connectionEstablishedSeconds": 0.19257992, - "uploadSeconds": 0.000003625, - "downloadSeconds": 0.063064308 + "connectionEstablishedSeconds": 0.193049526, + "uploadSeconds": 0.000003917, + "downloadSeconds": 0.063845259 }, { - "connectionEstablishedSeconds": 0.189536779, - "uploadSeconds": 0.000004356, - "downloadSeconds": 0.062742188 + "connectionEstablishedSeconds": 0.191696109, + "uploadSeconds": 0.000003516, + "downloadSeconds": 0.063412521 }, { - "connectionEstablishedSeconds": 0.188275419, - "uploadSeconds": 0.000003002, - "downloadSeconds": 0.062369722 + "connectionEstablishedSeconds": 0.186839716, + "uploadSeconds": 0.000003305, + "downloadSeconds": 0.061833216 }, { - "connectionEstablishedSeconds": 0.186185139, - "uploadSeconds": 0.000003817, - "downloadSeconds": 0.06109316 + "connectionEstablishedSeconds": 0.191809822, + "uploadSeconds": 0.000003792, + "downloadSeconds": 0.063403856 }, { - "connectionEstablishedSeconds": 0.184696604, - "uploadSeconds": 0.000003261, - "downloadSeconds": 0.060609072 + "connectionEstablishedSeconds": 0.194129095, + "uploadSeconds": 0.00001352, + "downloadSeconds": 0.06352246 }, { - "connectionEstablishedSeconds": 0.196722355, - "uploadSeconds": 0.000003351, - "downloadSeconds": 0.064479896 + "connectionEstablishedSeconds": 0.181180001, + "uploadSeconds": 0.000004572, + "downloadSeconds": 0.059934202 }, { - "connectionEstablishedSeconds": 0.191478022, - "uploadSeconds": 0.000003218, - "downloadSeconds": 0.063413269 + "connectionEstablishedSeconds": 0.180661281, + "uploadSeconds": 0.000003547, + "downloadSeconds": 0.059755159 }, { - "connectionEstablishedSeconds": 0.187673152, - "uploadSeconds": 0.000004551, - "downloadSeconds": 0.062067971 + "connectionEstablishedSeconds": 0.190152936, + "uploadSeconds": 0.000003181, + "downloadSeconds": 0.063054685 }, { - "connectionEstablishedSeconds": 0.193827421, - "uploadSeconds": 0.000003475, - "downloadSeconds": 0.06433508 + "connectionEstablishedSeconds": 0.186944328, + "uploadSeconds": 0.000003496, + "downloadSeconds": 0.061904523 }, { - "connectionEstablishedSeconds": 0.192151163, - "uploadSeconds": 0.000003606, - "downloadSeconds": 0.06354583 + "connectionEstablishedSeconds": 0.190184668, + "uploadSeconds": 0.000003288, + "downloadSeconds": 0.062883361 }, { - "connectionEstablishedSeconds": 0.191935843, - "uploadSeconds": 0.000008481, - "downloadSeconds": 0.06291483 + "connectionEstablishedSeconds": 0.187276895, + "uploadSeconds": 0.000003031, + "downloadSeconds": 0.061909398 }, { - "connectionEstablishedSeconds": 0.185985133, - "uploadSeconds": 0.00000336, - "downloadSeconds": 0.060967739 + "connectionEstablishedSeconds": 0.196410805, + "uploadSeconds": 0.000003343, + "downloadSeconds": 0.064392076 }, { - "connectionEstablishedSeconds": 0.195609673, - "uploadSeconds": 0.000003403, - "downloadSeconds": 0.064748252 + "connectionEstablishedSeconds": 0.186942448, + "uploadSeconds": 0.000003256, + "downloadSeconds": 0.061798213 }, { - "connectionEstablishedSeconds": 0.188223984, - "uploadSeconds": 0.000003478, - "downloadSeconds": 0.061775663 + "connectionEstablishedSeconds": 0.195507958, + "uploadSeconds": 0.000004205, + "downloadSeconds": 0.06431094 }, { - "connectionEstablishedSeconds": 0.194433271, - "uploadSeconds": 0.000003335, - "downloadSeconds": 0.06381819 + "connectionEstablishedSeconds": 0.188729854, + "uploadSeconds": 0.000003247, + "downloadSeconds": 0.062861007 }, { - "connectionEstablishedSeconds": 0.192984602, - "uploadSeconds": 0.000009887, - "downloadSeconds": 0.06334622 + "connectionEstablishedSeconds": 0.176308767, + "uploadSeconds": 0.000003269, + "downloadSeconds": 0.058376847 }, { - "connectionEstablishedSeconds": 0.192388961, - "uploadSeconds": 0.00000345, - "downloadSeconds": 0.063253286 + "connectionEstablishedSeconds": 0.185853802, + "uploadSeconds": 0.000034454, + "downloadSeconds": 0.060993945 }, { - "connectionEstablishedSeconds": 0.191417727, - "uploadSeconds": 0.000004113, - "downloadSeconds": 0.063491585 + "connectionEstablishedSeconds": 0.195486075, + "uploadSeconds": 0.000003437, + "downloadSeconds": 0.064021667 }, { - "connectionEstablishedSeconds": 0.189679397, - "uploadSeconds": 0.000003253, - "downloadSeconds": 0.062184388 + "connectionEstablishedSeconds": 0.189181712, + "uploadSeconds": 0.000003585, + "downloadSeconds": 0.062231455 }, { - "connectionEstablishedSeconds": 0.193117883, - "uploadSeconds": 0.000003131, - "downloadSeconds": 0.063380846 + "connectionEstablishedSeconds": 0.189533428, + "uploadSeconds": 0.000003974, + "downloadSeconds": 0.061964976 }, { - "connectionEstablishedSeconds": 0.198822172, - "uploadSeconds": 0.000003281, - "downloadSeconds": 0.06583434 + "connectionEstablishedSeconds": 0.196418242, + "uploadSeconds": 0.000004446, + "downloadSeconds": 0.064289062 }, { - "connectionEstablishedSeconds": 0.194338454, - "uploadSeconds": 0.000003423, - "downloadSeconds": 0.063830621 + "connectionEstablishedSeconds": 0.185007671, + "uploadSeconds": 0.000003875, + "downloadSeconds": 0.061191973 }, { - "connectionEstablishedSeconds": 0.183162377, - "uploadSeconds": 0.00000359, - "downloadSeconds": 0.06064044 + "connectionEstablishedSeconds": 0.194761992, + "uploadSeconds": 0.000003472, + "downloadSeconds": 0.064167683 }, { - "connectionEstablishedSeconds": 0.185396487, - "uploadSeconds": 0.000003061, - "downloadSeconds": 0.060731449 + "connectionEstablishedSeconds": 0.189410553, + "uploadSeconds": 0.000003401, + "downloadSeconds": 0.062670457 }, { - "connectionEstablishedSeconds": 0.191415236, - "uploadSeconds": 0.000003353, - "downloadSeconds": 0.063384523 + "connectionEstablishedSeconds": 0.184269226, + "uploadSeconds": 0.000003269, + "downloadSeconds": 0.061020116 }, { - "connectionEstablishedSeconds": 0.190619261, - "uploadSeconds": 0.000003132, - "downloadSeconds": 0.063068455 + "connectionEstablishedSeconds": 0.191795192, + "uploadSeconds": 0.000003046, + "downloadSeconds": 0.063424398 }, { - "connectionEstablishedSeconds": 0.194471485, - "uploadSeconds": 0.000002969, - "downloadSeconds": 0.064423235 + "connectionEstablishedSeconds": 0.187122482, + "uploadSeconds": 0.000003171, + "downloadSeconds": 0.061827626 }, { - "connectionEstablishedSeconds": 0.188817858, - "uploadSeconds": 0.000003669, - "downloadSeconds": 0.061856513 + "connectionEstablishedSeconds": 0.187808498, + "uploadSeconds": 0.000004047, + "downloadSeconds": 0.061480245 }, { - "connectionEstablishedSeconds": 0.183555378, - "uploadSeconds": 0.000005259, - "downloadSeconds": 0.060761592 + "connectionEstablishedSeconds": 0.189174617, + "uploadSeconds": 0.000003394, + "downloadSeconds": 0.062532492 }, { - "connectionEstablishedSeconds": 0.188950417, - "uploadSeconds": 0.000003292, - "downloadSeconds": 0.062089214 + "connectionEstablishedSeconds": 0.189730447, + "uploadSeconds": 0.000003184, + "downloadSeconds": 0.062915557 }, { - "connectionEstablishedSeconds": 0.186506121, - "uploadSeconds": 0.000004426, - "downloadSeconds": 0.061217405 + "connectionEstablishedSeconds": 0.194496172, + "uploadSeconds": 0.00000356, + "downloadSeconds": 0.064392806 } ], "implementation": "go-libp2p", @@ -3517,504 +3517,504 @@ { "result": [ { - "connectionEstablishedSeconds": 0.063853531, - "uploadSeconds": 0.000002147, - "downloadSeconds": 0.061903846 + "connectionEstablishedSeconds": 0.066922628, + "uploadSeconds": 0.000005352, + "downloadSeconds": 0.063030899 }, { - "connectionEstablishedSeconds": 0.064982901, - "uploadSeconds": 0.000002321, - "downloadSeconds": 0.061408073 + "connectionEstablishedSeconds": 0.06707135, + "uploadSeconds": 0.000002129, + "downloadSeconds": 0.063328551 }, { - "connectionEstablishedSeconds": 0.065961812, - "uploadSeconds": 0.000001949, - "downloadSeconds": 0.063958454 + "connectionEstablishedSeconds": 0.067132787, + "uploadSeconds": 0.000001963, + "downloadSeconds": 0.063505627 }, { - "connectionEstablishedSeconds": 0.070058086, - "uploadSeconds": 0.000002079, - "downloadSeconds": 0.067094922 + "connectionEstablishedSeconds": 0.065440265, + "uploadSeconds": 0.000009053, + "downloadSeconds": 0.06154525 }, { - "connectionEstablishedSeconds": 0.065052069, - "uploadSeconds": 0.000002384, - "downloadSeconds": 0.061295116 + "connectionEstablishedSeconds": 0.06621482, + "uploadSeconds": 0.000002119, + "downloadSeconds": 0.062139616 }, { - "connectionEstablishedSeconds": 0.065195841, - "uploadSeconds": 0.000002264, - "downloadSeconds": 0.063325662 + "connectionEstablishedSeconds": 0.065910382, + "uploadSeconds": 0.000012239, + "downloadSeconds": 0.062562526 }, { - "connectionEstablishedSeconds": 0.066803352, - "uploadSeconds": 0.000002064, - "downloadSeconds": 0.063079582 + "connectionEstablishedSeconds": 0.065909146, + "uploadSeconds": 0.000002035, + "downloadSeconds": 0.0621534 }, { - "connectionEstablishedSeconds": 0.067422036, - "uploadSeconds": 0.000002035, - "downloadSeconds": 0.0636488 + "connectionEstablishedSeconds": 0.06801384, + "uploadSeconds": 0.000002923, + "downloadSeconds": 0.064059605 }, { - "connectionEstablishedSeconds": 0.066899127, - "uploadSeconds": 0.000002832, - "downloadSeconds": 0.063135269 + "connectionEstablishedSeconds": 0.067818056, + "uploadSeconds": 0.000002197, + "downloadSeconds": 0.064130496 }, { - "connectionEstablishedSeconds": 0.065792178, - "uploadSeconds": 0.000002077, - "downloadSeconds": 0.062246279 + "connectionEstablishedSeconds": 0.06785023, + "uploadSeconds": 0.000002279, + "downloadSeconds": 0.063949204 }, { - "connectionEstablishedSeconds": 0.063350798, - "uploadSeconds": 0.000002209, - "downloadSeconds": 0.061342022 + "connectionEstablishedSeconds": 0.064979961, + "uploadSeconds": 0.000002137, + "downloadSeconds": 0.06111793 }, { - "connectionEstablishedSeconds": 0.067943277, - "uploadSeconds": 0.000001636, - "downloadSeconds": 0.064165736 + "connectionEstablishedSeconds": 0.063004329, + "uploadSeconds": 0.000002053, + "downloadSeconds": 0.060985052 }, { - "connectionEstablishedSeconds": 0.065498156, - "uploadSeconds": 0.000001983, - "downloadSeconds": 0.063615849 + "connectionEstablishedSeconds": 0.067792429, + "uploadSeconds": 0.000002436, + "downloadSeconds": 0.063913122 }, { - "connectionEstablishedSeconds": 0.063746753, - "uploadSeconds": 0.000003141, - "downloadSeconds": 0.061706192 + "connectionEstablishedSeconds": 0.067990841, + "uploadSeconds": 0.000002295, + "downloadSeconds": 0.06444806 }, { - "connectionEstablishedSeconds": 0.064723996, - "uploadSeconds": 0.00000233, - "downloadSeconds": 0.062873571 + "connectionEstablishedSeconds": 0.066343242, + "uploadSeconds": 0.000002096, + "downloadSeconds": 0.062580386 }, { - "connectionEstablishedSeconds": 0.064921098, - "uploadSeconds": 0.000020849, - "downloadSeconds": 0.063130592 + "connectionEstablishedSeconds": 0.065857475, + "uploadSeconds": 0.00000196, + "downloadSeconds": 0.06216352 }, { - "connectionEstablishedSeconds": 0.067853394, - "uploadSeconds": 0.000002141, - "downloadSeconds": 0.063972579 + "connectionEstablishedSeconds": 0.065371853, + "uploadSeconds": 0.000023269, + "downloadSeconds": 0.063442293 }, { - "connectionEstablishedSeconds": 0.063701565, - "uploadSeconds": 0.000002394, - "downloadSeconds": 0.061574609 + "connectionEstablishedSeconds": 0.068804013, + "uploadSeconds": 0.00000206, + "downloadSeconds": 0.064941111 }, { - "connectionEstablishedSeconds": 0.067492406, - "uploadSeconds": 0.000002183, - "downloadSeconds": 0.063669215 + "connectionEstablishedSeconds": 0.063637443, + "uploadSeconds": 0.000002768, + "downloadSeconds": 0.059679162 }, { - "connectionEstablishedSeconds": 0.063868952, - "uploadSeconds": 0.000002008, - "downloadSeconds": 0.062071297 + "connectionEstablishedSeconds": 0.065207434, + "uploadSeconds": 0.000001918, + "downloadSeconds": 0.061318134 }, { - "connectionEstablishedSeconds": 0.066077904, - "uploadSeconds": 0.000001883, - "downloadSeconds": 0.064159921 + "connectionEstablishedSeconds": 0.06569069, + "uploadSeconds": 0.000001914, + "downloadSeconds": 0.063650073 }, { - "connectionEstablishedSeconds": 0.065112524, - "uploadSeconds": 0.000002018, - "downloadSeconds": 0.061445425 + "connectionEstablishedSeconds": 0.065767399, + "uploadSeconds": 0.00000194, + "downloadSeconds": 0.061918382 }, { - "connectionEstablishedSeconds": 0.066551635, - "uploadSeconds": 0.000001943, - "downloadSeconds": 0.062937389 + "connectionEstablishedSeconds": 0.064315928, + "uploadSeconds": 0.000001921, + "downloadSeconds": 0.062339162 }, { - "connectionEstablishedSeconds": 0.064780169, - "uploadSeconds": 0.000001746, - "downloadSeconds": 0.061306276 + "connectionEstablishedSeconds": 0.062556024, + "uploadSeconds": 0.00000372, + "downloadSeconds": 0.059064693 }, { - "connectionEstablishedSeconds": 0.066465614, - "uploadSeconds": 0.000003093, - "downloadSeconds": 0.065517295 + "connectionEstablishedSeconds": 0.063431722, + "uploadSeconds": 0.000001945, + "downloadSeconds": 0.059542485 }, { - "connectionEstablishedSeconds": 0.063794166, - "uploadSeconds": 0.000003571, - "downloadSeconds": 0.061647819 + "connectionEstablishedSeconds": 0.06581807, + "uploadSeconds": 0.000002505, + "downloadSeconds": 0.062084981 }, { - "connectionEstablishedSeconds": 0.063356582, - "uploadSeconds": 0.000002864, - "downloadSeconds": 0.061416973 + "connectionEstablishedSeconds": 0.065171919, + "uploadSeconds": 0.000002065, + "downloadSeconds": 0.061944794 }, { - "connectionEstablishedSeconds": 0.064958744, - "uploadSeconds": 0.000008552, - "downloadSeconds": 0.061439026 + "connectionEstablishedSeconds": 0.065486746, + "uploadSeconds": 0.000002186, + "downloadSeconds": 0.061692866 }, { - "connectionEstablishedSeconds": 0.066975692, - "uploadSeconds": 0.00000256, - "downloadSeconds": 0.063151967 + "connectionEstablishedSeconds": 0.065934792, + "uploadSeconds": 0.000001834, + "downloadSeconds": 0.062104727 }, { - "connectionEstablishedSeconds": 0.066554911, - "uploadSeconds": 0.000004909, - "downloadSeconds": 0.064505998 + "connectionEstablishedSeconds": 0.066978153, + "uploadSeconds": 0.000009043, + "downloadSeconds": 0.063348551 }, { - "connectionEstablishedSeconds": 0.069351545, - "uploadSeconds": 0.000001972, - "downloadSeconds": 0.065523048 + "connectionEstablishedSeconds": 0.065119357, + "uploadSeconds": 0.000002436, + "downloadSeconds": 0.061256806 }, { - "connectionEstablishedSeconds": 0.067342819, - "uploadSeconds": 0.000002713, - "downloadSeconds": 0.063545465 + "connectionEstablishedSeconds": 0.062444797, + "uploadSeconds": 0.000002411, + "downloadSeconds": 0.059050465 }, { - "connectionEstablishedSeconds": 0.069139158, - "uploadSeconds": 0.000002075, - "downloadSeconds": 0.065241092 + "connectionEstablishedSeconds": 0.065695197, + "uploadSeconds": 0.000001928, + "downloadSeconds": 0.061853956 }, { - "connectionEstablishedSeconds": 0.064710306, - "uploadSeconds": 0.000001897, - "downloadSeconds": 0.061037498 + "connectionEstablishedSeconds": 0.064993491, + "uploadSeconds": 0.000002038, + "downloadSeconds": 0.061670047 }, { - "connectionEstablishedSeconds": 0.068369429, - "uploadSeconds": 0.000002043, - "downloadSeconds": 0.06492128 + "connectionEstablishedSeconds": 0.065312902, + "uploadSeconds": 0.000002547, + "downloadSeconds": 0.061374028 }, { - "connectionEstablishedSeconds": 0.068059504, - "uploadSeconds": 0.00000186, - "downloadSeconds": 0.064188367 + "connectionEstablishedSeconds": 0.065156961, + "uploadSeconds": 0.000001894, + "downloadSeconds": 0.061883038 }, { - "connectionEstablishedSeconds": 0.066030516, - "uploadSeconds": 0.000002005, - "downloadSeconds": 0.062195243 + "connectionEstablishedSeconds": 0.067970966, + "uploadSeconds": 0.000002151, + "downloadSeconds": 0.064037572 }, { - "connectionEstablishedSeconds": 0.062159714, - "uploadSeconds": 0.000002165, - "downloadSeconds": 0.060150927 + "connectionEstablishedSeconds": 0.063205386, + "uploadSeconds": 0.000001849, + "downloadSeconds": 0.061184034 }, { - "connectionEstablishedSeconds": 0.065208248, - "uploadSeconds": 0.000002206, - "downloadSeconds": 0.063135191 + "connectionEstablishedSeconds": 0.064585287, + "uploadSeconds": 0.000002009, + "downloadSeconds": 0.061121857 }, { - "connectionEstablishedSeconds": 0.065286705, - "uploadSeconds": 0.000002558, - "downloadSeconds": 0.063171598 + "connectionEstablishedSeconds": 0.066126302, + "uploadSeconds": 0.000002709, + "downloadSeconds": 0.062159423 }, { - "connectionEstablishedSeconds": 0.068470709, - "uploadSeconds": 0.000002386, - "downloadSeconds": 0.064698216 + "connectionEstablishedSeconds": 0.066305019, + "uploadSeconds": 0.000002026, + "downloadSeconds": 0.062225233 }, { - "connectionEstablishedSeconds": 0.063230961, - "uploadSeconds": 0.000002172, - "downloadSeconds": 0.05948708 + "connectionEstablishedSeconds": 0.064983252, + "uploadSeconds": 0.000002131, + "downloadSeconds": 0.061307883 }, { - "connectionEstablishedSeconds": 0.064312679, - "uploadSeconds": 0.00000246, - "downloadSeconds": 0.06252934 + "connectionEstablishedSeconds": 0.065947013, + "uploadSeconds": 0.00000197, + "downloadSeconds": 0.062179803 }, { - "connectionEstablishedSeconds": 0.066295193, - "uploadSeconds": 0.000002329, - "downloadSeconds": 0.062686328 + "connectionEstablishedSeconds": 0.066676695, + "uploadSeconds": 0.000002067, + "downloadSeconds": 0.064400947 }, { - "connectionEstablishedSeconds": 0.065746978, - "uploadSeconds": 0.000018708, - "downloadSeconds": 0.062202181 + "connectionEstablishedSeconds": 0.06638853, + "uploadSeconds": 0.000002339, + "downloadSeconds": 0.062730715 }, { - "connectionEstablishedSeconds": 0.065714765, - "uploadSeconds": 0.000002683, - "downloadSeconds": 0.063791958 + "connectionEstablishedSeconds": 0.063345535, + "uploadSeconds": 0.000002166, + "downloadSeconds": 0.059499311 }, { - "connectionEstablishedSeconds": 0.064226408, - "uploadSeconds": 0.000002094, - "downloadSeconds": 0.062257861 + "connectionEstablishedSeconds": 0.065428625, + "uploadSeconds": 0.000001985, + "downloadSeconds": 0.061408008 }, { - "connectionEstablishedSeconds": 0.068032673, - "uploadSeconds": 0.000003414, - "downloadSeconds": 0.064262246 + "connectionEstablishedSeconds": 0.06867818, + "uploadSeconds": 0.000001867, + "downloadSeconds": 0.06490522 }, { - "connectionEstablishedSeconds": 0.067097228, - "uploadSeconds": 0.000002003, - "downloadSeconds": 0.06329759 + "connectionEstablishedSeconds": 0.065678468, + "uploadSeconds": 0.000002841, + "downloadSeconds": 0.063536271 }, { - "connectionEstablishedSeconds": 0.06625451, - "uploadSeconds": 0.000002024, - "downloadSeconds": 0.062532233 + "connectionEstablishedSeconds": 0.065225608, + "uploadSeconds": 0.000002395, + "downloadSeconds": 0.061372583 }, { - "connectionEstablishedSeconds": 0.064510297, - "uploadSeconds": 0.000002254, - "downloadSeconds": 0.063151006 + "connectionEstablishedSeconds": 0.063468774, + "uploadSeconds": 0.000002418, + "downloadSeconds": 0.060022087 }, { - "connectionEstablishedSeconds": 0.068352644, - "uploadSeconds": 0.000008445, - "downloadSeconds": 0.064571904 + "connectionEstablishedSeconds": 0.066156549, + "uploadSeconds": 0.00000233, + "downloadSeconds": 0.062415564 }, { - "connectionEstablishedSeconds": 0.066602972, - "uploadSeconds": 0.000002182, - "downloadSeconds": 0.063109213 + "connectionEstablishedSeconds": 0.065140902, + "uploadSeconds": 0.000001934, + "downloadSeconds": 0.061305908 }, { - "connectionEstablishedSeconds": 0.067583783, - "uploadSeconds": 0.000002343, - "downloadSeconds": 0.063861056 + "connectionEstablishedSeconds": 0.065056648, + "uploadSeconds": 0.000002397, + "downloadSeconds": 0.061307842 }, { - "connectionEstablishedSeconds": 0.066546478, - "uploadSeconds": 0.000002032, - "downloadSeconds": 0.064617388 + "connectionEstablishedSeconds": 0.066963459, + "uploadSeconds": 0.00000545, + "downloadSeconds": 0.063221831 }, { - "connectionEstablishedSeconds": 0.065510554, - "uploadSeconds": 0.000003316, - "downloadSeconds": 0.061889018 + "connectionEstablishedSeconds": 0.065800288, + "uploadSeconds": 0.000003101, + "downloadSeconds": 0.062124241 }, { - "connectionEstablishedSeconds": 0.064845031, - "uploadSeconds": 0.000002076, - "downloadSeconds": 0.063807569 + "connectionEstablishedSeconds": 0.064775748, + "uploadSeconds": 0.000002067, + "downloadSeconds": 0.061071155 }, { - "connectionEstablishedSeconds": 0.0688521, - "uploadSeconds": 0.000003133, - "downloadSeconds": 0.065068437 + "connectionEstablishedSeconds": 0.067344037, + "uploadSeconds": 0.000002334, + "downloadSeconds": 0.063530574 }, { - "connectionEstablishedSeconds": 0.065013793, - "uploadSeconds": 0.000002318, - "downloadSeconds": 0.061350768 + "connectionEstablishedSeconds": 0.067101632, + "uploadSeconds": 0.000001963, + "downloadSeconds": 0.063331796 }, { - "connectionEstablishedSeconds": 0.066968385, - "uploadSeconds": 0.000002255, - "downloadSeconds": 0.063070469 + "connectionEstablishedSeconds": 0.066652538, + "uploadSeconds": 0.000002026, + "downloadSeconds": 0.063471765 }, { - "connectionEstablishedSeconds": 0.067112664, - "uploadSeconds": 0.000002597, - "downloadSeconds": 0.063252006 + "connectionEstablishedSeconds": 0.065557726, + "uploadSeconds": 0.000002198, + "downloadSeconds": 0.06225219 }, { - "connectionEstablishedSeconds": 0.064987554, - "uploadSeconds": 0.000001884, - "downloadSeconds": 0.063063868 + "connectionEstablishedSeconds": 0.062330938, + "uploadSeconds": 0.000002131, + "downloadSeconds": 0.058568864 }, { - "connectionEstablishedSeconds": 0.065967073, - "uploadSeconds": 0.000001956, - "downloadSeconds": 0.062305387 + "connectionEstablishedSeconds": 0.068259918, + "uploadSeconds": 0.000001937, + "downloadSeconds": 0.064531738 }, { - "connectionEstablishedSeconds": 0.067108387, - "uploadSeconds": 0.000001894, - "downloadSeconds": 0.063445272 + "connectionEstablishedSeconds": 0.068372289, + "uploadSeconds": 0.000004991, + "downloadSeconds": 0.064424253 }, { - "connectionEstablishedSeconds": 0.06431435, - "uploadSeconds": 0.000002059, - "downloadSeconds": 0.060717924 + "connectionEstablishedSeconds": 0.0678853, + "uploadSeconds": 0.000002062, + "downloadSeconds": 0.06454054 }, { - "connectionEstablishedSeconds": 0.064242159, - "uploadSeconds": 0.000002072, - "downloadSeconds": 0.060499344 + "connectionEstablishedSeconds": 0.065395706, + "uploadSeconds": 0.000001855, + "downloadSeconds": 0.061657675 }, { - "connectionEstablishedSeconds": 0.066464554, - "uploadSeconds": 0.000002076, - "downloadSeconds": 0.062726048 + "connectionEstablishedSeconds": 0.06675671, + "uploadSeconds": 0.000002136, + "downloadSeconds": 0.063114776 }, { - "connectionEstablishedSeconds": 0.062476705, - "uploadSeconds": 0.000001993, - "downloadSeconds": 0.060485389 + "connectionEstablishedSeconds": 0.065232293, + "uploadSeconds": 0.000002104, + "downloadSeconds": 0.06195556 }, { - "connectionEstablishedSeconds": 0.06673264, - "uploadSeconds": 0.000001825, - "downloadSeconds": 0.063061146 + "connectionEstablishedSeconds": 0.065495674, + "uploadSeconds": 0.000008899, + "downloadSeconds": 0.063826287 }, { - "connectionEstablishedSeconds": 0.064060397, - "uploadSeconds": 0.000001966, - "downloadSeconds": 0.062155527 + "connectionEstablishedSeconds": 0.063829334, + "uploadSeconds": 0.000001837, + "downloadSeconds": 0.060089253 }, { - "connectionEstablishedSeconds": 0.066088265, - "uploadSeconds": 0.000003092, - "downloadSeconds": 0.062378945 + "connectionEstablishedSeconds": 0.06529261, + "uploadSeconds": 0.000028577, + "downloadSeconds": 0.061037682 }, { - "connectionEstablishedSeconds": 0.068514481, - "uploadSeconds": 0.000002025, - "downloadSeconds": 0.0646085 + "connectionEstablishedSeconds": 0.063842091, + "uploadSeconds": 0.000002584, + "downloadSeconds": 0.061806972 }, { - "connectionEstablishedSeconds": 0.064719319, - "uploadSeconds": 0.000001894, - "downloadSeconds": 0.061031787 + "connectionEstablishedSeconds": 0.068373301, + "uploadSeconds": 0.000002235, + "downloadSeconds": 0.064564059 }, { - "connectionEstablishedSeconds": 0.06607192, - "uploadSeconds": 0.000002233, - "downloadSeconds": 0.06412077 + "connectionEstablishedSeconds": 0.067130341, + "uploadSeconds": 0.000006149, + "downloadSeconds": 0.063393923 }, { - "connectionEstablishedSeconds": 0.067629578, - "uploadSeconds": 0.000002087, - "downloadSeconds": 0.063763949 + "connectionEstablishedSeconds": 0.067629003, + "uploadSeconds": 0.000002073, + "downloadSeconds": 0.063739106 }, { - "connectionEstablishedSeconds": 0.06230917, - "uploadSeconds": 0.000002348, - "downloadSeconds": 0.058402315 + "connectionEstablishedSeconds": 0.063323175, + "uploadSeconds": 0.000001912, + "downloadSeconds": 0.060204556 }, { - "connectionEstablishedSeconds": 0.064857756, - "uploadSeconds": 0.000002011, - "downloadSeconds": 0.061142836 + "connectionEstablishedSeconds": 0.065988954, + "uploadSeconds": 0.000002086, + "downloadSeconds": 0.063942446 }, { - "connectionEstablishedSeconds": 0.065864183, - "uploadSeconds": 0.000017621, - "downloadSeconds": 0.062186145 + "connectionEstablishedSeconds": 0.065993252, + "uploadSeconds": 0.000001936, + "downloadSeconds": 0.061955874 }, { - "connectionEstablishedSeconds": 0.06481408, - "uploadSeconds": 0.000002102, - "downloadSeconds": 0.062679584 + "connectionEstablishedSeconds": 0.065754517, + "uploadSeconds": 0.00000236, + "downloadSeconds": 0.06190852 }, { - "connectionEstablishedSeconds": 0.06828223, - "uploadSeconds": 0.000002038, - "downloadSeconds": 0.064575532 + "connectionEstablishedSeconds": 0.068200333, + "uploadSeconds": 0.00000205, + "downloadSeconds": 0.064447659 }, { - "connectionEstablishedSeconds": 0.067096999, - "uploadSeconds": 0.0000099, - "downloadSeconds": 0.063291858 + "connectionEstablishedSeconds": 0.067581364, + "uploadSeconds": 0.000005537, + "downloadSeconds": 0.064519643 }, { - "connectionEstablishedSeconds": 0.065024344, - "uploadSeconds": 0.000002007, - "downloadSeconds": 0.063014329 + "connectionEstablishedSeconds": 0.067438544, + "uploadSeconds": 0.000002636, + "downloadSeconds": 0.063958896 }, { - "connectionEstablishedSeconds": 0.064771268, - "uploadSeconds": 0.000002892, - "downloadSeconds": 0.064019739 + "connectionEstablishedSeconds": 0.064491387, + "uploadSeconds": 0.000002088, + "downloadSeconds": 0.060455355 }, { - "connectionEstablishedSeconds": 0.067307082, - "uploadSeconds": 0.000002052, - "downloadSeconds": 0.063716769 + "connectionEstablishedSeconds": 0.066671158, + "uploadSeconds": 0.000026897, + "downloadSeconds": 0.063500121 }, { - "connectionEstablishedSeconds": 0.066775409, - "uploadSeconds": 0.000002107, - "downloadSeconds": 0.063349371 + "connectionEstablishedSeconds": 0.064514258, + "uploadSeconds": 0.000002129, + "downloadSeconds": 0.062438357 }, { - "connectionEstablishedSeconds": 0.066830275, - "uploadSeconds": 0.000001923, - "downloadSeconds": 0.063185873 + "connectionEstablishedSeconds": 0.063022356, + "uploadSeconds": 0.000002118, + "downloadSeconds": 0.059175326 }, { - "connectionEstablishedSeconds": 0.06780674, - "uploadSeconds": 0.00000236, - "downloadSeconds": 0.064036164 + "connectionEstablishedSeconds": 0.068643807, + "uploadSeconds": 0.000001978, + "downloadSeconds": 0.064998081 }, { - "connectionEstablishedSeconds": 0.065967916, - "uploadSeconds": 0.000002265, - "downloadSeconds": 0.062318402 + "connectionEstablishedSeconds": 0.065079035, + "uploadSeconds": 0.000002169, + "downloadSeconds": 0.061898486 }, { - "connectionEstablishedSeconds": 0.064328056, - "uploadSeconds": 0.000002262, - "downloadSeconds": 0.062424217 + "connectionEstablishedSeconds": 0.066517253, + "uploadSeconds": 0.000001859, + "downloadSeconds": 0.064493146 }, { - "connectionEstablishedSeconds": 0.066084525, - "uploadSeconds": 0.000002192, - "downloadSeconds": 0.062286294 + "connectionEstablishedSeconds": 0.06317092, + "uploadSeconds": 0.000002025, + "downloadSeconds": 0.061145378 }, { - "connectionEstablishedSeconds": 0.06599978, - "uploadSeconds": 0.000002109, - "downloadSeconds": 0.062239371 + "connectionEstablishedSeconds": 0.065386759, + "uploadSeconds": 0.000001972, + "downloadSeconds": 0.061464088 }, { - "connectionEstablishedSeconds": 0.066048454, - "uploadSeconds": 0.000001851, - "downloadSeconds": 0.062367304 + "connectionEstablishedSeconds": 0.065555644, + "uploadSeconds": 0.000002253, + "downloadSeconds": 0.061802737 }, { - "connectionEstablishedSeconds": 0.063651651, - "uploadSeconds": 0.000001993, - "downloadSeconds": 0.061675867 + "connectionEstablishedSeconds": 0.066860035, + "uploadSeconds": 0.000001965, + "downloadSeconds": 0.06360708 }, { - "connectionEstablishedSeconds": 0.06226315, - "uploadSeconds": 0.000018316, - "downloadSeconds": 0.060474821 + "connectionEstablishedSeconds": 0.066994728, + "uploadSeconds": 0.000002868, + "downloadSeconds": 0.063096596 }, { - "connectionEstablishedSeconds": 0.066654209, - "uploadSeconds": 0.000004447, - "downloadSeconds": 0.064621304 + "connectionEstablishedSeconds": 0.064946091, + "uploadSeconds": 0.000001994, + "downloadSeconds": 0.062688798 }, { - "connectionEstablishedSeconds": 0.068243264, - "uploadSeconds": 0.000001947, - "downloadSeconds": 0.066378669 + "connectionEstablishedSeconds": 0.067006589, + "uploadSeconds": 0.000002901, + "downloadSeconds": 0.063116296 }, { - "connectionEstablishedSeconds": 0.065352793, - "uploadSeconds": 0.000002016, - "downloadSeconds": 0.061528441 + "connectionEstablishedSeconds": 0.068036808, + "uploadSeconds": 0.000002707, + "downloadSeconds": 0.063847827 }, { - "connectionEstablishedSeconds": 0.065683131, - "uploadSeconds": 0.000002917, - "downloadSeconds": 0.061882983 + "connectionEstablishedSeconds": 0.066680459, + "uploadSeconds": 0.000002029, + "downloadSeconds": 0.062822478 }, { - "connectionEstablishedSeconds": 0.066137011, - "uploadSeconds": 0.000002347, - "downloadSeconds": 0.064232968 + "connectionEstablishedSeconds": 0.065744865, + "uploadSeconds": 0.000002751, + "downloadSeconds": 0.062387904 }, { - "connectionEstablishedSeconds": 0.066276528, - "uploadSeconds": 0.000002005, - "downloadSeconds": 0.064312874 + "connectionEstablishedSeconds": 0.065077772, + "uploadSeconds": 0.000001905, + "downloadSeconds": 0.061134873 } ], "implementation": "go-libp2p", @@ -4031,173 +4031,173 @@ "pings": { "unit": "s", "results": [ - 0.0599, - 0.0599, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0598, - 0.0598, - 0.0599, - 0.0599, - 0.0598, - 0.0599, - 0.0599, - 0.0598, - 0.0598, - 0.0599, - 0.0599, - 0.0598, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0599, - 0.0598, - 0.0599, - 0.0598, - 0.0599, - 0.0599, - 0.0598, - 0.0599, - 0.0599, - 0.0599, - 0.0598, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0599, - 0.0599, - 0.0599, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0598, - 0.0599, - 0.06, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0599, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0598, - 0.0603, - 0.0598, - 0.0599, - 0.0599, - 0.0598 + 0.0631, + 0.0628, + 0.0628, + 0.0628, + 0.0629, + 0.0631, + 0.0632, + 0.0628, + 0.0628, + 0.0678, + 0.0681, + 0.0681, + 0.0681, + 0.0681, + 0.0681, + 0.0681, + 0.0624, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0634, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.063, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0631, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0628, + 0.06420000000000001, + 0.0629, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.063, + 0.0629, + 0.0629, + 0.063, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0632, + 0.0628, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629, + 0.0629, + 0.0629, + 0.0628, + 0.0629, + 0.0629 ] }, "iperf": { "unit": "bit/s", "results": [ - 3240000000, - 3240000000, - 3230000000, - 3240000000, - 3230000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3230000000, - 3230000000, - 3230000000, - 3230000000, - 3230000000, - 3230000000, - 3240000000, - 3250000000, - 3230000000, - 3230000000, - 3240000000, - 3230000000, - 3240000000, - 3230000000, - 3210000000, - 3190000000, - 3190000000, - 3190000000, - 3190000000, - 3220000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3230000000, - 3230000000, - 3240000000, - 3230000000, - 3230000000, - 3230000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3240000000, - 3210000000, - 3190000000, - 3190000000, - 3200000000, - 3200000000, - 3230000000, - 3230000000 + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3340000000, + 3340000000, + 3330000000, + 3340000000, + 3340000000, + 3340000000, + 3330000000, + 3300000000, + 3290000000, + 3280000000, + 3280000000, + 3280000000, + 3310000000, + 3330000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3330000000, + 3340000000, + 3330000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3340000000, + 3330000000, + 3120000000 ] } } \ No newline at end of file