diff --git a/Cargo.lock b/Cargo.lock index c4f4830..5a52a1a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,12 +61,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "anstream" version = "0.6.18" @@ -123,6 +117,12 @@ version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "arrayref" version = "0.3.9" @@ -163,7 +163,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.17", "time", ] @@ -204,32 +204,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix", + "rustix 1.1.2", "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", + "windows-sys 0.61.2", ] [[package]] @@ -256,13 +244,20 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "attohttpc" -version = "0.24.1" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2" +checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" dependencies = [ - "http 0.2.12", + "base64", + "http", "log", "url", ] @@ -294,6 +289,12 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.22.1" @@ -306,6 +307,15 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -347,6 +357,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + [[package]] name = "bs58" version = "0.5.1" @@ -374,6 +393,15 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + [[package]] name = "cc" version = "1.2.16" @@ -383,6 +411,18 @@ dependencies = [ "shlex", ] +[[package]] +name = "ccm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae3c82e4355234767756212c570e29833699ab63e6ffd161887314cc5b43847" +dependencies = [ + "aead", + "cipher", + "ctr", + "subtle", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -519,6 +559,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -614,6 +663,18 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -694,6 +755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] @@ -741,6 +803,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] @@ -764,9 +827,23 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dtoa" -version = "1.0.9" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] [[package]] name = "ed25519" @@ -799,6 +876,27 @@ version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "hkdf", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "enum-as-inner" version = "0.6.1" @@ -811,6 +909,26 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "enum-display" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02058bb25d8d0605829af88230427dd5cd50661590bd2b09d1baf7c64c417f24" +dependencies = [ + "enum-display-macro", +] + +[[package]] +name = "enum-display-macro" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4be2cf2fe7b971b1865febbacd4d8df544aa6bd377cca011a6d69dcf4c60d94" +dependencies = [ + "convert_case", + "quote", + "syn 1.0.109", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -828,32 +946,21 @@ dependencies = [ ] [[package]] -name = "event-listener" -version = "5.4.0" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "event-listener-strategy" -version = "0.5.3" +name = "ff" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "event-listener", - "pin-project-lite", + "rand_core 0.6.4", + "subtle", ] -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - [[package]] name = "fiat-crypto" version = "0.2.9" @@ -874,9 +981,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -969,9 +1076,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "futures-core", "pin-project-lite", @@ -1035,15 +1142,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generator" version = "0.8.5" @@ -1066,6 +1164,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1088,8 +1187,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.13.3+wasi-0.2.2", + "wasm-bindgen", "windows-targets 0.52.6", ] @@ -1109,18 +1210,29 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" -version = "0.3.26" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", - "http 0.2.12", + "http", "indexmap", "slab", "tokio", @@ -1134,28 +1246,29 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "allocator-api2", - "equivalent", "foldhash", ] [[package]] -name = "heck" -version = "0.5.0" +name = "hashlink" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown", +] [[package]] -name = "hermit-abi" -version = "0.3.9" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1163,31 +1276,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hickory-proto" -version = "0.24.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna", - "ipnet", - "once_cell", - "rand 0.8.5", - "socket2", - "thiserror 1.0.69", - "tinyvec", - "tokio", - "tracing", - "url", -] - [[package]] name = "hickory-proto" version = "0.25.2" @@ -1204,36 +1292,16 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.0", - "ring 0.17.11", - "thiserror 2.0.12", + "rand 0.9.2", + "ring", + "socket2 0.5.10", + "thiserror 2.0.17", "tinyvec", "tokio", "tracing", "url", ] -[[package]] -name = "hickory-resolver" -version = "0.24.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" -dependencies = [ - "cfg-if", - "futures-util", - "hickory-proto 0.24.4", - "ipconfig", - "lru-cache", - "once_cell", - "parking_lot", - "rand 0.8.5", - "resolv-conf", - "smallvec", - "thiserror 1.0.69", - "tokio", - "tracing", -] - [[package]] name = "hickory-resolver" version = "0.25.2" @@ -1242,15 +1310,15 @@ checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", "futures-util", - "hickory-proto 0.25.2", + "hickory-proto", "ipconfig", "moka", "once_cell", "parking_lot", - "rand 0.9.0", + "rand 0.9.2", "resolv-conf", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -1286,9 +1354,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1296,24 +1364,25 @@ dependencies = [ ] [[package]] -name = "http" -version = "1.2.0" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "fnv", - "itoa", + "http", ] [[package]] -name = "http-body" -version = "0.4.6" +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "http 0.2.12", + "futures-core", + "http", + "http-body", "pin-project-lite", ] @@ -1323,34 +1392,47 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" -version = "0.14.32" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", "futures-core", - "futures-util", "h2", - "http 0.2.12", + "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", - "socket2", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2 0.6.1", "tokio", "tower-service", "tracing", - "want", ] [[package]] @@ -1527,18 +1609,20 @@ dependencies = [ [[package]] name = "igd-next" -version = "0.14.3" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" +checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97" dependencies = [ "async-trait", "attohttpc", "bytes", "futures", - "http 0.2.12", + "http", + "http-body-util", "hyper", + "hyper-util", "log", - "rand 0.8.5", + "rand 0.9.2", "tokio", "url", "xmltree", @@ -1560,27 +1644,48 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ + "block-padding", "generic-array", ] [[package]] -name = "io-uring" -version = "0.7.9" +name = "interceptor" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "1ac0781c825d602095113772e389ef0607afcb869ae0e68a590d8e0799cdcef8" dependencies = [ - "bitflags 2.9.0", - "cfg-if", - "libc", -] - -[[package]] + "async-trait", + "bytes", + "log", + "portable-atomic", + "rand 0.8.5", + "rtcp", + "rtp", + "thiserror 1.0.69", + "tokio", + "waitgroup", + "webrtc-srtp", + "webrtc-util 0.11.0", +] + +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "libc", +] + +[[package]] name = "ipconfig" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2", + "socket2 0.5.10", "widestring", "windows-sys 0.48.0", "winreg", @@ -1637,9 +1742,8 @@ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libp2p" -version = "0.54.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbe80f9c7e00526cd6b838075b9c171919404a4732cb2fa8ece0a093223bfc4" +version = "0.56.1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "bytes", "either", @@ -1667,38 +1771,33 @@ dependencies = [ "multiaddr 0.18.2", "pin-project", "rw-stream-sink", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] name = "libp2p-allow-block-list" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1027ccf8d70320ed77e984f273bc8ce952f623762cb9bf2d126df73caef8041" +version = "0.6.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "void", ] [[package]] name = "libp2p-connection-limits" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d003540ee8baef0d254f7b6bfd79bac3ddf774662ca0abf69186d517ef82ad8" +version = "0.6.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "void", ] [[package]] name = "libp2p-core" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a61f26c83ed111104cd820fe9bc3aaabbac5f1652a1d213ed6e900b7918a1298" +version = "0.43.1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "either", "fnv", @@ -1708,29 +1807,25 @@ dependencies = [ "multiaddr 0.18.2", "multihash 0.19.3", "multistream-select", - "once_cell", "parking_lot", "pin-project", "quick-protobuf", "rand 0.8.5", "rw-stream-sink", - "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", "unsigned-varint 0.8.0", - "void", "web-time", ] [[package]] name = "libp2p-dns" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97f37f30d5c7275db282ecd86e54f29dd2176bd3ac656f06abf43bedb21eb8bd" +version = "0.44.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "async-trait", "futures", - "hickory-resolver 0.24.4", + "hickory-resolver", "libp2p-core", "libp2p-identity", "parking_lot", @@ -1740,9 +1835,8 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1711b004a273be4f30202778856368683bd9a83c4c7dcc8f848847606831a4e3" +version = "0.47.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "asynchronous-codec", "either", @@ -1752,20 +1846,18 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "lru", "quick-protobuf", "quick-protobuf-codec", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", - "void", ] [[package]] name = "libp2p-identity" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" +checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" dependencies = [ "bs58", "ed25519-dalek", @@ -1774,18 +1866,16 @@ dependencies = [ "quick-protobuf", "rand 0.8.5", "sha2", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", "zeroize", ] [[package]] name = "libp2p-kad" -version = "0.46.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced237d0bd84bbebb7c2cad4c073160dacb4fe40534963c32ed6d4c6bb7702a3" +version = "0.49.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ - "arrayvec", "asynchronous-codec", "bytes", "either", @@ -1801,39 +1891,34 @@ dependencies = [ "rand 0.8.5", "sha2", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", - "uint 0.9.5", - "void", + "uint", "web-time", ] [[package]] name = "libp2p-mdns" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b8546b6644032565eb29046b42744aee1e9f261ed99671b2c93fb140dba417" +version = "0.48.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ - "data-encoding", "futures", - "hickory-proto 0.24.4", + "hickory-proto", "if-watch", "libp2p-core", "libp2p-identity", "libp2p-swarm", "rand 0.8.5", "smallvec", - "socket2", + "socket2 0.6.1", "tokio", "tracing", - "void", ] [[package]] name = "libp2p-metrics" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ebafa94a717c8442d8db8d3ae5d1c6a15e30f2d347e0cd31d057ca72e42566" +version = "0.17.1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "futures", "libp2p-core", @@ -1849,25 +1934,21 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b137cb1ae86ee39f8e5d6245a296518912014eaa87427d24e6ff58cfc1b28c" +version = "0.46.1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "asynchronous-codec", "bytes", - "curve25519-dalek", "futures", "libp2p-core", "libp2p-identity", "multiaddr 0.18.2", "multihash 0.19.3", - "once_cell", "quick-protobuf", "rand 0.8.5", - "sha2", "snow", "static_assertions", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", "x25519-dalek", "zeroize", @@ -1877,18 +1958,17 @@ dependencies = [ name = "libp2p-perf" version = "0.1.0" dependencies = [ - "async-trait", "clap", "futures", - "futures-bounded", "libp2p", "libp2p-core", "libp2p-identity", "libp2p-noise", "libp2p-swarm", - "libp2p-tls", + "libp2p-webrtc", "libp2p-yamux", - "thiserror 1.0.69", + "rand 0.8.5", + "thiserror 2.0.17", "tokio", "tracing", "tracing-subscriber", @@ -1898,11 +1978,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "005a34420359223b974ee344457095f027e51346e992d1e0dcd35173f4cdd422" +version = "0.47.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ - "either", "futures", "futures-timer", "libp2p-core", @@ -1910,131 +1988,114 @@ dependencies = [ "libp2p-swarm", "rand 0.8.5", "tracing", - "void", "web-time", ] [[package]] name = "libp2p-quic" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46352ac5cd040c70e88e7ff8257a2ae2f891a4076abad2c439584a31c15fd24e" +version = "0.13.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ - "bytes", "futures", "futures-timer", "if-watch", "libp2p-core", "libp2p-identity", "libp2p-tls", - "parking_lot", "quinn", "rand 0.8.5", - "ring 0.17.11", + "ring", "rustls", - "socket2", - "thiserror 1.0.69", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", ] [[package]] name = "libp2p-request-response" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1356c9e376a94a75ae830c42cdaea3d4fe1290ba409a22c809033d1b7dcab0a6" +version = "0.29.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "async-trait", "futures", "futures-bounded", - "futures-timer", "libp2p-core", "libp2p-identity", "libp2p-swarm", "rand 0.8.5", "smallvec", "tracing", - "void", - "web-time", ] [[package]] name = "libp2p-swarm" -version = "0.45.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7dd6741793d2c1fb2088f67f82cf07261f25272ebe3c0b0c311e0c6b50e851a" +version = "0.47.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "either", "fnv", "futures", "futures-timer", + "hashlink", "libp2p-core", "libp2p-identity", "libp2p-swarm-derive", - "lru", "multistream-select", - "once_cell", "rand 0.8.5", "smallvec", "tokio", "tracing", - "void", "web-time", ] [[package]] name = "libp2p-swarm-derive" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206e0aa0ebe004d778d79fb0966aa0de996c19894e2c0605ba2f8524dd4443d8" +version = "0.35.1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "heck", - "proc-macro2", "quote", "syn 2.0.99", ] [[package]] name = "libp2p-tcp" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad964f312c59dcfcac840acd8c555de8403e295d39edf96f5240048b5fcaa314" +version = "0.44.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "futures", "futures-timer", "if-watch", "libc", "libp2p-core", - "libp2p-identity", - "socket2", + "socket2 0.6.1", "tokio", "tracing", ] [[package]] name = "libp2p-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b23dddc2b9c355f73c1e36eb0c3ae86f7dc964a3715f0731cfad352db4d847" +version = "0.6.2" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "futures", "futures-rustls", "libp2p-core", "libp2p-identity", "rcgen", - "ring 0.17.11", + "ring", "rustls", - "rustls-webpki 0.101.7", - "thiserror 1.0.69", - "x509-parser 0.16.0", + "rustls-webpki", + "thiserror 2.0.17", + "x509-parser 0.17.0", "yasna", ] [[package]] name = "libp2p-upnp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01bf2d1b772bd3abca049214a3304615e6a36fa6ffc742bdd1ba774486200b8f" +version = "0.6.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "futures", "futures-timer", @@ -2043,14 +2104,58 @@ dependencies = [ "libp2p-swarm", "tokio", "tracing", - "void", +] + +[[package]] +name = "libp2p-webrtc" +version = "0.9.0-alpha.2" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "hex", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-noise", + "libp2p-webrtc-utils", + "multihash 0.19.3", + "rand 0.8.5", + "rcgen", + "stun 0.7.0", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tracing", + "webrtc", +] + +[[package]] +name = "libp2p-webrtc-utils" +version = "0.4.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "hex", + "libp2p-core", + "libp2p-identity", + "libp2p-noise", + "quick-protobuf", + "quick-protobuf-codec", + "rand 0.8.5", + "serde", + "sha2", + "tinytemplate", + "tracing", ] [[package]] name = "libp2p-websocket" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "888b2ff2e5d8dcef97283daab35ad1043d18952b65e05279eecbe02af4c6e347" +version = "0.45.2" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "either", "futures", @@ -2061,38 +2166,37 @@ dependencies = [ "pin-project-lite", "rw-stream-sink", "soketto", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", "url", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "libp2p-yamux" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788b61c80789dba9760d8c669a5bedb642c8267555c803fabd8396e4ca5c5882" +version = "0.47.0" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "either", "futures", "libp2p-core", - "thiserror 1.0.69", + "thiserror 2.0.17", "tracing", "yamux 0.12.1", - "yamux 0.13.5", + "yamux 0.13.8", ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -2102,18 +2206,18 @@ checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litep2p" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c666ef772d123a7643323ad4979c30dd825e9c68ec1aa5b387a6c9a9871c11ea" +version = "0.12.0" +source = "git+https://github.com/ChainSafe/litep2p?rev=9621e3ccda915882f0dc93b7c2ea46c80c0fea7a#9621e3ccda915882f0dc93b7c2ea46c80c0fea7a" dependencies = [ "async-trait", "bs58", "bytes", "cid", "ed25519-dalek", + "enum-display", "futures", "futures-timer", - "hickory-resolver 0.25.2", + "hickory-resolver", "indexmap", "libc", "mockall", @@ -2122,7 +2226,7 @@ dependencies = [ "network-interface", "parking_lot", "pin-project", - "prost", + "prost 0.13.5", "prost-build", "rand 0.8.5", "serde", @@ -2130,20 +2234,20 @@ dependencies = [ "simple-dns", "smallvec", "snow", - "socket2", + "socket2 0.5.10", "str0m", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-tungstenite", "tokio-util", "tracing", - "uint 0.10.0", + "uint", "unsigned-varint 0.8.0", "url", "x25519-dalek", "x509-parser 0.17.0", - "yamux 0.13.5", + "yamux 0.13.8", "yasna", "zeroize", ] @@ -2192,22 +2296,10 @@ dependencies = [ ] [[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown", -] - -[[package]] -name = "lru-cache" +name = "lru-slab" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "match_cfg" @@ -2224,12 +2316,31 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2397,15 +2508,14 @@ checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "multistream-select" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "bytes", "futures", - "log", "pin-project", "smallvec", - "unsigned-varint 0.7.2", + "tracing", + "unsigned-varint 0.8.0", ] [[package]] @@ -2456,7 +2566,7 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2480,7 +2590,7 @@ checksum = "862f41f1276e7148fb597fc55ed8666423bebe045199a1298c3515a73ec5cdd9" dependencies = [ "cc", "libc", - "thiserror 2.0.12", + "thiserror 2.0.17", "winapi", ] @@ -2493,6 +2603,8 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", + "memoffset", + "pin-utils", ] [[package]] @@ -2557,11 +2669,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", ] @@ -2668,6 +2780,30 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p384" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "parking" version = "2.2.1" @@ -2705,12 +2841,21 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64", - "serde", + "serde_core", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", ] [[package]] @@ -2779,17 +2924,16 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.7.4" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -2833,7 +2977,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -2872,6 +3016,15 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "proc-macro-crate" version = "1.1.3" @@ -2917,9 +3070,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.3" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" +checksum = "e4500adecd7af8e0e9f4dbce15cfee07ce913fbf6ad605cc468b83f2d531ee94" dependencies = [ "dtoa", "itoa", @@ -2929,9 +3082,9 @@ dependencies = [ [[package]] name = "prometheus-client-derive-encode" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +checksum = "9adf1691c04c0a5ff46ff8f262b58beb07b0dbb61f96f9f54f6cbd82106ed87f" dependencies = [ "proc-macro2", "quote", @@ -2945,14 +3098,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.13.5", +] + +[[package]] +name = "prost" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" +dependencies = [ + "bytes", + "prost-derive 0.14.1", ] [[package]] name = "prost-build" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ "heck", "itertools", @@ -2961,7 +3124,7 @@ dependencies = [ "once_cell", "petgraph", "prettyplease", - "prost", + "prost 0.14.1", "prost-types", "regex", "syn 2.0.99", @@ -2981,13 +3144,26 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "prost-derive" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 2.0.99", +] + [[package]] name = "prost-types" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72" dependencies = [ - "prost", + "prost 0.14.1", ] [[package]] @@ -3008,50 +3184,52 @@ dependencies = [ [[package]] name = "quick-protobuf-codec" version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "asynchronous-codec", "bytes", "quick-protobuf", - "thiserror 1.0.69", + "thiserror 2.0.17", "unsigned-varint 0.8.0", ] [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", + "cfg_aliases", "futures-io", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", "rustls", - "socket2", - "thiserror 2.0.12", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.2.15", - "rand 0.8.5", - "ring 0.17.11", + "getrandom 0.3.1", + "lru-slab", + "rand 0.9.2", + "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -3059,16 +3237,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.10" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3093,13 +3271,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.21", ] [[package]] @@ -3142,13 +3319,15 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.11.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" dependencies = [ "pem", - "ring 0.16.20", + "ring", + "rustls-pki-types", "time", + "x509-parser 0.16.0", "yasna", ] @@ -3216,43 +3395,49 @@ dependencies = [ ] [[package]] -name = "ring" -version = "0.16.20" +name = "rfc6979" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted 0.7.1", - "web-sys", - "winapi", + "hmac", + "subtle", ] [[package]] name = "ring" -version = "0.17.11" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] [[package]] -name = "rtnetlink" -version = "0.13.1" +name = "rtcp" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +checksum = "e9689528bf3a9eb311fd938d05516dd546412f9ce4fffc8acfc1db27cc3dbf72" dependencies = [ - "futures", - "log", - "netlink-packet-core", + "bytes", + "thiserror 1.0.69", + "webrtc-util 0.11.0", +] + +[[package]] +name = "rtnetlink" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +dependencies = [ + "futures", + "log", + "netlink-packet-core", "netlink-packet-route", "netlink-packet-utils", "netlink-proto", @@ -3262,6 +3447,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "rtp" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c54733451a67d76caf9caa07a7a2cec6871ea9dda92a7847f98063d459200f4b" +dependencies = [ + "bytes", + "memchr", + "portable-atomic", + "rand 0.8.5", + "serde", + "thiserror 1.0.69", + "webrtc-util 0.11.0", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -3301,20 +3501,33 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", +] + [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "once_cell", - "ring 0.17.11", + "ring", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki", "subtle", "zeroize", ] @@ -3342,23 +3555,13 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ - "ring 0.17.11", - "untrusted 0.9.0", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring 0.17.11", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -3370,14 +3573,19 @@ checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "rw-stream-sink" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +source = "git+https://github.com/ChainSafe/rust-libp2p?rev=6accaf64eec35cffc2807af6b3b1eba10303058d#6accaf64eec35cffc2807af6b3b1eba10303058d" dependencies = [ "futures", "pin-project", "static_assertions", ] +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + [[package]] name = "schannel" version = "0.1.27" @@ -3401,17 +3609,43 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctp-proto" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4dea4fe3384a24652f065296ac333c810dfd0c5b39b98a2214762c16aaadc3c" +checksum = "423139d8cca3021b9d800f084a711ba2d23b508ae71b33dba167f11ca33e54c7" dependencies = [ "bytes", "crc", - "fxhash", "log", - "rand 0.8.5", + "rand 0.9.2", + "rustc-hash", "slab", + "thiserror 2.0.17", +] + +[[package]] +name = "sdp" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd277015eada44a0bb810a4b84d3bf6e810573fa62fb442f457edf6a1087a69" +dependencies = [ + "rand 0.8.5", + "substring", "thiserror 1.0.69", + "url", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", ] [[package]] @@ -3445,24 +3679,47 @@ checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.218" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.218" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", "syn 2.0.99", ] +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + [[package]] name = "sha1" version = "0.10.6" @@ -3486,9 +3743,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3510,20 +3767,30 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ + "digest", "rand_core 0.6.4", ] [[package]] name = "simple-dns" -version = "0.9.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" +checksum = "f8cba3b4c122239e3b4473674cb7c79ad2693f008f0746bfe2fc3fe1ffcd936a" dependencies = [ "bitflags 2.9.0", ] @@ -3543,6 +3810,15 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + [[package]] name = "snow" version = "0.9.6" @@ -3554,7 +3830,7 @@ dependencies = [ "chacha20poly1305", "curve25519-dalek", "rand_core 0.6.4", - "ring 0.17.11", + "ring", "rustc_version", "sha2", "subtle", @@ -3570,6 +3846,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "soketto" version = "0.8.1" @@ -3585,12 +3871,6 @@ dependencies = [ "sha1", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spki" version = "0.7.3" @@ -3615,9 +3895,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "str0m" -version = "0.6.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6110f29fbdda0516ae4ca52b62d802fbb6f874275db717a340ebb0ddd86e51c" +checksum = "26890ff5b60e33eb8bedcf44792fc459c8f348ecbf2658edb19477571e547ac2" dependencies = [ "combine", "crc", @@ -3630,7 +3910,6 @@ dependencies = [ "sctp-proto", "serde", "sha1", - "thiserror 1.0.69", "tracing", ] @@ -3640,6 +3919,53 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "stun" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea256fb46a13f9204e9dee9982997b2c3097db175a9fddaa8350310d03c4d5a3" +dependencies = [ + "base64", + "crc", + "lazy_static", + "md-5", + "rand 0.8.5", + "ring", + "subtle", + "thiserror 1.0.69", + "tokio", + "url", + "webrtc-util 0.10.0", +] + +[[package]] +name = "stun" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dbc2bab375524093c143dc362a03fb6a1fb79e938391cdb21665688f88a088a" +dependencies = [ + "base64", + "crc", + "lazy_static", + "md-5", + "rand 0.8.5", + "ring", + "subtle", + "thiserror 1.0.69", + "tokio", + "url", + "webrtc-util 0.11.0", +] + +[[package]] +name = "substring" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" +dependencies = [ + "autocfg", +] + [[package]] name = "subtle" version = "2.6.1" @@ -3728,7 +4054,7 @@ dependencies = [ "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 0.38.44", "windows-sys 0.59.0", ] @@ -3749,11 +4075,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -3769,9 +4095,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -3829,6 +4155,16 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.9.0" @@ -3857,8 +4193,9 @@ dependencies = [ "mio", "parking_lot", "pin-project-lite", + "signal-hook-registry", "slab", - "socket2", + "socket2 0.5.10", "tokio-macros", "windows-sys 0.52.0", ] @@ -4016,35 +4353,44 @@ checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" dependencies = [ "bytes", "data-encoding", - "http 1.2.0", + "http", "httparse", "log", - "rand 0.9.0", + "rand 0.9.2", "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.17", "url", "utf-8", ] [[package]] -name = "typenum" -version = "1.18.0" +name = "turn" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "3f5aea1116456e1da71c45586b87c72e3b43164fbf435eb93ff6aa475416a9a4" +dependencies = [ + "async-trait", + "base64", + "futures", + "log", + "md-5", + "portable-atomic", + "rand 0.8.5", + "ring", + "stun 0.8.0", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "webrtc-util 0.11.0", +] [[package]] -name = "uint" -version = "0.9.5" +name = "typenum" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uint" @@ -4064,6 +4410,12 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -4096,12 +4448,6 @@ dependencies = [ "tokio-util", ] -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -4185,6 +4531,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "waitgroup" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292" +dependencies = [ + "atomic-waker", +] + [[package]] name = "want" version = "0.3.1" @@ -4268,30 +4623,262 @@ dependencies = [ ] [[package]] -name = "web-sys" -version = "0.3.77" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "web-time" -version = "1.1.0" +name = "webpki-roots" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "js-sys", - "wasm-bindgen", + "webpki-roots 1.0.4", ] [[package]] name = "webpki-roots" -version = "0.25.4" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webrtc" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24bab7195998d605c862772f90a452ba655b90a2f463c850ac032038890e367a" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "cfg-if", + "hex", + "interceptor", + "lazy_static", + "log", + "portable-atomic", + "rand 0.8.5", + "rcgen", + "regex", + "ring", + "rtcp", + "rtp", + "rustls", + "sdp", + "serde", + "serde_json", + "sha2", + "smol_str", + "stun 0.8.0", + "thiserror 1.0.69", + "time", + "tokio", + "turn", + "url", + "waitgroup", + "webrtc-data", + "webrtc-dtls", + "webrtc-ice", + "webrtc-mdns", + "webrtc-media", + "webrtc-sctp", + "webrtc-srtp", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-data" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e97b932854da633a767eff0cc805425a2222fc6481e96f463e57b015d949d1d" +dependencies = [ + "bytes", + "log", + "portable-atomic", + "thiserror 1.0.69", + "tokio", + "webrtc-sctp", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-dtls" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ccbe4d9049390ab52695c3646c1395c877e16c15fb05d3bda8eee0c7351711c" +dependencies = [ + "aes", + "aes-gcm", + "async-trait", + "bincode", + "byteorder", + "cbc", + "ccm", + "der-parser 9.0.0", + "hkdf", + "hmac", + "log", + "p256", + "p384", + "portable-atomic", + "rand 0.8.5", + "rand_core 0.6.4", + "rcgen", + "ring", + "rustls", + "sec1", + "serde", + "sha1", + "sha2", + "subtle", + "thiserror 1.0.69", + "tokio", + "webrtc-util 0.11.0", + "x25519-dalek", + "x509-parser 0.16.0", +] + +[[package]] +name = "webrtc-ice" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb51bde0d790f109a15bfe4d04f1b56fb51d567da231643cb3f21bb74d678997" +dependencies = [ + "arc-swap", + "async-trait", + "crc", + "log", + "portable-atomic", + "rand 0.8.5", + "serde", + "serde_json", + "stun 0.8.0", + "thiserror 1.0.69", + "tokio", + "turn", + "url", + "uuid", + "waitgroup", + "webrtc-mdns", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-mdns" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "979cc85259c53b7b620803509d10d35e2546fa505d228850cbe3f08765ea6ea8" +dependencies = [ + "log", + "socket2 0.5.10", + "thiserror 1.0.69", + "tokio", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-media" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80041211deccda758a3e19aa93d6b10bc1d37c9183b519054b40a83691d13810" +dependencies = [ + "byteorder", + "bytes", + "rand 0.8.5", + "rtp", + "thiserror 1.0.69", +] + +[[package]] +name = "webrtc-sctp" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07439c134425d51d2f10907aaf2f815fdfb587dce19fe94a4ae8b5faf2aae5ae" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "crc", + "log", + "portable-atomic", + "rand 0.8.5", + "thiserror 1.0.69", + "tokio", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-srtp" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e773f79b09b057ffbda6b03fe7b43403b012a240cf8d05d630674c3723b5bb" +dependencies = [ + "aead", + "aes", + "aes-gcm", + "byteorder", + "bytes", + "ctr", + "hmac", + "log", + "rtcp", + "rtp", + "sha1", + "subtle", + "thiserror 1.0.69", + "tokio", + "webrtc-util 0.11.0", +] + +[[package]] +name = "webrtc-util" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1438a8fd0d69c5775afb4a71470af92242dbd04059c61895163aa3c1ef933375" +dependencies = [ + "async-trait", + "bitflags 1.3.2", + "bytes", + "ipnet", + "lazy_static", + "libc", + "log", + "nix", + "portable-atomic", + "rand 0.8.5", + "thiserror 1.0.69", + "tokio", + "winapi", +] + +[[package]] +name = "webrtc-util" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "64bfb10dbe6d762f80169ae07cf252bafa1f764b9594d140008a0231c0cdce58" +dependencies = [ + "async-trait", + "bitflags 1.3.2", + "bytes", + "ipnet", + "lazy_static", + "libc", + "log", + "nix", + "portable-atomic", + "rand 0.8.5", + "thiserror 1.0.69", + "tokio", + "winapi", +] [[package]] name = "widestring" @@ -4340,7 +4927,7 @@ dependencies = [ "windows-collections", "windows-core 0.61.2", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] @@ -4371,7 +4958,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings", ] @@ -4383,7 +4970,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", - "windows-link", + "windows-link 0.1.3", "windows-threading", ] @@ -4415,6 +5002,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-numerics" version = "0.2.0" @@ -4422,7 +5015,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ "windows-core 0.61.2", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4440,7 +5033,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4449,7 +5042,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4479,6 +5072,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4503,20 +5114,37 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows-threading" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -4531,6 +5159,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4543,6 +5177,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4555,12 +5195,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4573,6 +5225,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4585,6 +5243,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4597,6 +5261,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4609,6 +5279,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winreg" version = "0.50.0" @@ -4664,6 +5340,7 @@ dependencies = [ "lazy_static", "nom", "oid-registry 0.7.1", + "ring", "rusticata-macros", "thiserror 1.0.69", "time", @@ -4682,15 +5359,15 @@ dependencies = [ "nom", "oid-registry 0.8.1", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.17", "time", ] [[package]] name = "xml-rs" -version = "0.8.25" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "xmltree" @@ -4718,16 +5395,16 @@ dependencies = [ [[package]] name = "yamux" -version = "0.13.5" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da1acad1c2dc53f0dde419115a38bd8221d8c3e47ae9aeceaf453266d29307e" +checksum = "deab71f2e20691b4728b349c6cee8fc7223880fa67b6b4f92225ec32225447e5" dependencies = [ "futures", "log", "nohash-hasher", "parking_lot", "pin-project", - "rand 0.9.0", + "rand 0.9.2", "static_assertions", "web-time", ] @@ -4772,16 +5449,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478" -dependencies = [ - "zerocopy-derive 0.8.21", + "zerocopy-derive", ] [[package]] @@ -4795,17 +5463,6 @@ dependencies = [ "syn 2.0.99", ] -[[package]] -name = "zerocopy-derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.99", -] - [[package]] name = "zerofrom" version = "0.1.6" diff --git a/README.md b/README.md index 2bfcc7c..92a922d 100644 --- a/README.md +++ b/README.md @@ -114,47 +114,48 @@ cd litep2p ### Bandwidth -| Operation | Bytes | Litep2p->Litep2p | Libp2p->Libp2p | Libp2p->Litep2p | Litep2p->Libp2p | -|------------|------------|------------------|----------------|-----------------|-----------------| -| Uploaded | 1,0KiB | 3.77 Gbit/s | 4.35 Gbit/s | 4.56 Gbit/s | 3.61 Gbit/s | -| Uploaded | 2,0KiB | 3.11 Gbit/s | 2.67 Gbit/s | 2.75 Gbit/s | 2.48 Gbit/s | -| Uploaded | 4,0KiB | 4.23 Gbit/s | 4.88 Gbit/s | 7.02 Gbit/s | 5.14 Gbit/s | -| Uploaded | 8,0KiB | 4.45 Gbit/s | 6.13 Gbit/s | 6.03 Gbit/s | 5.58 Gbit/s | -| Uploaded | 16KiB | 502.09 Mbit/s | 515.68 Mbit/s | 510.01 Mbit/s | 443.20 Mbit/s | -| Uploaded | 32KiB | 645.81 Mbit/s | 661.01 Mbit/s | 549.09 Mbit/s | 634.26 Mbit/s | -| Uploaded | 64KiB | 573.64 Mbit/s | 559.63 Mbit/s | 570.35 Mbit/s | 382.15 Mbit/s | -| Uploaded | 128KiB | 544.27 Mbit/s | 485.29 Mbit/s | 284.80 Mbit/s | 588.11 Mbit/s | -| Uploaded | 256KiB | 548.08 Mbit/s | 495.29 Mbit/s | 168.58 Mbit/s | 547.41 Mbit/s | -| Uploaded | 512KiB | 559.30 Mbit/s | 495.63 Mbit/s | 516.49 Mbit/s | 558.62 Mbit/s | -| Uploaded | 1,0MiB | 549.48 Mbit/s | 502.00 Mbit/s | 509.12 Mbit/s | 574.06 Mbit/s | -| Uploaded | 2,0MiB | 544.65 Mbit/s | 458.79 Mbit/s | 512.94 Mbit/s | 552.43 Mbit/s | -| Uploaded | 4,0MiB | 585.49 Mbit/s | 489.34 Mbit/s | 508.92 Mbit/s | 556.91 Mbit/s | -| Uploaded | 8,0MiB | 590.55 Mbit/s | 477.83 Mbit/s | 511.24 Mbit/s | 537.80 Mbit/s | -| Uploaded | 16MiB | 588.77 Mbit/s | 486.59 Mbit/s | 508.14 Mbit/s | 534.24 Mbit/s | -| Uploaded | 32MiB | 608.04 Mbit/s | 454.59 Mbit/s | 512.72 Mbit/s | 543.04 Mbit/s | -| Uploaded | 64MiB | 596.67 Mbit/s | 476.27 Mbit/s | 512.60 Mbit/s | 539.67 Mbit/s | -| Uploaded | 128MiB | 597.67 Mbit/s | 475.44 Mbit/s | 500.52 Mbit/s | 566.77 Mbit/s | -| Uploaded | 256MiB | 568.63 Mbit/s | 488.77 Mbit/s | 503.91 Mbit/s | 523.64 Mbit/s | -| Uploaded | 512MiB | 608.78 Mbit/s | 485.44 Mbit/s | 518.24 Mbit/s | 585.06 Mbit/s | -| Uploaded | 1,0GiB | 593.76 Mbit/s | 480.22 Mbit/s | 509.59 Mbit/s | 533.81 Mbit/s | -| Downloaded | 1,0KiB | 37.52 Mbit/s | 32.47 Mbit/s | 27.34 Mbit/s | 32.32 Mbit/s | -| Downloaded | 2,0KiB | 59.92 Mbit/s | 70.58 Mbit/s | 67.25 Mbit/s | 56.54 Mbit/s | -| Downloaded | 4,0KiB | 104.13 Mbit/s | 107.57 Mbit/s | 62.26 Mbit/s | 103.77 Mbit/s | -| Downloaded | 8,0KiB | 144.40 Mbit/s | 164.40 Mbit/s | 144.31 Mbit/s | 175.94 Mbit/s | -| Downloaded | 16KiB | 226.44 Mbit/s | 244.50 Mbit/s | 234.40 Mbit/s | 192.15 Mbit/s | -| Downloaded | 32KiB | 433.87 Mbit/s | 246.87 Mbit/s | 302.03 Mbit/s | 398.61 Mbit/s | -| Downloaded | 64KiB | 398.39 Mbit/s | 391.43 Mbit/s | 319.19 Mbit/s | 348.72 Mbit/s | -| Downloaded | 128KiB | 399.92 Mbit/s | 438.45 Mbit/s | 345.96 Mbit/s | 428.56 Mbit/s | -| Downloaded | 256KiB | 553.59 Mbit/s | 417.66 Mbit/s | 355.77 Mbit/s | 475.05 Mbit/s | -| Downloaded | 512KiB | 564.92 Mbit/s | 430.31 Mbit/s | 534.81 Mbit/s | 397.76 Mbit/s | -| Downloaded | 1,0MiB | 576.16 Mbit/s | 421.55 Mbit/s | 549.70 Mbit/s | 414.19 Mbit/s | -| Downloaded | 2,0MiB | 591.18 Mbit/s | 485.44 Mbit/s | 569.70 Mbit/s | 459.81 Mbit/s | -| Downloaded | 4,0MiB | 585.57 Mbit/s | 428.47 Mbit/s | 490.32 Mbit/s | 502.02 Mbit/s | -| Downloaded | 8,0MiB | 609.17 Mbit/s | 490.68 Mbit/s | 522.76 Mbit/s | 496.34 Mbit/s | -| Downloaded | 16MiB | 601.63 Mbit/s | 480.64 Mbit/s | 543.31 Mbit/s | 500.06 Mbit/s | -| Downloaded | 32MiB | 615.73 Mbit/s | 486.40 Mbit/s | 533.18 Mbit/s | 499.05 Mbit/s | -| Downloaded | 64MiB | 609.44 Mbit/s | 485.17 Mbit/s | 557.61 Mbit/s | 505.44 Mbit/s | -| Downloaded | 128MiB | 603.49 Mbit/s | 483.54 Mbit/s | 541.33 Mbit/s | 495.37 Mbit/s | -| Downloaded | 256MiB | 600.82 Mbit/s | 488.18 Mbit/s | 564.84 Mbit/s | 497.95 Mbit/s | -| Downloaded | 512MiB | 506.49 Mbit/s | 483.55 Mbit/s | 519.57 Mbit/s | 498.65 Mbit/s | -| Downloaded | 1,0GiB | 601.71 Mbit/s | 485.35 Mbit/s | 543.15 Mbit/s | 500.86 Mbit/s | \ No newline at end of file +| Operation | Bytes | Litep2p->Litep2p | Libp2p->Libp2p | Libp2p->Libp2p | Libp2p->Litep2p | Libp2p->Litep2p | Litep2p->Libp2p | +| | | (TCP) | (TCP) | (WebRTC) | (TCP) | (WebRTC) | (TCP) | +|------------|------------|------------------|----------------|----------------|-----------------|-----------------|-----------------| +| Uploaded | 1.0KiB | 3.46 Gbit/s | 3.16 Gbit/s | 1.17 Gbit/s | 4.36 Gbit/s | 225.36 Mbit/s | 3.74 Gbit/s | +| Uploaded | 2.0KiB | 9.39 Gbit/s | 5.23 Gbit/s | 796.18 Mbit/s | 1.85 Gbit/s | 429.06 Mbit/s | 2.54 Gbit/s | +| Uploaded | 4.0KiB | 2.15 Gbit/s | 6.37 Gbit/s | 1.23 Gbit/s | 8.05 Gbit/s | 370.01 Mbit/s | 3.45 Gbit/s | +| Uploaded | 8.0KiB | 7.11 Gbit/s | 5.09 Gbit/s | 1.46 Gbit/s | 5.66 Gbit/s | 515.82 Mbit/s | 5.79 Gbit/s | +| Uploaded | 16KiB | 838.46 Mbit/s | 373.74 Mbit/s | 1.68 Gbit/s | 391.24 Mbit/s | 532.77 Mbit/s | 800.64 Mbit/s | +| Uploaded | 32KiB | 555.92 Mbit/s | 348.37 Mbit/s | 1.69 Gbit/s | 299.48 Mbit/s | 1.20 Gbit/s | 453.10 Mbit/s | +| Uploaded | 64KiB | 436.65 Mbit/s | 353.20 Mbit/s | 1.74 Gbit/s | 538.50 Mbit/s | 1.73 Gbit/s | 432.45 Mbit/s | +| Uploaded | 128KiB | 357.14 Mbit/s | 388.14 Mbit/s | 3.45 Gbit/s | 341.68 Mbit/s | 681.16 Mbit/s | 414.52 Mbit/s | +| Uploaded | 256KiB | 482.24 Mbit/s | 323.69 Mbit/s | 51.57 Mbit/s | 321.55 Mbit/s | 60.10 Mbit/s | 349.15 Mbit/s | +| Uploaded | 512KiB | 420.43 Mbit/s | 349.45 Mbit/s | 47.77 Mbit/s | 393.10 Mbit/s | 46.43 Mbit/s | 362.95 Mbit/s | +| Uploaded | 1.0MiB | 452.06 Mbit/s | 382.80 Mbit/s | 34.42 Mbit/s | 405.66 Mbit/s | 35.68 Mbit/s | 396.46 Mbit/s | +| Uploaded | 2.0MiB | 476.54 Mbit/s | 468.72 Mbit/s | 33.50 Mbit/s | 454.18 Mbit/s | 33.54 Mbit/s | 484.36 Mbit/s | +| Uploaded | 4.0MiB | 602.35 Mbit/s | 542.05 Mbit/s | 32.51 Mbit/s | 529.74 Mbit/s | 31.15 Mbit/s | 595.09 Mbit/s | +| Uploaded | 8.0MiB | 731.84 Mbit/s | 597.95 Mbit/s | 32.05 Mbit/s | 587.44 Mbit/s | 31.37 Mbit/s | 723.80 Mbit/s | +| Uploaded | 16MiB | 745.03 Mbit/s | 616.75 Mbit/s | 31.83 Mbit/s | 617.36 Mbit/s | 30.80 Mbit/s | 756.98 Mbit/s | +| Uploaded | 32MiB | 753.37 Mbit/s | 631.18 Mbit/s | 31.65 Mbit/s | 644.45 Mbit/s | n/a | 778.50 Mbit/s | +| Uploaded | 64MiB | 806.63 Mbit/s | 635.26 Mbit/s | 31.68 Mbit/s | 632.70 Mbit/s | n/a | 784.85 Mbit/s | +| Uploaded | 128MiB | 879.59 Mbit/s | 635.71 Mbit/s | 31.03 Mbit/s | 637.97 Mbit/s | n/a | 764.72 Mbit/s | +| Uploaded | 256MiB | 867.99 Mbit/s | 643.30 Mbit/s | 31.42 Mbit/s | 698.84 Mbit/s | n/a | 803.06 Mbit/s | +| Uploaded | 512MiB | 871.38 Mbit/s | 652.90 Mbit/s | 31.16 Mbit/s | 620.08 Mbit/s | n/a | 808.02 Mbit/s | +| Uploaded | 1.0GiB | 882.42 Mbit/s | 643.92 Mbit/s | 31.39 Mbit/s | 630.04 Mbit/s | n/a | 813.40 Mbit/s | +| Downloaded | 1.0KiB | 32.95 Mbit/s | 22.49 Mbit/s | 3.77 Mbit/s | 28.53 Mbit/s | 2.36 Mbit/s | 23.87 Mbit/s | +| Downloaded | 2.0KiB | 63.92 Mbit/s | 50.13 Mbit/s | 4.88 Mbit/s | 52.36 Mbit/s | 3.45 Mbit/s | 45.08 Mbit/s | +| Downloaded | 4.0KiB | 81.83 Mbit/s | 77.48 Mbit/s | 6.82 Mbit/s | 130.75 Mbit/s | 3.54 Mbit/s | 63.33 Mbit/s | +| Downloaded | 8.0KiB | 141.94 Mbit/s | 102.54 Mbit/s | 7.62 Mbit/s | 114.75 Mbit/s | 3.58 Mbit/s | 100.94 Mbit/s | +| Downloaded | 16KiB | 195.20 Mbit/s | 169.77 Mbit/s | 9.33 Mbit/s | 190.36 Mbit/s | 5.22 Mbit/s | 141.49 Mbit/s | +| Downloaded | 32KiB | 197.94 Mbit/s | 288.42 Mbit/s | 10.47 Mbit/s | 252.40 Mbit/s | 6.81 Mbit/s | 196.53 Mbit/s | +| Downloaded | 64KiB | 225.54 Mbit/s | 286.09 Mbit/s | 11.81 Mbit/s | 296.95 Mbit/s | 10.00 Mbit/s | 275.46 Mbit/s | +| Downloaded | 128KiB | 297.69 Mbit/s | 325.77 Mbit/s | 13.88 Mbit/s | 327.18 Mbit/s | 11.41 Mbit/s | 278.86 Mbit/s | +| Downloaded | 256KiB | 413.71 Mbit/s | 357.56 Mbit/s | 19.97 Mbit/s | 351.91 Mbit/s | 18.07 Mbit/s | 351.01 Mbit/s | +| Downloaded | 512KiB | 408.00 Mbit/s | 405.74 Mbit/s | 22.14 Mbit/s | 399.83 Mbit/s | 22.16 Mbit/s | 400.23 Mbit/s | +| Downloaded | 1.0MiB | 505.80 Mbit/s | 513.97 Mbit/s | 28.11 Mbit/s | 581.64 Mbit/s | n/a | 504.74 Mbit/s | +| Downloaded | 2.0MiB | 777.57 Mbit/s | 638.82 Mbit/s | 29.31 Mbit/s | 775.99 Mbit/s | n/a | 666.08 Mbit/s | +| Downloaded | 4.0MiB | 844.21 Mbit/s | 651.80 Mbit/s | 29.96 Mbit/s | 774.64 Mbit/s | n/a | 715.37 Mbit/s | +| Downloaded | 8.0MiB | 792.89 Mbit/s | 641.97 Mbit/s | 31.05 Mbit/s | 784.99 Mbit/s | n/a | 683.01 Mbit/s | +| Downloaded | 16MiB | 803.64 Mbit/s | 626.76 Mbit/s | 31.46 Mbit/s | 745.87 Mbit/s | n/a | 688.40 Mbit/s | +| Downloaded | 32MiB | 779.37 Mbit/s | 633.95 Mbit/s | 31.48 Mbit/s | 760.55 Mbit/s | n/a | 691.93 Mbit/s | +| Downloaded | 64MiB | 804.71 Mbit/s | 635.22 Mbit/s | 31.53 Mbit/s | 752.78 Mbit/s | n/a | 690.73 Mbit/s | +| Downloaded | 128MiB | 862.24 Mbit/s | 637.05 Mbit/s | 31.18 Mbit/s | 782.09 Mbit/s | n/a | 621.61 Mbit/s | +| Downloaded | 256MiB | 858.61 Mbit/s | 636.08 Mbit/s | 31.53 Mbit/s | 788.31 Mbit/s | n/a | 694.58 Mbit/s | +| Downloaded | 512MiB | 861.56 Mbit/s | 637.50 Mbit/s | 31.19 Mbit/s | 738.45 Mbit/s | n/a | 692.77 Mbit/s | +| Downloaded | 1.0GiB | 872.73 Mbit/s | 619.31 Mbit/s | 31.04 Mbit/s | 744.37 Mbit/s | n/a | 687.94 Mbit/s | diff --git a/libp2p/Cargo.toml b/libp2p/Cargo.toml index 67daab6..bf38a2b 100644 --- a/libp2p/Cargo.toml +++ b/libp2p/Cargo.toml @@ -4,24 +4,23 @@ version = "0.1.0" edition = "2024" [dependencies] -async-trait = "0.1" clap = { version = "4.5.31", features = ["derive", "cargo"] } tokio = { version = "1.28", features = ["macros", "time", "rt-multi-thread"] } tracing-subscriber = { version = "0.3", features = ["env-filter"] } tracing = "0.1.34" futures = "0.3.28" -thiserror = "1.0" -futures-bounded = "0.2.4" +thiserror = "2.0.16" +libp2p = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d", features = ["dns", "identify", "kad", "macros", "mdns", "noise", "ping", "tcp", "tokio", "yamux", "websocket", "request-response"] } +libp2p-core = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d" } +libp2p-swarm = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d" } +libp2p-identity = { version = "0.2.12", features = ["ed25519", "peerid", "rand"] } +libp2p-noise = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d" } +libp2p-webrtc = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d", features = ["tokio"] } +libp2p-yamux = { git = "https://github.com/ChainSafe/rust-libp2p", rev = "6accaf64eec35cffc2807af6b3b1eba10303058d" } -libp2p = { version = "0.54.1", features = ["dns", "identify", "kad", "macros", "mdns", "noise", "ping", "tcp", "tokio", "yamux", "websocket", "request-response"] } -libp2p-core = { version = "0.42" } -libp2p-swarm = { version = "0.45.1" } -libp2p-identity = { version = "0.2.9", features = ["ed25519", "peerid", "rand"] } -libp2p-tls = "0.5.0" -libp2p-noise = "0.45.0" -libp2p-yamux = "0.46.0" void = "1" utils = { path = "../utils" } +rand = "0.8" diff --git a/libp2p/src/client/handler.rs b/libp2p/src/client/handler.rs index af45b20..b6aa360 100644 --- a/libp2p/src/client/handler.rs +++ b/libp2p/src/client/handler.rs @@ -1,3 +1,4 @@ +use core::panic; use std::{ collections::VecDeque, task::{Context, Poll}, @@ -95,7 +96,10 @@ impl ConnectionHandler for Handler { #[allow(unreachable_patterns)] ConnectionEvent::FullyNegotiatedInbound(FullyNegotiatedInbound { protocol, .. - }) => void::unreachable(protocol), + }) => panic!( + "Unexpected FullyNegotiatedInbound event in server handler: {:?}", + protocol + ), ConnectionEvent::FullyNegotiatedOutbound(FullyNegotiatedOutbound { protocol, info: (), @@ -135,7 +139,10 @@ impl ConnectionHandler for Handler { // TODO: remove when Rust 1.82 is MSRV #[allow(unreachable_patterns)] ConnectionEvent::ListenUpgradeError(ListenUpgradeError { info: (), error }) => { - void::unreachable(error) + panic!( + "ListenUpgradeError should not occur in this context: {:?}", + error + ); } _ => {} } diff --git a/libp2p/src/main.rs b/libp2p/src/main.rs index 6c7603d..5904187 100644 --- a/libp2p/src/main.rs +++ b/libp2p/src/main.rs @@ -1,6 +1,10 @@ use clap::Parser as ClapParser; use futures::StreamExt; +use libp2p::core::{Transport, muxing::StreamMuxerBox}; +use libp2p::multiaddr::{Multiaddr, Protocol}; use libp2p_swarm::SwarmEvent; +use rand::thread_rng; +use std::net::Ipv4Addr; use utils::Command; @@ -29,20 +33,53 @@ async fn main() -> Result<(), Box> { let local_key = libp2p::identity::ed25519::Keypair::from(secret_key); let local_key: libp2p::identity::Keypair = local_key.into(); - let tcp_config = libp2p::tcp::Config::new().nodelay(true); - let mut swarm = libp2p::SwarmBuilder::with_existing_identity(local_key) - .with_tokio() - .with_tcp( - tcp_config, - libp2p_noise::Config::new, - libp2p_yamux::Config::default, - )? - .with_dns()? - .with_behaviour(|_key| crate::server::behaviour::Behaviour::new())? - .with_swarm_config(|cfg| { - cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) - }) - .build(); + let mut swarm = match server_opts.transport_layer { + utils::TransportLayer::Tcp => { + let tcp_config = libp2p::tcp::Config::new().nodelay(true); + libp2p::SwarmBuilder::with_existing_identity(local_key) + .with_tokio() + .with_tcp( + tcp_config, + libp2p_noise::Config::new, + libp2p_yamux::Config::default, + )? + .with_dns()? + .with_behaviour(|_key| crate::server::behaviour::Behaviour::new())? + .with_swarm_config(|cfg| { + cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) + }) + .build() + } + utils::TransportLayer::WebSocket => { + unimplemented!("WebSocket transport layer not implemented yet"); + } + utils::TransportLayer::WebRTC => { + let address_webrtc = Multiaddr::from(Ipv4Addr::UNSPECIFIED) + .with(Protocol::Udp(0)) + .with(Protocol::WebRTCDirect); + + tracing::info!( + "Using WebRTC transport layer with address: {}", + address_webrtc + ); + + libp2p::SwarmBuilder::with_existing_identity(local_key) + .with_tokio() + .with_other_transport(|key| { + Ok(libp2p_webrtc::tokio::Transport::new( + key.clone(), + libp2p_webrtc::tokio::Certificate::generate(&mut thread_rng())?, + ) + .map(|(peer_id, conn), _| (peer_id, StreamMuxerBox::new(conn)))) + })? + .with_dns()? + .with_behaviour(|_key| crate::server::behaviour::Behaviour::new())? + .with_swarm_config(|cfg| { + cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) + }) + .build() + } + }; swarm.listen_on(server_opts.listen_address.parse()?)?; @@ -54,40 +91,66 @@ async fn main() -> Result<(), Box> { Command::Client(client_opts) => { let local_key = libp2p::identity::Keypair::generate_ed25519(); - let tcp_config = libp2p::tcp::Config::new().nodelay(true); - let mut swarm = libp2p::SwarmBuilder::with_existing_identity(local_key) - .with_tokio() - .with_tcp( - tcp_config, - libp2p_noise::Config::new, - libp2p_yamux::Config::default, - )? - .with_dns()? - .with_behaviour(|_key| crate::client::behaviour::Behaviour::new())? - .with_swarm_config(|cfg| { - cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) - }) - .build(); + let mut swarm = match client_opts.transport_layer { + utils::TransportLayer::Tcp => { + let tcp_config = libp2p::tcp::Config::new().nodelay(true); + libp2p::SwarmBuilder::with_existing_identity(local_key) + .with_tokio() + .with_tcp( + tcp_config, + libp2p_noise::Config::new, + libp2p_yamux::Config::default, + )? + .with_dns()? + .with_behaviour(|_key| crate::client::behaviour::Behaviour::new())? + .with_swarm_config(|cfg| { + cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) + }) + .build() + } + utils::TransportLayer::WebSocket => { + unimplemented!("WebSocket transport layer not implemented yet"); + } + utils::TransportLayer::WebRTC => { + let mut swarm = libp2p::SwarmBuilder::with_existing_identity(local_key) + .with_tokio() + .with_other_transport(|key| { + Ok(libp2p_webrtc::tokio::Transport::new( + key.clone(), + libp2p_webrtc::tokio::Certificate::generate(&mut thread_rng())?, + ) + .map(|(peer_id, conn), _| (peer_id, StreamMuxerBox::new(conn)))) + })? + .with_dns()? + .with_behaviour(|_key| crate::client::behaviour::Behaviour::new())? + .with_swarm_config(|cfg| { + cfg.with_idle_connection_timeout(std::time::Duration::from_secs(60)) + }) + .build(); - let addr: libp2p::Multiaddr = client_opts.server_address.parse()?; - swarm.dial(addr)?; + let listen_addr = Multiaddr::from(Ipv4Addr::UNSPECIFIED) + .with(Protocol::Udp(0)) + .with(Protocol::WebRTCDirect); + swarm.listen_on(listen_addr)?; - let server_peer_id = match swarm.next().await.unwrap() { - SwarmEvent::ConnectionEstablished { peer_id, .. } => peer_id, - e => panic!("{e:?}"), + swarm + } }; - swarm.behaviour_mut().perf( - server_peer_id, - client_opts.upload_bytes as u64, - client_opts.download_bytes as u64, - )?; + let addr: libp2p::Multiaddr = client_opts.server_address.parse()?; + swarm.dial(addr)?; loop { let event = swarm.next().await; - tracing::info!("Even: {:?}", event); - + tracing::info!("Event: {:?}", event); match event { + Some(SwarmEvent::ConnectionEstablished { peer_id, .. }) => { + swarm.behaviour_mut().perf( + peer_id, + client_opts.upload_bytes as u64, + client_opts.download_bytes as u64, + )?; + } Some(SwarmEvent::Behaviour(..)) => { return Ok(()); } diff --git a/libp2p/src/perf.rs b/libp2p/src/perf.rs index d328014..c3099fd 100644 --- a/libp2p/src/perf.rs +++ b/libp2p/src/perf.rs @@ -16,6 +16,7 @@ async fn write_u64( value: u64, ) -> Result<(), std::io::Error> { substream.write_all(&value.to_be_bytes()).await?; + substream.flush().await?; Ok(()) } @@ -43,6 +44,7 @@ async fn send_bytes( let mut total = 0; while total < to_send { substream.write_all(&buf).await?; + substream.flush().await?; total += buf.len() as u64; } Ok(()) diff --git a/libp2p/src/server/handler.rs b/libp2p/src/server/handler.rs index e6e6989..1f159f9 100644 --- a/libp2p/src/server/handler.rs +++ b/libp2p/src/server/handler.rs @@ -85,7 +85,10 @@ impl ConnectionHandler for Handler { // TODO: remove when Rust 1.82 is MSRV #[allow(unreachable_patterns)] ConnectionEvent::ListenUpgradeError(ListenUpgradeError { info: (), error }) => { - void::unreachable(error) + panic!( + "ListenUpgradeError should not occur in this context: {:?}", + error + ); } _ => {} } diff --git a/litep2p/Cargo.toml b/litep2p/Cargo.toml index a827fc9..08f4018 100644 --- a/litep2p/Cargo.toml +++ b/litep2p/Cargo.toml @@ -11,6 +11,6 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] } tracing = "0.1.34" futures = "0.3.28" -litep2p = { version = "0.10.0", features = ["websocket", "webrtc"] } +litep2p = { git = "https://github.com/ChainSafe/litep2p", rev = "9621e3ccda915882f0dc93b7c2ea46c80c0fea7a", features = ["websocket", "webrtc"] } utils = { path = "../utils" } diff --git a/litep2p/src/main.rs b/litep2p/src/main.rs index 515943c..86d434e 100644 --- a/litep2p/src/main.rs +++ b/litep2p/src/main.rs @@ -1,3 +1,4 @@ +use std::time::Duration; use clap::Parser as ClapParser; use utils::Command; @@ -26,6 +27,9 @@ async fn main() -> Result<(), Box> { let secret_key = litep2p::crypto::ed25519::SecretKey::try_from_bytes(&mut bytes)?; let mut litep2p_config = litep2p::config::ConfigBuilder::new() .with_keypair(secret_key.into()) + // After the keep alive timeout elapsed while no new substreams have been opened on + // the connection, litep2p downgrades it to inactive. + .with_keep_alive_timeout(Duration::from_mins(5)) .with_user_protocol(Box::new(perf)); match server_opts.transport_layer { diff --git a/run_bandwidth.sh b/run_bandwidth.sh index ec53564..642170a 100755 --- a/run_bandwidth.sh +++ b/run_bandwidth.sh @@ -1,19 +1,26 @@ #!/bin/bash -declare -A results_upload_litep2p_litep2p -declare -A results_download_litep2p_litep2p +declare -A results_upload_litep2p_litep2p_tcp +declare -A results_download_litep2p_litep2p_tcp -declare -A results_upload_libp2p_libp2p -declare -A results_download_libp2p_libp2p +declare -A results_upload_libp2p_libp2p_tcp +declare -A results_download_libp2p_libp2p_tcp -declare -A results_upload_libp2p_litep2p -declare -A results_download_libp2p_litep2p +declare -A results_upload_libp2p_libp2p_webrtc +declare -A results_download_libp2p_libp2p_webrtc -declare -A results_upload_litep2p_libp2p -declare -A results_download_litep2p_libp2p +declare -A results_upload_libp2p_litep2p_tcp +declare -A results_download_libp2p_litep2p_tcp + +declare -A results_upload_libp2p_litep2p_webrtc +declare -A results_download_libp2p_litep2p_webrtc + +declare -A results_upload_litep2p_libp2p_tcp +declare -A results_download_litep2p_libp2p_tcp SLEEP_TIME=1 +# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 VALUES="1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824" # --------------------------------------------------------- @@ -28,7 +35,7 @@ RUST_LOG=info cargo run -- server --listen-address "/ip6/::/tcp/33333" --node-ke # Get the PID of the server SERVER_PID=$! -echo "Running bandwidth test with litep2p. Server pid $SERVER_PID..." +echo "Running bandwidth test with litep2p (TCP). Server pid $SERVER_PID..." # Wait for the server to start listening on the address. sleep $SLEEP_TIME @@ -40,17 +47,17 @@ for bytes in $VALUES; do echo $result_line uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) - results_upload_litep2p_litep2p[$bytes]="$uploaded_bandwidth" + results_upload_litep2p_litep2p_tcp[$bytes]="$uploaded_bandwidth" downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) - results_download_litep2p_litep2p[$bytes]="$downloaded_bandwidth" + results_download_litep2p_litep2p_tcp[$bytes]="$downloaded_bandwidth" done # Kill the server kill $SERVER_PID # --------------------------------------------------------- -# Libp2p bandwidth test +# Libp2p (TCP) bandwidth test # --------------------------------------------------------- cd ../libp2p @@ -61,7 +68,7 @@ RUST_LOG=info cargo run -- server --listen-address "/ip6/::/tcp/33333" --node-ke # Get the PID of the server SERVER_PID=$! -echo "Running bandwidth test with libp2p. Server pid $SERVER_PID..." +echo "Running bandwidth test with libp2p (TCP). Server pid $SERVER_PID..." # Wait for the server to start listening on the address. sleep $SLEEP_TIME @@ -74,10 +81,10 @@ for bytes in $VALUES; do echo $result_line uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) - results_upload_libp2p_libp2p[$bytes]="$uploaded_bandwidth" + results_upload_libp2p_libp2p_tcp[$bytes]="$uploaded_bandwidth" downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) - results_download_libp2p_libp2p[$bytes]="$downloaded_bandwidth" + results_download_libp2p_libp2p_tcp[$bytes]="$downloaded_bandwidth" done # Kill the server @@ -85,7 +92,44 @@ kill $SERVER_PID # --------------------------------------------------------- -# Libp2p -> Litep2p +# Libp2p (WebRTC) bandwidth test +# --------------------------------------------------------- + +cd ../libp2p + +# Start the server +RUST_LOG=info cargo run -- server --transport-layer "webrtc" --listen-address "/ip4/127.0.0.1/udp/8888/webrtc-direct" --node-key "secret" > server.log 2>&1 & + +# Get the PID of the server +SERVER_PID=$! + +echo "Running bandwidth test with libp2p (WebRTC). Server pid $SERVER_PID..." + +# Wait for the server to start listening on the address. +sleep $((SLEEP_TIME * 5)) + +CERT_HASH=$(grep "/certhash/" server.log | cut -d '/' -f 8 | cut -d ' ' -f 1 | head -n 1) + +cd ../libp2p +for bytes in $VALUES; do + OUTPUT=$(RUST_LOG=info cargo run -- client --transport-layer "webrtc" --server-address "/ip4/127.0.0.1/udp/8888/webrtc-direct/certhash/${CERT_HASH}/p2p/12D3KooWBpZHDZu7YSbvPaPXKhkRNJvR7MkTJMQQAVBKx9mCqz3q" --upload-bytes $bytes --download-bytes $bytes | grep bandwidth) + + result_line=$(echo "$OUTPUT" | cut -d ' ' -f5-13) + echo $result_line + + uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) + results_upload_libp2p_libp2p_webrtc[$bytes]="$uploaded_bandwidth" + + downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) + results_download_libp2p_libp2p_webrtc[$bytes]="$downloaded_bandwidth" +done + +# Kill the server +kill $SERVER_PID +rm ../libp2p/server.log + +# --------------------------------------------------------- +# Libp2p -> Litep2p (TCP) # --------------------------------------------------------- cd ../litep2p @@ -95,7 +139,7 @@ RUST_LOG=info cargo run -- server --listen-address "/ip6/::/tcp/33333" --node-ke # Get the PID of the server SERVER_PID=$! -echo "Running bandwidth test libp2p -> litep2p. Server pid $SERVER_PID..." +echo "Running bandwidth test libp2p -> litep2p (TCP). Server pid $SERVER_PID..." # Wait for the server to start listening on the address. sleep $SLEEP_TIME @@ -107,10 +151,10 @@ for bytes in $VALUES; do echo $result_line uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) - results_upload_libp2p_litep2p[$bytes]="$uploaded_bandwidth" + results_upload_libp2p_litep2p_tcp[$bytes]="$uploaded_bandwidth" downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) - results_download_libp2p_litep2p[$bytes]="$downloaded_bandwidth" + results_download_libp2p_litep2p_tcp[$bytes]="$downloaded_bandwidth" done @@ -118,7 +162,63 @@ done kill $SERVER_PID # --------------------------------------------------------- -# Litep2p -> Libp2p +# Libp2p -> Litep2p (WebRTC) +# --------------------------------------------------------- + +cd ../litep2p +# Start the server +RUST_LOG=info cargo run -- server --transport-layer "webrtc" --listen-address "/ip4/127.0.0.1/udp/8888/webrtc-direct" --node-key "secret" > server.log 2>&1 & + +# Get the PID of the server +SERVER_PID=$! + +echo "Running bandwidth test libp2p -> litep2p (WebRTC). Server pid $SERVER_PID..." +# Wait for the server to start listening on the address. +sleep $((SLEEP_TIME * 5)) + +CERT_HASH=$(grep "/certhash/" server.log | cut -d '/' -f 8 | cut -d ' ' -f 1 | head -n 1) + +VALUES_ARRAY=($VALUES) + +cd ../libp2p +# Only do both up- and download up to 512kB because downloading from litep2p to libp2p is too damn slow. :( +for bytes in "${VALUES_ARRAY[@]:0:10}"; do + OUTPUT=$(RUST_LOG=info cargo run -- client --transport-layer "webrtc" --server-address "/ip4/127.0.0.1/udp/8888/webrtc-direct/certhash/${CERT_HASH}/p2p/12D3KooWBpZHDZu7YSbvPaPXKhkRNJvR7MkTJMQQAVBKx9mCqz3q" --upload-bytes $bytes --download-bytes $bytes | grep bandwidth) + + result_line=$(echo "$OUTPUT" | cut -d ' ' -f5-13) + echo $result_line + + uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) + results_upload_libp2p_litep2p_webrtc[$bytes]="$uploaded_bandwidth" + + downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) + results_download_libp2p_litep2p_webrtc[$bytes]="$downloaded_bandwidth" +done + +# Do upload from libp2p to litep2p up to 16MB because the connection breaks after that. +for bytes in "${VALUES_ARRAY[@]:10:5}"; do + OUTPUT=$(RUST_LOG=info cargo run -- client --transport-layer "webrtc" --server-address "/ip4/127.0.0.1/udp/8888/webrtc-direct/certhash/${CERT_HASH}/p2p/12D3KooWBpZHDZu7YSbvPaPXKhkRNJvR7MkTJMQQAVBKx9mCqz3q" --upload-bytes $bytes --download-bytes 1024 | grep bandwidth) + + result_line=$(echo "$OUTPUT" | cut -d ' ' -f5-13) + echo $result_line + + uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) + results_upload_libp2p_litep2p_webrtc[$bytes]="$uploaded_bandwidth" + + results_download_libp2p_litep2p_webrtc[$bytes]="n/a" +done + +for bytes in "${VALUES_ARRAY[@]:15}"; do + results_upload_libp2p_litep2p_webrtc[$bytes]="n/a" + results_download_libp2p_litep2p_webrtc[$bytes]="n/a" +done + +# Kill the server +kill $SERVER_PID +rm ../litep2p/server.log + +# --------------------------------------------------------- +# Litep2p -> Libp2p (TCP) # --------------------------------------------------------- cd ../libp2p @@ -128,7 +228,7 @@ RUST_LOG=info cargo run -- server --listen-address "/ip6/::/tcp/33333" --node-ke # Get the PID of the server SERVER_PID=$! -echo "Running bandwidth test libp2p -> litep2p. Server pid $SERVER_PID..." +echo "Running bandwidth test litep2p -> libp2p (TCP). Server pid $SERVER_PID..." # Wait for the server to start listening on the address. sleep $SLEEP_TIME @@ -140,30 +240,30 @@ for bytes in $VALUES; do echo $result_line uploaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | head -n 1) - results_upload_litep2p_libp2p[$bytes]="$uploaded_bandwidth" + results_upload_litep2p_libp2p_tcp[$bytes]="$uploaded_bandwidth" downloaded_bandwidth=$(echo "$result_line" | cut -d' ' -f8-9 | tail -n 1) - results_download_litep2p_libp2p[$bytes]="$downloaded_bandwidth" + results_download_litep2p_libp2p_tcp[$bytes]="$downloaded_bandwidth" done # Kill the server kill $SERVER_PID - # Markdown output echo echo "# Bandwidth Report" -echo "| Operation | Bytes | Litep2p->Litep2p | Libp2p->Libp2p | Libp2p->Litep2p | Litep2p->Libp2p |" -echo "|------------|------------|------------------|----------------|-----------------|-----------------|" +echo "| Operation | Bytes | Litep2p->Litep2p | Libp2p->Libp2p | Libp2p->Libp2p | Libp2p->Litep2p | Libp2p->Litep2p | Litep2p->Libp2p |" +echo "| | | (TCP) | (TCP) | (WebRTC) | (TCP) | (WebRTC) | (TCP) |" +echo "|------------|------------|------------------|----------------|----------------|-----------------|-----------------|-----------------|" for bytes in $VALUES; do fmt_bytes=$(numfmt --to=iec-i --suffix=B $bytes) - echo "| Uploaded | $fmt_bytes | ${results_upload_litep2p_litep2p[$bytes]} | ${results_upload_libp2p_libp2p[$bytes]} | ${results_upload_libp2p_litep2p[$bytes]} | ${results_upload_litep2p_libp2p[$bytes]} |" + echo "| Uploaded | $fmt_bytes | ${results_upload_litep2p_litep2p_tcp[$bytes]} | ${results_upload_libp2p_libp2p_tcp[$bytes]} | ${results_upload_libp2p_libp2p_webrtc[$bytes]} | ${results_upload_libp2p_litep2p_tcp[$bytes]} | ${results_upload_libp2p_litep2p_webrtc[$bytes]} | ${results_upload_litep2p_libp2p_tcp[$bytes]} |" done for bytes in $VALUES; do fmt_bytes=$(numfmt --to=iec-i --suffix=B $bytes) - echo "| Downloaded | $fmt_bytes | ${results_download_litep2p_litep2p[$bytes]} | ${results_download_libp2p_libp2p[$bytes]} | ${results_download_libp2p_litep2p[$bytes]} | ${results_download_litep2p_libp2p[$bytes]} |" + echo "| Downloaded | $fmt_bytes | ${results_download_litep2p_litep2p_tcp[$bytes]} | ${results_download_libp2p_libp2p_tcp[$bytes]} | ${results_download_libp2p_libp2p_webrtc[$bytes]} | ${results_download_libp2p_litep2p_tcp[$bytes]} | ${results_download_libp2p_litep2p_webrtc[$bytes]} | ${results_download_litep2p_libp2p_tcp[$bytes]} |" done