Skip to content

v1.1.0

Compare
Choose a tag to compare
@m-ronnblom m-ronnblom released this 01 Apr 12:26
· 18 commits to master since this release

Release v1.1.0 adds support for Pathfinder protocol version 3, in addition to the existing version 2 support.

Pathfinder protocol version 3 moves the keepalive/heartbeat functionality from the transport protocol (e.g., TCP) into the Pathfinder application-layer protocol itself. See the v3 protocol specification for details.

The Pathfinder protocol has been extended with a new two-way transaction type, which allows for client-initiate "inform" messages, which are the equivalent of the notify message, but for the client to use.

When protocol version 3 is in used, pafd uses a notion of a per-connection maximum idle time. When nothing has been heard from a client for about ~50% of the max idle time, the server will send a track query to the client. If the client fails to respond for the remaining half of the max idle time, the connection will be considered down, and the server will close it.

The default max idle time is 30 s, which may be override by setting the max_idle_time key in the configuration file. See the pafd manual page for details.

The server takes time-to-live (TTL) of client-owned services into account when computing the effective max idle time for a connection. Hence, it becomes important to configure an appropriate TTL. Low TTLs will cause a fair amount of keepalive signaling. The amount of network traffic is always lower in protocol v3 compared to protocol v2, but the cost of processing a single heartbeat is much higher in v3 than in v2.

The minimum maximum idle time ever used is 4 seconds. This results in a "dead peer detection" latency roughly equivalent to that of the legacy (v2) TCP keepalive-based approach.

The server will also issue a track query in case a client hello request is encountered (and rejected), where an already-in-use client id is provided. This allows the server to more quickly detect stale connections.

paf.client and pafc are extended with support for protocol version 3. Both may still be made to operate in protocol v2 mode. The paf.client API remains largely unchanged, with the exception of the new "track" command and the extended "clients" command.

pafbench is updated with protocol v3 support.

The Pathfinder data model remains the same and protocol v2 and protocol v3 clients may be connected to the same server and domain.