Skip to content

Releases: openziti/ziti

v0.32.1

31 Jan 20:47
v0.32.1
1cfa0b1
Compare
Choose a tag to compare
v0.32.1 Pre-release
Pre-release

Do not use, the release contains a deadlock which can be triggered if many SDK terminators are being created at a time.

Release 0.32.1

What's New

  • Bugfixes
  • New router setting to control startup timeout

Router startup timeout

The router now has a configuration setting to control how long it wait on startup to be able to
connect to a controller, before it gives up and exits.

ctrl:
  endpoints: 
    - tls:localhost:1280
  startupTimeout: 5m 

Component Updates and Bug Fixes

v0.32.0

19 Jan 23:45
v0.32.0
97e9244
Compare
Choose a tag to compare
v0.32.0 Pre-release
Pre-release

NOTE: This release has bugs related to link management and is not recommended for production use!

Release 0.32.0

What's New

  • Auth Rate Limiter
  • Link Management Fixes
  • ziti edge quickstart command deprecates redundant --already-initialized flag. The identical behavior is implied by --home.

Backwards compatibility

This release includes new response types from the REST authentication APIS. They are now able to return
429 (server too busy) responses to auth requests. As this is an API change, the version number is
being bumped to 0.32.

If controller and router are both v0.32 or later, only the router which dialed a link will report it to the controller.
If the controller is older, newer routers will report links from both the dialing and listening side of the link.

Auth Rate Limiter

In order to prevent clients from overwhelming the server with auth requests, an auth rate limiter has been introduced.
The rate limiter is adaptive, in that it will react to auth attempts timing out by shrinking the number of allowed
queued auth attempts. The number will slowly recover over time.

Example configuration:

edge:
  # This section allows configurating the rate limiter for auth attempts
  authRateLimiter:
    # if disabled, no auth rate limiting with be enforced
    enabled: true
    # the smallest window size for auth attempts
    minSize: 5
    # the largest allowed window size for auth attempts
    maxSize: 250

New metrics:

  • auth.limiter.queued_count - current number of queued auth attempts
  • auth.limiter.window_size - current size at which new auth attempts will be rejected
  • auth.limiter.work_timer - tracks the rate at which api sessions are being created and how long it's taking to create them

Link Management Fixes

With long lived link ids, there was potential for link control message to be ambiguous, as the link id wasn't enough to identify
a specific iteration of that link. An iteration field has been added to links so that messaging is unambiguous.
Links will also only be reported from the dialing router now to reduce ambiguouity and race condition in link control channel
messaging.

Router SSL Handshake Timeout Config

There is a new router config setting which allows setting the SSL handshake timeout for TLS connections, when using ALPN for listeners.

tls:
  handshakeTimeout: 15s

Component Updates and Bug Fixes

v0.31.4

18 Dec 16:30
v0.31.4
1c21434
Compare
Choose a tag to compare

Release 0.31.4

What's New

  • Bug fix for a data flow stall which is especially likely to happen on circuits with single router paths

Thanks

  • @marvkis - for providing high quality debug data which made tracking down a couple of flow control stall issues much easier

Component Updates and Bug Fixes

v0.31.3

13 Dec 19:45
v0.31.3
2ece53e
Compare
Choose a tag to compare
v0.31.3 Pre-release
Pre-release

DO NOT USE THIS RELEASE

This release contains a posture check optimization to speed up service list queries. Unfortunately it also broke posture query support for networks with no posture checks.

The 0.31.4 release reverts the optimization. We'll revisit the optimization in a future release.

Release 0.31.3

What's New

  • Services Max Idle Time
  • Add/Remove Peer and Transfer Leadership via REST

Service Max Idle Time

A max idle time can now be configured on services. The default value of 0 indicates that no maximum will
be enforced. A circuit is considered idle when no traffic is flowing across through the initiating or
terminating router.

ziti edge create service test-service --max-idle-time 5m

Note that the idle time calculation is done on the router, so if max idle time on a service is less
than the configured scan interval on the router, it make take longer than expected for idle circuits
to be removed.

Raft Cluster Management via REST

The controller now allows some Raft cluster management operations to be performed via REST.

NOTE: If your cluster is not bootstrapped yet, the REST API won't be available. These will only work on a bootstrapped cluster!

The following operations are now supported:

  • Add member
  • Remove member
  • Transfer leadership
ziti fabric raft add-member tls:localhost:6363
ziti fabric raft add-member tls:localhost:6464
ziti fabric raft transfer-leadership 
ziti fabric raft transfer-leadership ctrl3
ziti fabric raft remove-member ctrl2
ziti fabric raft remove-member ctrl3

Component Updates and Bug Fixes

v0.31.2

07 Dec 19:59
v0.31.2
7095b90
Compare
Choose a tag to compare

Release 0.31.2

What's New

  • Go version updated from 1.20 to 1.21

v0.31.1

07 Dec 18:11
v0.31.1
9ea976c
Compare
Choose a tag to compare

Release 0.31.1

What's New

  • SDK Hosting Improvements
  • Terminator validation utility
  • Circuit/Link query support

SDK Hosting Improvments

In previous versions of OpenZiti, if many SDK clients were attempting to establish hosting, the controller could get overwhelmed.
In this release, routers will use the rate limiter pool introduced in 0.27.6 when creating terminators on behalf of sdk clients
hosting applications. Additionally, routers now have the ability to verify terminator state with the sdk, if the sdk supports it.
In general, hosting large numbers of services using the sdk should now be less suceptible to thundering herd issues.

Manual Terminator Validation

