Skip to content

Commit 6f5e69d

Browse files
authored
add: architecture and workflow (#12)
* update: move comparison.md Signed-off-by: Gaukas Wang <[email protected]> * add: WATER ring architecture and workflow Signed-off-by: Gaukas Wang <[email protected]> --------- Signed-off-by: Gaukas Wang <[email protected]>
1 parent f5f5ba5 commit 6f5e69d

File tree

8 files changed

+45
-7
lines changed

8 files changed

+45
-7
lines changed

_config.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,10 @@ callouts:
6060
color: purple
6161
warning:
6262
title: Warning
63-
color: red
63+
color: red
64+
65+
defaults:
66+
- scope:
67+
path: "assets/img"
68+
values:
69+
image: true

architecture.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
layout: page
3+
title: Architecture
4+
permalink: /architecture.html
5+
nav_order: 2
6+
---
7+
8+
# Architecture
9+
10+
<p align="center">
11+
<img src="/assets/img/ring.png" alt="WATER Ring" width="512"/>
12+
</p>
13+
14+
As mentioned, WATER provides a familiar network programming interface for every supported programming language, and use WebAssembly as the underlying technology to build and execute transport protocols. The architecture of WATER could be illustrated as a ring. The inner-most ring (violet) stands for the WebAssembly* Transport Module (WATM), a WebAssembly binary module which defines the transport protocol. The middle ring (blue) stands for the WATER Runtime, which consists of a set of internal APIs interfacing the WATM, and external APIs providing the said network programming interface. The outer-most ring (grey) stands for the integrating application, which could be written in any programming language with a WATER Runtime library available.
15+
16+
*That's why it is violet.

assets/img/flows.png

180 KB
Loading

assets/img/ring.png

26.1 KB
Loading

comparison.md renamed to comparisons.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
layout: page
33
title: Comparisons
44
permalink: /comparisons.html
5+
nav_order: 1
56
---
67

78
# Comparisons

index.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
44

55
layout: home
6+
title: WATER
7+
nav_order: 0
68
---
79

810
-- **WATER** -- <br> **W**eb**A**ssembly **T**ransport **E**xecutables **R**untime
@@ -11,11 +13,24 @@ layout: home
1113
{: .text-grey-dk-300}
1214
{: .text-center}
1315

16+
WATER is all about a new way to **build**, **deploy**, and **execute** new and updated pluggable transports. With WebAssembly, transport protocols could be written in any language that compiles to WebAssembly, distributed via multiple channels, and run in a secure, sandboxed environment in a tool written in a different programming language on a wide range of platforms.
1417

15-
This site hosts the online documentation for Project WATER: [refraction-networking/water](https://github.com/refraction-networking/water) and [refraction-networking/water-rs](https://github.com/refraction-networking/water-rs).
18+
## Pluggable Transports and Censorship Circumvention
1619

17-
## WATER
20+
Pluggable Transports provides a flexible and modular way for censorship circumvention tools to integrate new transport protocols and/or update existing ones. Multiple popular circumvention tools, such as Tor, Psiphon, and Lantern, have adopted the pluggable transport design. However, the flexibility of pluggable transports is still limited. For example, the host application and the transport protocol must be written in the same programming language, and the transport protocol must be compiled into the host application, which makes deploying new transport protocols and updating existing ones not so efficient.
1821

19-
WATER stands for WebAssembly Transport Executables Runtime, a novel approach to building pluggable network transports using WebAssembly. Comparing to other designs, WATER in general provides better flexibility and security, more consistent development and deployment experience, and better performance.
22+
### A more pluggable transport
2023

21-
A matrix comparing WATER with other pluggable transport designs is available [here](comparisons.html#water-vs-other-pluggable-transport-designs).
24+
WATER provides much more flexibility compared to existing pluggable transport designs. A matrix comparing WATER with other pluggable transport design approaches is available [here](comparisons.html#water-vs-other-pluggable-transport-designs).
25+
26+
## How does WATER work?
27+
28+
The ultimate goal of WATER is to provide familiar network programming interfaces in multiple different programming languages which are backed by the WebAssembly-based pluggable transport modules.
29+
30+
<p align="center">
31+
<img src="/assets/img/flows.png" alt="WATER Workflow" width="512"/>
32+
</p>
33+
34+
With a WebAssembly Transport Module (WATM), WATER can be configured for either client-side or server-side applications as it provides both dialer and listener implementations. It is worth noting that a WATM may be written in a way to support either client-side or server-side applications, or both. Please consult the provider of the WATM for more information.
35+
36+
The architecture of WATER, especially how WATER is built, is available [here](architecture.html).

runtime/runtime.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
layout: default
33
title: Runtime Library
4-
nav_order: 1
4+
nav_order: 3
55
has_children: true
66
permalink: /runtime.html
77
---

transport-module/transport-module.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
layout: default
33
title: WebAssembly Transport Module
4-
nav_order: 2
4+
nav_order: 4
55
has_children: true
66
permalink: /transport-module.html
77
---

0 commit comments

Comments
 (0)