Python ZOCP implementation (Z25 Orchestration Control Protocol)
ZOCP: Trying to control multiple computers in live performances is a challenging task. Often
computers intercommunicate using fixed or manual parameters. However when projects expand across
many devices this is hard to maintain. Especially in situations where the parameters tend to
change. ZOCP is a new protocol which facilitates flexibility and autonomous setups in an
orchestrated environment.
The ZOCP protocol is designed with the following in mind:
- KISS (Keep it simple and stupid): We want this protocol not be in our way and we want to be able to understand it easily.
- Zero Configuration: The protocol should be able to handle most, if not all configuration by itself. There is no need for setting up specific parameters unless requested, aka convention over configuration.
- Runs on anything TCP/IP: Since TCP/IP is the de facto standard for devices to communicate the technology should be able to run on any device that is able to talk TCP/IP
- Open Standards: All used technologies, software, protocols should be freely and openly available.
- Low latency, when needed
- Reliability, when needed
- Unintrusive debugging and monitoring
Either clone the repo or use pip:
clone:
sudo apt-get install python3-zmq
git clone https://github.com/zeromq/pyre.git
git clone https://github.com/z25/pyZOCP.git
cd pyZOCP/examples
PYTHONPATH=“../..:../src” python3 simple_node.py
pip: (On some system use pip3 instead of pip for Python3 as we only support python3 currently)
pip install pyzmq
pip install https://github.com/zeromq/pyre/archive/master.zip
pip install https://github.com/z25/pyZOCP/archive/master.zip
Install Python3 from Python.org
After Python3 installation open a terminal and execute the following:
sudo pip3 install pyzmq
sudo pip3 install https://github.com/zeromq/pyre/archive/master.zip
sudo pip3 install https://github.com/z25/pyZOCP/archive/master.zip
Install Python3.4 or newer, make sure it sets your PATH etc. Also make sure you get Pip
After Python3 installation open a DOS window and execute the following:
pip install pyzmq
pip install https://github.com/zeromq/pyre/archive/master.zip
pip install https://github.com/z25/pyZOCP/archive/master.zip
There is none. As we are mostly focused on performance and security is always a performance killer. Of course encryption can be implemented on a message level or transport level very easily. However designing with all security in mind makes a protocol like ZOCP absurdly complicated.
Yes you can. Another node can even do that!
No, ZOCP uses the ZRE protocol which discovers and interconnects nodes without any outside help.
Discovery on WAN networks is still a topic of research. You can traverse layer 3 networks by using multicast. This implies the network supports multicast. There is also gossip support in ZRE but we don’t use that yet in ZOCP.
You should understand that ZOCP is a protocol. A protocol is just a defined set of agreements. We have a reference prototype written in Python because prototyping in Python is great. Prototyping in C is not. So once we deem the protocol stable enough we will write a C implementation. This is also very easy from Python. So “No” there is not yet a C implementation of ZOCP but there will be as soon as we can. The ZRE protocol does have a C version already called Zyre!
We are working on it. The protocol is still very much in beta. One of our goals is to make ZOCP as easy as possible mentally. Asynchronous computing is already very challenging for the brain. Therefore changes to the protocol will probably have a big impact on the documentation. We don’t want to confuse you already.