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^installationpaper$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.