@mark1russell7/machines 0.3.23 → 0.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,7 +25,7 @@ The algebra reads these documents. It gives the closed form of each timer, the f
25
25
 
26
26
  | Export | Identifier | System and version | Layer | Sources, by rung |
27
27
  | --- | --- | --- | --- | --- |
28
- | `LINUX_TCP` | `linux-tcp` | TCP of Linux 6.6, for kernels from 6.6 to 6.9 | kernel | 4 normative, 7 implemented |
28
+ | `LINUX_TCP` | `linux-tcp` | TCP of Linux 6.6, for kernels from 6.6 to 6.9 | kernel | 4 normative, 8 implemented |
29
29
  | `NF_CONNTRACK_TCP` | `nf-conntrack-tcp` | The TCP state machine of conntrack on Linux 6.6.87.2 | middlebox | 4 implemented |
30
30
  | `REDIS_CLIENT` | `redis-client` | One client connection of the Redis 8.10.2 server | server | 3 implemented, 1 documented |
31
31
  | `IOREDIS_STATUS` | `ioredis-status` | The connection status of ioredis 6.0.0, standalone | driver | 5 implemented |
@@ -62,8 +62,13 @@ The algebra reads these documents. It gives the closed form of each timer, the f
62
62
  | `CADDY_HTTP2` | `caddy-http2` | Caddy 2.11.7 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, its replies and its stop | proxy | 12 implemented |
63
63
  | `NGINX_GRPC` | `nginx-grpc` | nginx 1.29.6 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, the read timer of a call, and a stopped worker | proxy | 12 implemented, 1 documented |
64
64
  | `TRAEFIK_HTTP2` | `traefik-http2` | Traefik 3.7.15 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, a reload of its dynamic file and its stop | proxy | 10 implemented, 1 observed |
65
+ | `ISTIO_SIDECAR_OUTBOUND` | `istio-sidecar-outbound` | The client sidecar of Istio 1.31.3: Envoy 1.39.4 between the app and the mesh, its retries, an update of LDS and the SIGKILL | proxy | 31 implemented |
66
+ | `ISTIO_SIDECAR_INBOUND` | `istio-sidecar-inbound` | The server sidecar of Istio 1.31.3: Envoy 1.39.4 between the mesh and the app, the policy, an update of LDS and the SIGKILL | proxy | 31 implemented |
67
+ | `PILOT_AGENT` | `pilot-agent` | pilot-agent of Istio 1.31.3: the drain and the SIGKILL of the Envoy of a sidecar at the stop of its pod | proxy | 12 implemented |
65
68
 
66
- Thirty documents operate on Linux TCP (`over`). Seven documents operate on no other document: Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra and the `RetryAgent` of undici. The `RetryAgent` is one request above the sockets of a `Client`. Its timer is the delay of a retry. Each retry can go on a new socket. The `conditions` of each document give the range where it holds, for example a range of kernels.
69
+ Thirty-two documents operate on Linux TCP (`over`). Eight documents operate on no other document. They are Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra, the `RetryAgent` of undici and pilot-agent.
70
+
71
+ The `RetryAgent` is one request above the sockets of a `Client`. Its timer is the delay of a retry. Each retry can go on a new socket. The `conditions` of each document give the range where it holds, for example a range of kernels.
67
72
 
68
73
  The package also gives these parts:
69
74
 
@@ -109,6 +114,21 @@ A change to the version of a system changes its sources too. Each fact of the do
109
114
 
110
115
  In this repository, a snapshot of the predictions of the cells (`packages/cells/src/__snapshots__/predictions.json`) shows each prediction that a change to a document moves.
111
116
 
