mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
update raet intro
This commit is contained in:
parent
3101b7524e
commit
910991a468
@ -6,8 +6,10 @@ The RAET Transport
|
||||
|
||||
The RAET transport is in very early development, it is functional but no
|
||||
promises are yet made as to its reliability or security.
|
||||
|
||||
This document is also not yet complete
|
||||
As for reliability and security, the encryption used has been audited and
|
||||
our tests show that raet is reliable. With this said we are still conducting
|
||||
more security audits and pushing the reliability.
|
||||
This document outlines the encryption used in RAET
|
||||
|
||||
.. versionadded:: 2014.7.0
|
||||
|
||||
@ -23,57 +25,12 @@ processes on multiple machines. Messages can also be restricted, allowing
|
||||
processes to be sent messages of specific types from specific sources
|
||||
allowing for trust to be established.
|
||||
|
||||
Why?
|
||||
====
|
||||
|
||||
Customer and User Request
|
||||
-------------------------
|
||||
|
||||
Why make an alternative transport for Salt? There are many reasons, but the
|
||||
primary motivation came from customer requests, many large companies came with
|
||||
requests to run Salt over an alternative transport, the reasoning was varied,
|
||||
from performance and scaling improvements to licensing concerns. These
|
||||
customers have partnered with SaltStack to make RAET a reality.
|
||||
|
||||
RAET Reliability
|
||||
================
|
||||
|
||||
RAET is reliable, hence the name (Reliable Asynchronous Event Transport).
|
||||
|
||||
The concern posed by some over RAET reliability is based on the fact that
|
||||
RAET used UDP instead of TCP and UDP does not have built in reliability.
|
||||
|
||||
RAET itself implements the needed reliability layers that are not natively
|
||||
present in UDP, this allows RAET to dynamically optimize packet delivery
|
||||
in a way that keeps it both reliable and asynchronous.
|
||||
|
||||
RAET and ZeroMQ
|
||||
===============
|
||||
|
||||
When using RAET, ZeroMQ is not required. RAET is a complete networking
|
||||
replacement. It is noteworthy that RAET is not a ZeroMQ replacement in a
|
||||
general sense, the ZeroMQ constructs are not reproduced in RAET, but they are
|
||||
instead implemented in such a way that is specific to Salt's needs.
|
||||
|
||||
RAET is primarily an async communication layer over truly async connections,
|
||||
defaulting to UDP. ZeroMQ is over TCP and abstracts async constructs within the
|
||||
socket layer.
|
||||
|
||||
Salt is not dropping ZeroMQ support and has no immediate plans to do so.
|
||||
|
||||
Encryption
|
||||
==========
|
||||
|
||||
RAET uses Dan Bernstein's NACL encryption libraries and CurveCP handshake.
|
||||
The libnacl python binding binds to both libsodium and tweetnacl to execute
|
||||
the underlying cryptography.
|
||||
|
||||
Using RAET in Salt
|
||||
==================
|
||||
|
||||
Using RAET in Salt is easy, the main difference is that the core dependencies
|
||||
change, instead of needing pycrypto, M2Crypto, ZeroMQ and PYZMQ, the packages
|
||||
libsodium, libnacl and ioflo are required. Encryption is handled very cleanly
|
||||
libsodium, libnacl, ioflo and raet are required. Encryption is handled very cleanly
|
||||
by libnacl, while the queueing and flow control is handled by
|
||||
ioflo. Distribution packages are forthcoming, but libsodium can be easily
|
||||
installed from source, or many distributions do ship packages for it.
|
||||
@ -104,3 +61,77 @@ Now start salt as it would normally be started, the minion will connect to the
|
||||
master and share long term keys, which can then in turn be managed via
|
||||
salt-key. Remote execution and salt states will function in the same way as
|
||||
with Salt over ZeroMQ.
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
The 2014.7 release of RAET is not complete! The Syndic and Multi Master have
|
||||
not been completed yet and these are slated for completetion in the Lithium
|
||||
release.
|
||||
|
||||
Also, Salt-Raet allows for more control over the client but these hooks have
|
||||
not been implimented yet, thereforre the client still uses the same system
|
||||
as the ZeroMQ client. This means that the extra reliability that RAET exposes
|
||||
has not yet been implimented in the CLI client.
|
||||
|
||||
Why?
|
||||
====
|
||||
|
||||
Customer and User Request
|
||||
-------------------------
|
||||
|
||||
Why make an alternative transport for Salt? There are many reasons, but the
|
||||
primary motivation came from customer requests, many large companies came with
|
||||
requests to run Salt over an alternative transport, the reasoning was varied,
|
||||
from performance and scaling improvements to licensing concerns. These
|
||||
customers have partnered with SaltStack to make RAET a reality.
|
||||
|
||||
More Capabilities
|
||||
-----------------
|
||||
|
||||
RAET has been designed to allow salt to have greater communication
|
||||
capabilities. It has been designed to allow for development into features
|
||||
which out ZeroMQ topologies can't match.
|
||||
|
||||
Many of the proposed features are still under development and will be
|
||||
announced as they enter proff of concept phases, but these features include
|
||||
`salt-fuse` - a filesystem over salt, `salt-vt` - a paralell api driven shell
|
||||
over the salt transport and many others.
|
||||
|
||||
RAET Reliability
|
||||
================
|
||||
|
||||
RAET is reliable, hence the name (Reliable Asynchronous Event Transport).
|
||||
|
||||
The concern posed by some over RAET reliability is based on the fact that
|
||||
RAET uses UDP instead of TCP and UDP does not have built in reliability.
|
||||
|
||||
RAET itself implements the needed reliability layers that are not natively
|
||||
present in UDP, this allows RAET to dynamically optimize packet delivery
|
||||
in a way that keeps it both reliable and asynchronous.
|
||||
|
||||
RAET and ZeroMQ
|
||||
===============
|
||||
|
||||
When using RAET, ZeroMQ is not required. RAET is a complete networking
|
||||
replacement. It is noteworthy that RAET is not a ZeroMQ replacement in a
|
||||
general sense, the ZeroMQ constructs are not reproduced in RAET, but they are
|
||||
instead implemented in such a way that is specific to Salt's needs.
|
||||
|
||||
RAET is primarily an async communication layer over truly async connections,
|
||||
defaulting to UDP. ZeroMQ is over TCP and abstracts async constructs within the
|
||||
socket layer.
|
||||
|
||||
Salt is not dropping ZeroMQ support and has no immediate plans to do so.
|
||||
|
||||
Encryption
|
||||
==========
|
||||
|
||||
RAET uses Dan Bernstein's NACL encryption libraries and CurveCP handshake.
|
||||
The libnacl python binding binds to both libsodium and tweetnacl to execute
|
||||
the underlying cryptography. This allows us to completely rely on an
|
||||
externally developed cryptography system.
|
||||
|
||||
For more information on libsodium and CurveCP please see:
|
||||
http://doc.libsodium.org/
|
||||
http://curvecp.org/
|
||||
|
Loading…
Reference in New Issue
Block a user