Wireleap now uses built-in h/2 mechanisms instead of the previous implementation which encoded the initial payload (ie. next-hop and sharetoken) and the status messages on error or connection close in the request body.
This results in simplifying the code, simplifying the protocol, faster establishment and closing of connections, and improved performance. Traffic literally passes bytewise from client to target and back with no modification.
Please note, this is a backwards incompatible release.
Previously, when routing traffic through relays in the circuit, an h/2
connection was established, then communication would happen using the
wlnet
wire protocol in the “body” of the request. The initial payload
(ie. next-hop and sharetoken) was encoded and included in the body of
outgoing traffic. The incoming traffic from target back to client was
encoded in chunks, each with its own header which denoted the size of
the chunk and whether it was an “in-band” message (traffic to be relayed
back to the client) or “out-of-band” (error message to be processed by
wireleap itself).
This required the code to be aware of the status of the connection on
two levels, as even if the relay accepted the headers and replied with a
HTTP 200 OK
, there was still no guarantee that there would not be an
error immediately after (e.g., invalid sharetoken).
With this release, the outgoing initial payload is included in the standard h/2 request header, and the returning traffic distinction is made using the standard h/2 trailer mechanism which allows for headers to be sent on connection close (hence they are called trailers here, functionally they are identical to headers).
BEFORE: headers -> payload "bump" of a defined size -> streamed data
AFTER: headers -> streamed data
As a bonus, this makes traffic look more like regular h/2 as there is no characteristic signature of sending the payload after the initial h/2 request anymore (previous side by side traffic comparison).
The directory supplied update_channels
has been replaced with a more
future proof upgrade_channels
data structure.
- "update_channels": {
- "default": "0.4.0",
- "client": "0.4.0"
- },
+ "upgrade_channels": {
+ "relay": { "default": "0.5.0" },
+ "client": { "default": "0.5.0" }
+ },
Existing directory deployments may support both structures to allow for already deployed clients and relays to seamlessly upgrade with their relative upgrade mechanisms (client, relay).
Note: The wireleap-relay
0.5.0 includes a migration for updating the
relay’s upgrade channel configuration if set.
common (0.2.2)
relayentry
, dirinfo
: added upgrade_channel
support (deprecated update_channels
).wlnet
: moved init payload to H/2 headers and status messages to H/2
trailers.wlnet
: removed obsolete wire protocol code.ststore
: fixed initial filepath.Walk
not adding sharetokens to the
store.clientcontract
v0.1.0clientdir
v0.2.0 (new version)clientrelay
v0.2.0 (new version)contractps
v0.1.0psauth
v0.1.0relaycontract
v0.1.0relaydir
v0.2.0 (new version)relayrelay
v0.2.0 (new version)wireleap (0.5.0)
wireleap/common
v0.2.2.upgrade_channels
instead of now deprecated update_channels
.clientdir
v0.2.0 (new version)clientcontract
v0.1.0clientrelay
v0.2.0 (new version)wireleap-relay (0.5.0)
wireleap/common
v0.2.2.upgrade_channels
support and related migration code.update_channels
, no longer used for relay upgrades.clientrelay
v0.2.0 (new version)relaycontract
v0.1.0relayrelay
v0.2.0 (new version)relaydir
v0.2.0 (new version)wireleap-dir (0.5.0)
wireleap/common
v0.2.2.upgrade_channels
support, deprecated update_channels
.update_channels
in config.json
will trigger a
deprecation message on startup.clientdir
v0.2.0 (new version)relaydir
v0.2.0 (new version)Version
0.5.0
Next Article
MacOS TUN device and Zsh completion supportPrevious Article
Wireleap API consumer-provider semantic versioningNo results found
client
=dataflow
'circuit
!docs
^installation
paper$
White space acts as an AND operator, while a single pipe
(|
) character acts as an OR operator. To escape
white space, use double quotes such as ="wireleap
client"
for an exact match.