Skip to content

Commit f844ab9

Browse files
committed
Initial commit
Signed-off-by: Dawid Nowak <[email protected]>
1 parent 2746675 commit f844ab9

File tree

8 files changed

+39
-24
lines changed

8 files changed

+39
-24
lines changed

AUTHORS.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
### Current
2+
|Name| Affiliation| Contact |
3+
|--------|------|---|
4+
|Alan Keane| Huawei Ireland Research Lab|[email protected]|
5+
|Dawid Nowak| Huawei Ireland Research Lab|[email protected]|
6+
|Francesco Ciaccia| Huawei Ireland Research Lab|[email protected]|
7+
|Nicola Bonelli | Huawei Ireland Research Lab|[email protected]|
8+
|Wang Ruize | Huawei| [email protected]|
9+
10+
11+
### Past
12+
|Name| Affiliation|
13+
|--------|------|
14+
|Liu Xiang | Huawei|
15+
|Rui Ferreira | Huawei Ireland Research Lab|
16+
|Oriol Arcas | Huawei Ireland Research Lab|
17+
|Hayley Deckers | Huawei Ireland Research Lab|

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66

77
## Introduction
88

9-
Orion Proxy is a high performance and memeory 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.
1010

1111
### Key features
1212

1313
**Memory Safety**
1414

15-
Rust programming language allows to avoid a whole lot of bugs related to memory memory management and data racess making Orion Proxy a very robust and secure application.
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.
1616

1717

1818
**Performance**
1919

20-
Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer to [Performance](docs/performance/performance.md) to see performance figures and how tested Orion Proxy for more details.
20+
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 .
2121

2222

2323
**Compatibility**
@@ -30,17 +30,17 @@ Orion Proxy configuration is generated from Envoy's xDS protobuf definitions. Or
3030

3131
### Building
3232
```console
33-
git clone https://github.com/kmesh-net/orion-proxy
34-
cd orion-proxy
33+
git clone https://github.com/kmesh-net/orion
34+
cd orion
3535
git submodule init
36-
git update --force
36+
git submodule update --force
3737
cargo build
3838
```
3939

4040

4141
### Running
4242
```console
43-
cargo run --bin orion -- --config orion-proxy/conf/orion-runtime.yaml
43+
cargo run --bin orion -- --config orion/conf/orion-runtime.yaml
4444
```
4545

4646
<!-- ## Contributing -->

RELEASE-NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
55
>[!CAUTION]
66
This project is still very unstable and not ready for use in production environments.
7+

docker/Dockerfile

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ COPY rustfmt.toml ./
2323
COPY Cargo.toml ./
2424
COPY Cargo.lock ./
2525

26-
RUN <<EOF
27-
apt update
28-
apt install -y protobuf-compiler
29-
EOF
3026

3127
RUN cargo build --release
3228

@@ -37,13 +33,11 @@ FROM debian:bookworm-slim
3733
RUN <<EOF
3834
apt update
3935
apt upgrade -y
40-
apt install -y ca-certificates libssl-dev libssl3
36+
apt install -y ca-certificates libssl3
4137
EOF
4238

4339
COPY ./docker/start_proxy.sh ./start_proxy.sh
4440

4541
COPY --from=orion-builder /tmp/orion/target/release/orion /orion
46-
# ENV RUST_BACKTRACE=full
47-
# ENV RUST_LOG=info,rusoto_core=info,swir=debug,rusoto_dynamodb=info
4842
EXPOSE 8080 8000 50051
49-
ENTRYPOINT ["/start_proxy.sh"]
43+
ENTRYPOINT ["/start_proxy.sh"]

docs/demos.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ docker run --rm -p 4004:80 ealen/echo-server
1919

2020
3. Make some calls with Curl
2121

22-
Return pre-canned response
22+
23+
Return pre-canned response
2324

2425
```shell
2526
curl -i http://127.0.0.1:8000/direct-response
2627
```
2728

28-
Route to an endpoint configured in cluster 1. If there are no endpoints available it will return 502
29+
30+
Route to an endpoint configured in cluster 1. If there are no endpoints available it will return 502
31+
2932

