Hi!
I’m using OpenZiti to secure connections between devices across my home and cloud environments. One of the protected services is Frigate (for my video camera system).
Right now, this setup is in my home lab, where I’m testing and evaluate it for a new environment in the near future. The goal is to validate the architecture, stability, and tuning under real workloads so we can use it permanently both at home and in production.
Here’s the current layout (diagram attached):
- AWS
- Controller
- EdgeRouter (handles public internet traffic using #location:roaming)
- Home
- EdgeRouter (handles local traffic using #location:home)
- Devices: Linux Desktop (multi-service: SSH, Minecraft, Raspberry Pi), Linux Server (muti-service: Frigate, SSH), Laptop at home
- Remote Devices
- Phone
- Laptop (away from home)
- Devices
- Friend’s laptop
Everything works great, mostly. I can move traffic in all of the right directions, and things are connecting to routers.
However, right now I am testing Frigate from the office (Office Desktop → router-aws → router-home → Frigate), things start off fine, but once I start clicking around a bit, things stall out and break. They recover after a short while, but the hiccup is concerning. It is very repeatable.
I see a bunch of errors when this happens, and I am not sure if things are setup wrong.
The controller is logging errors like this:
Oct 22 14:24:58 ziti1 ziti[2891]: {"file":"github.com/openziti/ziti/controller/network/fault.go:32","func":"github.com/openziti/ziti/controller/network.(*Network).fault","level":"info","msg":"network fault processing for [4] circuits","time":"2025-10-22T14:24:58.109Z"}
Oct 22 14:24:58 ziti1 ziti[2891]: {"circuitId":"2Ea3n5Kf8urZXrzC9XhwZk","file":"github.com/openziti/ziti/controller/network/fault.go:49","func":"github.com/openziti/ziti/controller/network.(*Network).fault","level":"info","msg":"sent unroute for circuit to router in response to forwarding fault","routerId":"4lZ1.ZHAH.","time":"2025-10-22T14:24:58.109Z"}
Oct 22 14:24:58 ziti1 ziti[2891]: {"circuitId":"5et5DY0A53SLxQjkYih7ko","file":"github.com/openziti/ziti/controller/network/fault.go:49","func":"github.com/openziti/ziti/controller/network.(*Network).fault","level":"info","msg":"sent unroute for circuit to router in response to forwarding fault","routerId":"4lZ1.ZHAH.","time":"2025-10-22T14:24:58.110Z"}
Oct 22 14:24:58 ziti1 ziti[2891]: {"circuitId":"4OjU0f3BmABmMSxWFErRVv","file":"github.com/openziti/ziti/controller/network/fault.go:49","func":"github.com/openziti/ziti/controller/network.(*Network).fault","level":"info","msg":"sent unroute for circuit to router in response to forwarding fault","routerId":"4lZ1.ZHAH.","time":"2025-10-22T14:24:58.110Z"}
Oct 22 14:24:58 ziti1 ziti[2891]: {"circuitId":"1iFIV96F51ERKdK4oudCry","file":"github.com/openziti/ziti/controller/network/fault.go:49","func":"github.com/openziti/ziti/controller/network.(*Network).fault","level":"info","msg":"sent unroute for circuit to router in response to forwarding fault","routerId":"4lZ1.ZHAH.","time":"2025-10-22T14:24:58.110Z"}
and services hosted by the identity (the frigate service and another ssh service) become unresponsive.
I see errors like this in the router at home:
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"_context":"{c/1iFIV96F51ERKdK4oudCry|@/7BfglkaIFTqIarmgEL8iLA}\u003cTerminator\u003e","circuitId":"1iFIV96F51ERKdK4oudCry","error":"cannot forward payload, no forward table for circuit=1iFIV96F51ERKdK4oudCry src=7BfglkaIFTqIarmgEL8iLA","file":"github.com/openziti/ziti/router/handler_xgress/data_plane.go:58","func":"github.com/openziti/ziti/router/handler_xgress.(*dataPlaneAdapter).ForwardPayload","level":"error","msg":"unable to forward payload","origin":1,"seq":0,"time":"2025-10-22T14:24:56.420Z"}
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"_channels":["establishPath"],"apiSessionId":"cmh21o3nv0xsx8beyo4m4qkqq","attempt":1,"attemptNumber":"2","binding":"edge","circuitId":"1iFIV96F51ERKdK4oudCry","context":"ch{ctrl}-\u003eu{reconnecting}-\u003ei{NetFoundry Inc. Client XIh5pyCvC/Vd3m}","destination":"4X9Js9SONGyIzIzERfZnsM","error":"error creating route for [c/1iFIV96F51ERKdK4oudCry]: timeout waiting for message reply: context deadline exceeded","file":"github.com/openziti/ziti/router/handler_ctrl/route.go:140","func":"github.com/openziti/ziti/router/handler_ctrl.(*routeHandler).fail","level":"error","msg":"failure while handling route update","serviceId":"4eAH77XoP3xgbu0hOwFU4m","sessionId":"cmh22ntcd0z3c8bey7xihtsnk","time":"2025-10-22T14:24:56.420Z"}
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"circuitId":"1GVSFgr6Ce4MgWL8oGuOXx","ctrlId":"NetFoundry Inc. Client XIh5pyCvC","file":"github.com/openziti/ziti/router/forwarder/scanner.go:85","func":"github.com/openziti/ziti/router/forwarder.(*Scanner).scan","idleThreshold":60000000000,"idleTime":139886000000,"level":"warning","msg":"circuit exceeds idle threshold","time":"2025-10-22T14:24:56.924Z"}
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"circuitId":"Ej6BcQ3iZ3I4HcuPnYFSL","ctrlId":"NetFoundry Inc. Client XIh5pyCvC","file":"github.com/openziti/ziti/router/forwarder/scanner.go:85","func":"github.com/openziti/ziti/router/forwarder.(*Scanner).scan","idleThreshold":60000000000,"idleTime":137073000000,"level":"warning","msg":"circuit exceeds idle threshold","time":"2025-10-22T14:24:56.924Z"}
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"circuitId":"5uHE1PB7tj4bloN9gE0DYd","ctrlId":"NetFoundry Inc. Client XIh5pyCvC","file":"github.com/openziti/ziti/router/forwarder/scanner.go:85","func":"github.com/openziti/ziti/router/forwarder.(*Scanner).scan","idleThreshold":60000000000,"idleTime":131553000000,"level":"warning","msg":"circuit exceeds idle threshold","time":"2025-10-22T14:24:56.924Z"}
Oct 22 14:24:56 meerkat1 ziti[4013743]: {"circuitCount":3,"ctrlId":"NetFoundry Inc. Client XIh5pyCvC","file":"github.com/openziti/ziti/router/forwarder/scanner.go:100","func":"github.com/openziti/ziti/router/forwarder.(*Scanner).scan","level":"warning","msg":"sent confirmation for circuits","time":"2025-10-22T14:24:56.924Z"}
Oct 22 14:24:58 meerkat1 ziti[4013743]: {"circuitCount":4,"ctrlId":"NetFoundry Inc. Client XIh5pyCvC","file":"github.com/openziti/ziti/router/forwarder/faulter.go:107","func":"github.com/openziti/ziti/router/forwarder.(*Faulter).run","level":"warning","msg":"reported forwarding faults","time":"2025-10-22T14:24:58.087Z"}
Oct 22 14:24:58 meerkat1 ziti[4013743]: {"circuitId":"2Ea3n5Kf8urZXrzC9XhwZk","file":"github.com/openziti/ziti/router/forwarder/forwarder.go:155","func":"github.com/openziti/ziti/router/forwarder.(*Forwarder).Unroute","level":"info","msg":"circuit unrouted","time":"2025-10-22T14:24:58.126Z"}
Oct 22 14:24:58 meerkat1 ziti[4013743]: {"circuitId":"5et5DY0A53SLxQjkYih7ko","file":"github.com/openziti/ziti/router/forwarder/forwarder.go:155","func":"github.com/openziti/ziti/router/forwarder.(*Forwarder).Unroute","level":"info","msg":"circuit unrouted","time":"2025-10-22T14:24:58.126Z"}
Oct 22 14:24:58 meerkat1 ziti[4013743]: {"circuitId":"4OjU0f3BmABmMSxWFErRVv","file":"github.com/openziti/ziti/router/forwarder/forwarder.go:155","func":"github.com/openziti/ziti/router/forwarder.(*Forwarder).Unroute","level":"info","msg":"circuit unrouted","time":"2025-10-22T14:24:58.126Z"}
Oct 22 14:24:58 meerkat1 ziti[4013743]: {"circuitId":"1iFIV96F51ERKdK4oudCry","file":"github.com/openziti/ziti/router/forwarder/forwarder.go:155","func":"github.com/openziti/ziti/router/forwarder.(*Forwarder).Unroute","level":"info","msg":"circuit unrouted","time":"2025-10-22T14:24:58.126Z"}
and a few errors in the cloud router, but that one is not as noisy.
Oct 22 14:24:51 ziti1 ziti[6992]: {"_context":"ch{edge}-\u003eu{classic}-\u003ei{ziti-sdk-c[1]@officemini-m4/koVv}","chSeq":653,"connId":77,"edgeSeq":0,"error":"exceeded maximum [2] retries creating circuit [c/2Ea3n5Kf8urZXrzC9XhwZk] (error creating route for [s/2Ea3n5Kf8urZXrzC9XhwZk] on [r/4lZ1.ZHAH.] (error creating route for [c/2Ea3n5Kf8urZXrzC9XhwZk]: timeout waiting for message reply: context deadline exceeded))","file":"github.com/openziti/ziti/router/xgress_edge/listener.go:1146","func":"github.com/openziti/ziti/router/xgress_edge.(*nonXgConnectHandler).FinishConnect","level":"warning","msg":"failed to dial fabric","time":"2025-10-22T14:24:51.405Z","token":"ccc6c1df-fe77-4a37-ae58-6fbac63870aa","type":"EdgeConnectType"}
Oct 22 14:24:56 ziti1 ziti[6992]: {"circuitId":"1iFIV96F51ERKdK4oudCry","file":"github.com/openziti/ziti/router/forwarder/forwarder.go:155","func":"github.com/openziti/ziti/router/forwarder.(*Forwarder).Unroute","level":"info","msg":"circuit unrouted","time":"2025-10-22T14:24:56.440Z"}
Oct 22 14:24:56 ziti1 ziti[6992]: {"_context":"ch{edge}-\u003eu{classic}-\u003ei{ziti-sdk-c[1]@officemini-m4/koVv}","chSeq":692,"connId":78,"edgeSeq":0,"error":"exceeded maximum [2] retries creating circuit [c/1iFIV96F51ERKdK4oudCry] (error creating route for [s/1iFIV96F51ERKdK4oudCry] on [r/4lZ1.ZHAH.] (error creating route for [c/1iFIV96F51ERKdK4oudCry]: timeout waiting for message reply: context deadline exceeded))","file":"github.com/openziti/ziti/router/xgress_edge/listener.go:1146","func":"github.com/openziti/ziti/router/xgress_edge.(*nonXgConnectHandler).FinishConnect","level":"warning","msg":"failed to dial fabric","time":"2025-10-22T14:24:56.440Z","token":"ccc6c1df-fe77-4a37-ae58-6fbac63870aa","type":"EdgeConnectType"}
What I’m trying to figure out:
- Are these caused by circuit exhaustion or route churn between routers?Do I need to adjust timeouts, retries, or circuit lifetimes for multi-router setups?
- Is Frigate’s “bursty” behavior (multiple parallel connections) overloading circuit creation or route negotiation?
- Am I missing some kind of tuning parameters?
Edit: Services on the “Linux Server” identity where Frigate is running are what become unresponsive (like ssh; an existing ssh session will just lock up). Other services using the home router continue working fine.
Edit2: If I change the attributes for “Linux Server” to use the cloud router, the issue goes away. Something is going on when traffic is transiting between two routers. The video streams are larger payloads (mostly .m3u8/.ts video streams, so the .ts files are larger payloads)
I appreciate any help!
Thanks,
Kris
