You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Orion Proxy is a high performance and memory safe implementation of popular [Envoy Proxy](https://www.envoyproxy.io/). Orion Proxy is implemented in Rust using high-quality open source components.
9
+
Orion Proxy is a high performance and memory safe implementation of popular [Envoy Proxy](https://www.envoyproxy.io/). Orion Proxy is implemented in Rust using high-quality open source components.
11
10
12
-
### Key features
11
+
### Key Features
13
12
14
13
**Memory Safety**
15
14
16
-
Rust programming language allows to avoid a whole lot of bugs related to memory management and data races making Orion Proxy a very robust and secure application.
17
-
15
+
Rust programming language allows to avoid a whole lot of bugs related to memory management and data races making Orion Proxy a very robust and secure application.
18
16
19
17
**Performance**
20
18
21
-
Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer to [Performance](docs/performance/performance.md) to see performance figures and for more details how we tested Orion Proxy .
22
-
19
+
Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer to [Performance](docs/performance/performance.md) to see performance figures and for more details how we tested Orion Proxy.
<td width="50%"><img src="docs/pics/performance/baseline/wrk-reqsec.png" alt="HTTP Requests per Second"/><br/><p align="center"><b>Requests per Second</b></p></td>
<td width="50%"><img src="docs/pics/performance/tls/wrk-reqsec.png" alt="HTTPS Requests per Second"/><br/><p align="center"><b>Requests per Second</b></p></td>
Orion Proxy configuration is generated from Envoy's xDS protobuf definitions. Orion Proxy aims to be a drop in replacement for Envoy.
27
41
42
+
## Architecture
28
43
44
+
Orion Proxy is designed as a high-performance L7 proxy compatible with Envoy's xDS API while delivering superior performance through Rust's zero-cost abstractions and memory safety guarantees.
29
45
30
-
## Quick Start
31
-
32
-
**Note:** To control how many CPU cores/threads Orion uses (especially in containers), set the `ORION_CPU_LIMIT` environment variable. In Kubernetes, use the Downward API:
-**Admin Interface**: HTTP API for runtime configuration inspection, metrics, and health checks
44
59
45
-
Orion can be configured to use a specific number of CPU cores/threads by setting the `ORION_CPU_LIMIT` environment variable. This is especially useful in containerized environments where access to `/sys/fs` may be restricted.
60
+
### Key Design Principles
46
61
47
-
### Kubernetes Example (Downward API)
48
-
49
-
Add the following to your container spec to set `ORION_CPU_LIMIT` to the container's CPU limit:
50
-
51
-
```yaml
52
-
env:
53
-
- name: ORION_CPU_LIMIT
54
-
valueFrom:
55
-
resourceFieldRef:
56
-
resource: limits.cpu
57
-
divisor: "1"
58
-
```
59
-
60
-
Orion will automatically use this value to determine the number of threads/cores.
62
+
-**Zero-Copy I/O**: Minimizes memory allocations and copies through Rust's ownership system and `Bytes` buffers
63
+
-**Async Runtime**: Built on Tokio for efficient handling of thousands of concurrent connections
64
+
-**Memory Safety**: Eliminates entire classes of bugs (use-after-free, data races) through Rust's type system
65
+
-**Envoy Compatibility**: Direct protobuf compatibility with Envoy xDS APIs for seamless integration with Istio and other control planes
61
66
67
+
## Quick Start
62
68
63
69
### Building
70
+
64
71
```console
65
72
git clone https://github.com/kmesh-net/orion
66
73
cd orion
@@ -70,6 +77,7 @@ cargo build
70
77
```
71
78
72
79
### Running
80
+
73
81
```console
74
82
cargo run --bin orion -- --config orion/conf/orion-runtime.yaml
curl -v http://localhost:8000/direct-response # Should return HTTP 200 with "meow! 🐱"
90
98
```
91
99
92
-
### Testing with Backend Servers
100
+
For detailed Docker configuration options, see [docker/README.md](docker/README.md).
101
+
102
+
## CPU/Thread Limit Configuration
103
+
104
+
Orion can be configured to use a specific number of CPU cores/threads by setting the `ORION_CPU_LIMIT` environment variable. This is especially useful in containerized environments where access to `/sys/fs` may be restricted.
105
+
106
+
### Kubernetes Example (Downward API)
107
+
108
+
Add the following to your container spec to set `ORION_CPU_LIMIT` to the container's CPU limit:
109
+
110
+
```yaml
111
+
env:
112
+
- name: ORION_CPU_LIMIT
113
+
valueFrom:
114
+
resourceFieldRef:
115
+
resource: limits.cpu
116
+
divisor: "1"
117
+
```
118
+
119
+
Orion will automatically use this value to determine the number of threads/cores.
120
+
121
+
## Testing with Backend Servers
93
122
94
123
For testing load balancing with real backend servers:
For detailed Docker configuration options, see [docker/README.md](docker/README.md).
112
-
113
140
## Examples and Demos
114
141
115
142
### TLV Listener Filter Demo
@@ -131,16 +158,13 @@ This demo will:
131
158
- Show debug logs confirming successful TLV processing
132
159
- Verify compatibility with Kmesh TLV configuration format
133
160
134
-
135
161
For detailed information, see [examples/tlv-filter-demo/README.md](examples/tlv-filter-demo/README.md).
136
162
137
163
<!-- ## Contributing -->
138
164
<!-- If you're interested in being a contributor and want to get involved in developing Orion Proxy, please see [CONTRIBUTING](CONTRIBUTING.md) for more details on submitting patches and the contribution workflow. -->
139
165
140
166
## License
141
167
142
-
Orion Proxy is licensed under the
143
-
[Apache License, Version 2.0](./LICENSE).
144
-
168
+
Orion Proxy is licensed under the [Apache License, Version 2.0](./LICENSE).
0 commit comments