There is a new CLI command available to validate terminator state. This is primarily a developer tool to validate that terminator
setup logic is correct. However it may also be used to diagnose and resolve issues with production systems, should the need arise.

ziti fabric validate terminators

Circuit/Link Query Support

Previously listing circuit and links always showed the full list. This is because these types are in memory only and are not stored
in the bbolt datastore. There's now basic support for querying in-memory types and circuits and links can now be filtered/paged/sorted
the same as other entity types.

Component Updates and Bug Fixes

v0.31.0

01 Nov 18:03
v0.31.0
5237e2b
Compare
Choose a tag to compare

Release 0.31.0

What's New

  • Rate limited for model changes

Rate Limiter for Model Changes

To prevent the controller from being overwhelmed by a flood of changes, a rate limiter
can be enabled in the configuration file. A maximum number of queued changes can also
be configured. The rate limited is disabled by default for now. If not specified the
default number of queued changes is 100.

When the rate limit is hit, an error will be returned. If the request came in from
the REST API, the response will use HTTP status code 429 (too many requests).

The OpenAPI specs have been updated, so if you're using a generated client to make
REST calls, it's recommened that you regenerate your client.

commandRateLimiter:
    enabled:   true
    maxQueued: 100

If the rate limiter is enabled, the following metrics will be produced:

  • command.limiter.queued_count - guage of the current number of queued operations
  • command.limiter.work_timer - timer for operations. Includes the following:
    • A histogram of how long operations take to complete
    • A meter showing that rate at which operations are executed
    • A count of how many operations have been executed

Component Updates and Bug Fixes

v0.30.5

13 Oct 20:31
v0.30.5
4f324bd
Compare
Choose a tag to compare

Release 0.30.5

What's New

  • Initial proxy support in host.v1/host.v2

Proxy Support in host.v1/host.v2

host.v1 and host.v2 configurations may now specify a proxy to use.
Currently only HTTP Connect proxies which don't require authentication are supported.

Example using host.v1

{
"address": "192.168.2.50",
"port": 1234,
"protocol": "tcp",
"proxy": {
"address": "192.168.1.110:3128",
"type": "http"
}
}

Component Updates and Bug Fixes

v0.30.4

30 Sep 19:18
v0.30.4
b9bf4d9
Compare
Choose a tag to compare

Release 0.30.4

What's New

  • ziti edge quickstart
  • Edge SDK terminator improvements
  • host.v1 and host.v2 connectTimeout/connectTimeoutSeconds
  • edge/fabric merge

ziti edge quickstart

  • ziti edge quickstart](#1298). You can now download
    the ziti CLI and have a functioning network with just one command. The network it creates is
    ephemeral and is intended to be torn down when the process exits. It is intended for quick
    evaluation and testing of an overlay network. It supports the following flags:

        --already-initialized     Specifies the PKI does not need to be created and the db does not need to be initialized. Recommended to be combined with --home. If --home is not specified the environment will be destroyed on shutdown! default: false
        --ctrl-address string     Sets the advertised address for the control plane and API
        --ctrl-port int16         Sets the port to use for the control plane and API
    -h, --help                    help for quickstart
        --home string             Sets the directory the environment should be installed into. Defaults to a temporary directory. If specified, the environment will not be removed on exit.
    -p, --password string         Password to use for authenticating to the Ziti Edge Controller. default: admin
        --router-address string   Sets the advertised address for the integrated router
        --router-port int16       Sets the port to use for the integrated router
    -u, --username string         Username to use when creating the Ziti Edge Controller. default: admin
    

    Example Usage:

    ziti edge quickstart \
      --ctrl-address potato \
      --ctrl-port 12345 \
      --router-address avacado \
      --router-port 23456 \
      --home $HOME/.ziti/pet-ziti \
      --already-initialized \
      --username someOtherUsername \
      --password someOtherPassword
    

Edge SDK Terminator Improvements

There was a race condition in edge sdk terminator handling, where if sdk noticed a broken connection
before the router did, it would reconnect and rebind while the router still though it had the old
connection and old binding. Because we were using the session token to key terminator state in the
router, the new terminator information would overwrite the old terminator information in the router.
However, in the controller, the information wouldn't get overridden, since we use a UUID to key
things in the controller. When the router noticed the old connection was gone it would try to clean
things up, but since the state had been overwritten, it couldn't and the controller would be left
with an orphaned terminator.

The router now uses a UUID as well so there shouldn't be any more orphaned terminators.

host.v1/host.v2 change

The host.v2 config type was mostly a collection of host.v1 instances. However, there was a one small
difference. The host.v1 type had connectTimeoutSeconds in listenOptions, where host.v2
had connectTimeout, defined as a duration.

To bring them into alignment, both attributes are now supported in both config types.
However, connectTimeout will take precedence if both are present. connectTimeout is not yet
supported by all tunnelers. The following still need to be updated:

  • ziti-edge-tunnel
  • Desktop Edge for Windows
  • Desktop Edge for Mac
  • Mobile Edge for Android
  • Mobile Edge for IOS

Once it is supported, we will deprecate connectTimeoutSeconds with a lengthy deprecation period.
At the end of the deprecation period we will migrate any remaining connectTimeoutSeconds values
to connectTimeout.

Edge and Fabric Merges

The code from the fabric and edge repositories has been merged into the ziti repository. Once issues have been migrated, those two projects will be archived.

Component Updates and Bug Fixes

v0.30.3

01 Sep 21:13
v0.30.3
c7a0a41
Compare
Choose a tag to compare

Release 0.30.3

What's New

  • Bugfixes

Component Updates and Bug Fixes