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
* 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]>
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.
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.
14
17
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
16
19
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.
18
21
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
20
23
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.
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).
0 commit comments