3033
```shell
3134
curl -i http://127.0.0.1:8000/blah

docs/kmesh-subproject.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
## Background
2-
KMesh is using the Waypoint proxy to handle Level 7 traffic. The Waypoint Proxy is a fork of Istio Proxy, which is a fork of Envoy. While Envoy is a mature application widely used in Kubernetes deployments, we now have a unique opportunity to replace an Istio proxy with something faster, safer and more modern.
2+
KMesh is using the Waypoint proxy to handle Level 7 traffic. The Waypoint Proxy is a fork of Istio Proxy, which is a fork of Envoy. While Envoy is a mature application widely used in Kubernetes deployments, we now have a unique opportunity to replace the Istio proxy with something faster, safer and more modern.
33

44
## Orion Proxy
5-
Orion Proxy is a proxy application developed at Huawei Ireland Research Lab. We built the Orion Proxy using the Rust programming language to achieve good performance, scalability, memory safety and portability. We wanted to ensure that the Orion proxy fits into the existing Kubernetes ecosystem. We made a pragmatic decision that the Orion Proxy should support the Envoy xDS protocol. This would enable the administrators or operators to dynamically configure the Orion Proxy in the same way as Envoy/Istio proxies are.
5+
Orion Proxy is a proxy application developed at Huawei Ireland Research Lab. We built Orion Proxy using the Rust programming language to achieve good performance, scalability, memory safety and portability. We wanted to ensure that the Orion proxy fits into the existing Kubernetes ecosystem. We made a pragmatic decision that the Orion Proxy should support the Envoy xDS protocol. This would enable the administrators or operators to dynamically configure the Orion Proxy in the same way as Envoy/Istio proxies are.
66

77
## Architecture
8-
The architecture of the Orion Proxy is based on high-quality components and libraries provided by the Rust ecosystem. The Orion Proxy implementation is underpinned by the Tokio runtime. Tokio enables asynchronous processing of requests resulting in achieving very high throughput and good scalability. Tokio also provides us with well-defined building blocks to build a solution with a well-defined, manageable and extendable architecture.
8+
The architecture of the Orion Proxy is based on high-quality components and libraries provided by the Rust ecosystem. The Orion Proxy implementation is underpinned by the Tokio runtime. Tokio enables asynchronous processing of requests resulting in achieving very high throughput and good scalability. Tokio also provides us with well-defined building blocks to build a solution with a well-defined, manageable and extendable architecture.
99
We decided to use the Hyper library to handle Http1/Http2 traffic. The Hyper library combined with Rustls allowed us to handle modern TLS traffic through a secure and FIPS-compliant solution.
1010

1111
## Performance
1212
Before release, we rigorously tested Orion's performance in comparison to Envoy Proxy. The [results](./performance/performance.md) show that the Orion Proxy outperforms the Envoy Proxy in terms of throughput and request latency.
1313

1414
## Features and Future Roadmap
15-
Most of our efforts up to date, have been focused on ensuring that the Orion Proxy can reliably proxy Level 4 and Level 7 traffic. In future, we plan to shift our objectives and implement more features that will make Orion Proxy more robust, reliable and straightforward to operate in production environments. In the short term, we want to provide features such as access logging, metrics with open telemetry, and support for HAProxy and Websockets protocols.
15+
Most of our efforts to date, have been focused on ensuring that the Orion Proxy can reliably proxy Level 4 and Level 7 traffic. In future, we plan to shift our objectives and implement more features that will make Orion Proxy more robust, reliable and straightforward to operate in production environments. In the short term, we want to provide features such as access logging, metrics with open telemetry, and support for HAProxy and Websockets protocols.
1616

1717
## Current and Past Contributors
1818

docs/performance/performance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
- In-memory direct response of 12B size
3939
- 17 cores assigned to the application on NUMA1
4040
- 7 cores assigned to IRQ handling on NUMA1
41-
- 2.6M RPS à hard-limit of the server
41+
- 2.6M RPS a hard-limit of the server
4242
- Measures #connections established upstream
4343

4444
* DUT (Proxy):

orion-configuration/src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ impl Config {
5757
let runtime = self.runtime.update_from_env_and_options(opt);
5858
let max_cpus = num_cpus::get();
5959
if runtime.num_cpus() > max_cpus {
60-
tracing::warn!(max_cpus, NG_GATEWAY_CORES = runtime.num_cpus(), "Requested more cores than available CPUs");
60+
tracing::warn!(max_cpus, ORION_GATEWAY_CORES = runtime.num_cpus(), "Requested more cores than available CPUs");
6161
}
6262
if runtime.num_runtimes() > runtime.num_cpus() {
6363
tracing::warn!(
6464
runtime.num_cpus,
65-
NG_GATEWAY_RUNTIMES = runtime.num_runtimes(),
65+
ORION_GATEWAY_RUNTIMES = runtime.num_runtimes(),
6666
"Requested more runtimes than cores"
6767
);
6868
}

0 commit comments

Comments
 (0)