A ZeroMQ-based networking library implementing the Switched Virtual Circuit pattern
C C++ Makefile Perl Shell Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Jozabad is a broker and client library of a custom hub-and-spoke communication protocol. Workers connect to a broker and send messages to the broker. The broker joins pairs of workers together in channels and forwards messages between connected workers.

Jozabad is thus, basically, like a telephone exchange. It is inspired by the ITU's X.25 protocol.

The basic goals of the protocol are these:

The broker ensures that

  • messages are valid
  • data rates are obeyed

A worker can

  • connect / disconnect to the broker at will
  • get a list of other available workers from the broker.
  • request a channel with any other idle worker

The channel

  • is exclusive -- a worker can have only one channel at a time
  • is persistent -- it exists as long as the workers want
  • is stateful
  • is pseudonymous -- the workers only know one-anothers' pseudonym, and not their IP address

The future goals of the protocol are these:

  • The protocol will use future ZeroMQ security protocols to authenticate workers and encrypt traffic.

The name "Jozabad" refers to a talented archer that fought with the biblical King David. The image the archer is a metaphor for hub-to-node information transmission.

Jozabad is the lowest level of a three layer application stack.

  • Jozabad handles low-level communication.
  • Johanan is a packet assembler and disassembler, expressing a stream-like interface (fprintf, fgetc) for intra-worker communcation based on Jozabad messaging.
  • Jahaziel is a text protocol with in-band escapes for colors, graphics, and audio, and a rendering engine for that protocol.


The documentation, such as it is https://github.com/spk121/jozabad/blob/master/doc/jozabad.pdf?raw=true


  • Jozabad is inspired by the ITU's X.25 protocol: specifically its message types and state machine. It is not a true implementation of X.25 over TCP, which is known as XOT.
  • It uses ZeroMQ sockets to do all the heavy lifting.