117
+ ### 0.3.25
118
+
119
+ - **The sidecar of Istio 1.31.3 for T15.** Three new documents, each from the source at its tag. `istioSidecar(side)` builds the two sidecars from `envoy-http2`, because the proxy of Istio 1.31.3 has the code of Envoy 1.39.4.
120
+ - Both sides: the route and the stream have no timeout, and the connect timeout is 10 s. An update of LDS drains the changed filter chain. The next response of the chain sends the GOAWAY notice. At the stop, pilot-agent stops Envoy with SIGKILL, thus Envoy sends no GOAWAY then.
121
+ - `istio-sidecar-outbound`: Envoy retries a failed connect, a refused stream, and UNAVAILABLE or CANCELLED 2 times, each on another host. The reset of an open connection and PERMISSION_DENIED get no retry.
122
+ - `istio-sidecar-inbound`: the inbound route of a port of gRPC has no retry policy. A refused connect to the app gives UNAVAILABLE. A DENY policy gives the local reply 403, thus PERMISSION_DENIED.
123
+ - `pilot-agent`: the preStop hook of a native sidecar drains the inbound listeners at the deletion. SIGTERM comes after the app exited, and pilot-agent then stops Envoy with SIGKILL at once.
124
+ - No cell reads these documents yet, thus they move no prediction of the snapshot.
125
+
126
+ ### 0.3.24
127
+
128
+ - **The SYN timer of Linux TCP** (`syn_retransmit`). It is a backoff timer: each firing sends the SYN again. The waits 0 to `tcp_syn_linear_timeouts` are 1 s, and then each wait doubles up to `TCP_RTO_MAX`. The source is `tcp_retransmit_timer` in `net/ipv4/tcp_timer.c` of 6.6, and 6.17 has the same waits. At HZ 1000 a wait of 1 s is up to 64 ms late. The models are `linux.syn-wait` and `linux.syn-wait-lateness` of the algebra 0.7.3.
129
+ - `recovery` over this timer gives the first SYN after a stall. Kind run 40123580623 measured it: a SYN to a pod that was gone stalled until IPVS dropped the pod.
130
+ - One prediction of the snapshot moves, the kind cell T07.defaults.12.
131
+
112
132
  ### 0.3.18
113
133
 
114
134
  - **Caddy 2.11.7 as a proxy of gRPC** (`caddy-http2`), from the source at its tag and of golang.org/x/net v0.59.0. With no stream open for 5 min, Caddy sends GOAWAY NO_ERROR, and it closes the connection 1 s later. A PING of the client does not reset that timer. A failure of the upstream before the headers of a response gives 502, thus UNAVAILABLE. Caddy retries no call at the defaults, and at SIGTERM it waits for each stream.
package/build/index.d.ts CHANGED
@@ -425,6 +425,33 @@ export declare const CADDY_HTTP2: Machine;
425
425
  */
426
426
  export declare const ENVOY_HTTP2: Machine;
427
427
  //#endregion
428
+ //#region src/proxy/istio.d.ts
429
+ /** A side of a sidecar is the listener of the connection: outbound from the app, or inbound to the app. */
430
+ type SidecarSide = "outbound" | "inbound";
431
+ /**
432
+ * This function gives a document of a sidecar of Istio 1.31.3 for one side, from ENVOY_HTTP2. The
433
+ * Envoy of the sidecar is the code of that document. Istio changes its configuration and its stop:
434
+ * - The route and the stream have no timeout, and the connect timeout of a cluster is 10 s.
435
+ * - The outbound side retries a failed connect, a refused stream, and UNAVAILABLE or CANCELLED: 2 times, each on another host.
436
+ * - The inbound side retries nothing, because the port of the lab is of gRPC.
437
+ * - An update of LDS drains the changed filter chain. Its next response sends the GOAWAY notice.
438
+ * - pilot-agent stops Envoy with SIGKILL at the stop of the pod. Envoy sends no GOAWAY then.
439
+ */
440
+ export declare const istioSidecar: (side: SidecarSide) => Machine;
441
+ /** This document is the client sidecar of Istio 1.31.3 (`istioSidecar("outbound")`). */
442
+ export declare const ISTIO_SIDECAR_OUTBOUND: Machine;
443
+ /** This document is the server sidecar of Istio 1.31.3 (`istioSidecar("inbound")`). */
444
+ export declare const ISTIO_SIDECAR_INBOUND: Machine;
445
+ /**
446
+ * This document is pilot-agent of Istio 1.31.3: the lifecycle of the Envoy of a sidecar at the stop
447
+ * of its pod. With a native sidecar, the preStop hook drains the inbound listeners at the deletion.
448
+ * The kubelet sends SIGTERM after each container of the app exited. Then pilot-agent stops Envoy with
449
+ * SIGKILL at once, because the drain is done. Without a native sidecar, SIGTERM starts the drain, and
450
+ * the SIGKILL comes terminationDrainDuration later (5 s). With EXIT_ON_ZERO_ACTIVE_CONNECTIONS, it waits the
451
+ * minimum drain, then polls the active connections each 1 s.
452
+ */
453
+ export declare const PILOT_AGENT: Machine;
454
+ //#endregion
428
455
  //#region src/proxy/nginx.d.ts
429
456
  /**
430
457
  * This document is nginx 1.29.6 as an HTTP/2 proxy of gRPC, for one connection of a client. Its
@@ -619,4 +646,5 @@ export declare const undiciFastLateness: (ms: string) => Expr;
619
646
  */
620
647
  export declare const MACHINES: Readonly<Record<string, Machine>>;
621
648
  //#endregion
649
+ export type { SidecarSide };
622
650
  //# sourceMappingURL=index.d.ts.map