diff options
author | Jakob Borg <jakob@kastelo.net> | 2023-09-06 12:52:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-06 12:52:01 +0200 |
commit | c6334e61aa56575db6b274d45d55f7ada4dcd0fe (patch) | |
tree | 1267b2b1e67c09d80843b45b88049892dbedef7f /proto | |
parent | 38bbdebffa74df9e5937749a3780d39b24adc331 (diff) | |
download | syncthing-c6334e61aa56575db6b274d45d55f7ada4dcd0fe.tar.gz syncthing-c6334e61aa56575db6b274d45d55f7ada4dcd0fe.zip |
all: Support multiple device connections (fixes #141) (#8918)
This adds the ability to have multiple concurrent connections to a single device. This is primarily useful when the network has multiple physical links for aggregated bandwidth. A single connection will never see a higher rate than a single link can give, but multiple connections are load-balanced over multiple links.
It is also incidentally useful for older multi-core CPUs, where bandwidth could be limited by the TLS performance of a single CPU core -- using multiple connections achieves concurrency in the required crypto calculations...
Co-authored-by: Simon Frei <freisim93@gmail.com>
Co-authored-by: tomasz1986 <twilczynski@naver.com>
Co-authored-by: bt90 <btom1990@googlemail.com>
Diffstat (limited to 'proto')
-rw-r--r-- | proto/lib/config/deviceconfiguration.proto | 3 | ||||
-rw-r--r-- | proto/lib/protocol/bep.proto | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/proto/lib/config/deviceconfiguration.proto b/proto/lib/config/deviceconfiguration.proto index 616329b76..46afeed80 100644 --- a/proto/lib/config/deviceconfiguration.proto +++ b/proto/lib/config/deviceconfiguration.proto @@ -10,7 +10,7 @@ import "ext.proto"; message DeviceConfiguration { bytes device_id = 1 [(ext.goname) = "DeviceID", (ext.xml) = "id,attr", (ext.json) = "deviceID", (ext.device_id) = true, (ext.nodefault) = true]; string name = 2 [(ext.xml) = "name,attr,omitempty"]; - repeated string addresses = 3 [(ext.xml) = "address,omitempty", (ext.default) = "dynamic"]; + repeated string addresses = 3 [(ext.xml) = "address,omitempty"]; protocol.Compression compression = 4 [(ext.xml) = "compression,attr"]; string cert_name = 5 [(ext.xml) = "certName,attr,omitempty"]; bool introducer = 6 [(ext.xml) = "introducer,attr"]; @@ -26,4 +26,5 @@ message DeviceConfiguration { int32 max_request_kib = 16 [(ext.goname) = "MaxRequestKiB", (ext.xml) = "maxRequestKiB", (ext.json) = "maxRequestKiB"]; bool untrusted = 17; int32 remote_gui_port = 18 [(ext.goname) = "RemoteGUIPort", (ext.xml) = "remoteGUIPort", (ext.json) = "remoteGUIPort"]; + int32 num_connections = 19 [(ext.goname) = "RawNumConnections"]; // attempt to establish this many connections to the device } diff --git a/proto/lib/protocol/bep.proto b/proto/lib/protocol/bep.proto index 7e76464a2..ad7f5d0b8 100644 --- a/proto/lib/protocol/bep.proto +++ b/proto/lib/protocol/bep.proto @@ -8,9 +8,11 @@ import "repos/protobuf/gogoproto/gogo.proto"; // --- Pre-auth --- message Hello { - string device_name = 1; - string client_name = 2; - string client_version = 3; + string device_name = 1; + string client_name = 2; + string client_version = 3; + int32 num_connections = 4; + int64 timestamp = 5; } // --- Header --- @@ -41,7 +43,8 @@ enum MessageCompression { // Cluster Config message ClusterConfig { - repeated Folder folders = 1; + repeated Folder folders = 1; + bool secondary = 2; } message Folder { |